diff --git a/app.py b/app.py new file mode 100644 index 0000000000000000000000000000000000000000..3a5acd3c3522a2db8672af8dd640facaa903e719 --- /dev/null +++ b/app.py @@ -0,0 +1,19 @@ +from flask import Flask, render_template + + +app = Flask( + __name__, + static_folder="static", + template_folder="templates", +) + + + +@app.route("/") +def index(): + return render_template("index.html") + + + +if __name__ == "__main__": + app.run() diff --git a/neural_network/activation.py b/neural_network/activation.py index bd63f2a4543a1684eb91661f41c8edcd8a82bcfc..bc3c6306aaedbf1fa58efe67442e64f36220ce40 100644 --- a/neural_network/activation.py +++ b/neural_network/activation.py @@ -4,7 +4,7 @@ relu = lambda x: np.maximum(x, 0) relu_prime = lambda x: np.where(x > 0, 1, 0) tanh = lambda x: np.tanh(x) -tanh_prime = lambda x: 1 - tanh(x) ** 2 +tanh_prime = lambda x: 1 - np.tanh(x) ** 2 sigmoid = lambda x: 1.0 / (1.0 + np.exp(-x)) sigmoid_prime = lambda x: sigmoid(x) / 1.0 - sigmoid(x) diff --git a/node_modules/.bin/cssesc b/node_modules/.bin/cssesc new file mode 120000 index 0000000000000000000000000000000000000000..487b68908f1f6d6b3e815d4a5c25bfd57463ce1f --- /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/jiti b/node_modules/.bin/jiti new file mode 120000 index 0000000000000000000000000000000000000000..031ee3fdeab8d725097b91c0ead7dd2549237531 --- /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/nanoid b/node_modules/.bin/nanoid new file mode 120000 index 0000000000000000000000000000000000000000..e2be547bcb206b59b72832a11187f6236a5a48ce --- /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/resolve b/node_modules/.bin/resolve new file mode 120000 index 0000000000000000000000000000000000000000..b6afda6c753f1fb771d1ae4bb413ee11c4cd0037 --- /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/sucrase b/node_modules/.bin/sucrase new file mode 120000 index 0000000000000000000000000000000000000000..0ac7e775b0848f2d59a845393b7ccf54b5afde74 --- /dev/null +++ b/node_modules/.bin/sucrase @@ -0,0 +1 @@ +../sucrase/bin/sucrase \ No newline at end of file diff --git a/node_modules/.bin/sucrase-node b/node_modules/.bin/sucrase-node new file mode 120000 index 0000000000000000000000000000000000000000..8b96fae25de9d993b1bbc8b2e4abaf9c09d78cd7 --- /dev/null +++ b/node_modules/.bin/sucrase-node @@ -0,0 +1 @@ +../sucrase/bin/sucrase-node \ No newline at end of file diff --git a/node_modules/.bin/tailwind b/node_modules/.bin/tailwind new file mode 120000 index 0000000000000000000000000000000000000000..d49779753ca94520aacb751f399e4536fca767ae --- /dev/null +++ b/node_modules/.bin/tailwind @@ -0,0 +1 @@ +../tailwindcss/lib/cli.js \ No newline at end of file diff --git a/node_modules/.bin/tailwindcss b/node_modules/.bin/tailwindcss new file mode 120000 index 0000000000000000000000000000000000000000..d49779753ca94520aacb751f399e4536fca767ae --- /dev/null +++ b/node_modules/.bin/tailwindcss @@ -0,0 +1 @@ +../tailwindcss/lib/cli.js \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..53f7f88113ae0f71fddba04c3b2b532e0a5bd6b6 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,909 @@ +{ + "name": "data-mining-study", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", + "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", + "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sucrase": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", + "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.1.tgz", + "integrity": "sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==", + "dependencies": { + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.17.2", + "lilconfig": "^2.0.6", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.0.9", + "postcss-import": "^14.1.0", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "6.0.0", + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.1", + "sucrase": "^3.29.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + } + } +} diff --git a/node_modules/@jridgewell/gen-mapping/LICENSE b/node_modules/@jridgewell/gen-mapping/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..352f0715f391f038c82308374dc93650fd0b2dc7 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/LICENSE @@ -0,0 +1,19 @@ +Copyright 2022 Justin Ridgewell + +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/@jridgewell/gen-mapping/README.md b/node_modules/@jridgewell/gen-mapping/README.md new file mode 100644 index 0000000000000000000000000000000000000000..4066cdbbd93c673b55eff12aff8c31b68a56f714 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/README.md @@ -0,0 +1,227 @@ +# @jridgewell/gen-mapping + +> Generate source maps + +`gen-mapping` allows you to generate a source map during transpilation or minification. +With a source map, you're able to trace the original location in the source file, either in Chrome's +DevTools or using a library like [`@jridgewell/trace-mapping`][trace-mapping]. + +You may already be familiar with the [`source-map`][source-map] package's `SourceMapGenerator`. This +provides the same `addMapping` and `setSourceContent` API. + +## Installation + +```sh +npm install @jridgewell/gen-mapping +``` + +## Usage + +```typescript +import { GenMapping, addMapping, setSourceContent, toEncodedMap, toDecodedMap } from '@jridgewell/gen-mapping'; + +const map = new GenMapping({ + file: 'output.js', + sourceRoot: 'https://example.com/', +}); + +setSourceContent(map, 'input.js', `function foo() {}`); + +addMapping(map, { + // Lines start at line 1, columns at column 0. + generated: { line: 1, column: 0 }, + source: 'input.js', + original: { line: 1, column: 0 }, +}); + +addMapping(map, { + generated: { line: 1, column: 9 }, + source: 'input.js', + original: { line: 1, column: 9 }, + name: 'foo', +}); + +assert.deepEqual(toDecodedMap(map), { + version: 3, + file: 'output.js', + names: ['foo'], + sourceRoot: 'https://example.com/', + sources: ['input.js'], + sourcesContent: ['function foo() {}'], + mappings: [ + [ [0, 0, 0, 0], [9, 0, 0, 9, 0] ] + ], +}); + +assert.deepEqual(toEncodedMap(map), { + version: 3, + file: 'output.js', + names: ['foo'], + sourceRoot: 'https://example.com/', + sources: ['input.js'], + sourcesContent: ['function foo() {}'], + mappings: 'AAAA,SAASA', +}); +``` + +### Smaller Sourcemaps + +Not everything needs to be added to a sourcemap, and needless markings can cause signficantly +larger file sizes. `gen-mapping` exposes `maybeAddSegment`/`maybeAddMapping` APIs that will +intelligently determine if this marking adds useful information. If not, the marking will be +skipped. + +```typescript +import { maybeAddMapping } from '@jridgewell/gen-mapping'; + +const map = new GenMapping(); + +// Adding a sourceless marking at the beginning of a line isn't useful. +maybeAddMapping(map, { + generated: { line: 1, column: 0 }, +}); + +// Adding a new source marking is useful. +maybeAddMapping(map, { + generated: { line: 1, column: 0 }, + source: 'input.js', + original: { line: 1, column: 0 }, +}); + +// But adding another marking pointing to the exact same original location isn't, even if the +// generated column changed. +maybeAddMapping(map, { + generated: { line: 1, column: 9 }, + source: 'input.js', + original: { line: 1, column: 0 }, +}); + +assert.deepEqual(toEncodedMap(map), { + version: 3, + names: [], + sources: ['input.js'], + sourcesContent: [null], + mappings: 'AAAA', +}); +``` + +## Benchmarks + +``` +node v18.0.0 + +amp.js.map +Memory Usage: +gen-mapping: addSegment 5852872 bytes +gen-mapping: addMapping 7716042 bytes +source-map-js 6143250 bytes +source-map-0.6.1 6124102 bytes +source-map-0.8.0 6121173 bytes +Smallest memory usage is gen-mapping: addSegment + +Adding speed: +gen-mapping: addSegment x 441 ops/sec ±2.07% (90 runs sampled) +gen-mapping: addMapping x 350 ops/sec ±2.40% (86 runs sampled) +source-map-js: addMapping x 169 ops/sec ±2.42% (80 runs sampled) +source-map-0.6.1: addMapping x 167 ops/sec ±2.56% (80 runs sampled) +source-map-0.8.0: addMapping x 168 ops/sec ±2.52% (80 runs sampled) +Fastest is gen-mapping: addSegment + +Generate speed: +gen-mapping: decoded output x 150,824,370 ops/sec ±0.07% (102 runs sampled) +gen-mapping: encoded output x 663 ops/sec ±0.22% (98 runs sampled) +source-map-js: encoded output x 197 ops/sec ±0.45% (84 runs sampled) +source-map-0.6.1: encoded output x 198 ops/sec ±0.33% (85 runs sampled) +source-map-0.8.0: encoded output x 197 ops/sec ±0.06% (93 runs sampled) +Fastest is gen-mapping: decoded output + + +*** + + +babel.min.js.map +Memory Usage: +gen-mapping: addSegment 37578063 bytes +gen-mapping: addMapping 37212897 bytes +source-map-js 47638527 bytes +source-map-0.6.1 47690503 bytes +source-map-0.8.0 47470188 bytes +Smallest memory usage is gen-mapping: addMapping + +Adding speed: +gen-mapping: addSegment x 31.05 ops/sec ±8.31% (43 runs sampled) +gen-mapping: addMapping x 29.83 ops/sec ±7.36% (51 runs sampled) +source-map-js: addMapping x 20.73 ops/sec ±6.22% (38 runs sampled) +source-map-0.6.1: addMapping x 20.03 ops/sec ±10.51% (38 runs sampled) +source-map-0.8.0: addMapping x 19.30 ops/sec ±8.27% (37 runs sampled) +Fastest is gen-mapping: addSegment + +Generate speed: +gen-mapping: decoded output x 381,379,234 ops/sec ±0.29% (96 runs sampled) +gen-mapping: encoded output x 95.15 ops/sec ±2.98% (72 runs sampled) +source-map-js: encoded output x 15.20 ops/sec ±7.41% (33 runs sampled) +source-map-0.6.1: encoded output x 16.36 ops/sec ±10.46% (31 runs sampled) +source-map-0.8.0: encoded output x 16.06 ops/sec ±6.45% (31 runs sampled) +Fastest is gen-mapping: decoded output + + +*** + + +preact.js.map +Memory Usage: +gen-mapping: addSegment 416247 bytes +gen-mapping: addMapping 419824 bytes +source-map-js 1024619 bytes +source-map-0.6.1 1146004 bytes +source-map-0.8.0 1113250 bytes +Smallest memory usage is gen-mapping: addSegment + +Adding speed: +gen-mapping: addSegment x 13,755 ops/sec ±0.15% (98 runs sampled) +gen-mapping: addMapping x 13,013 ops/sec ±0.11% (101 runs sampled) +source-map-js: addMapping x 4,564 ops/sec ±0.21% (98 runs sampled) +source-map-0.6.1: addMapping x 4,562 ops/sec ±0.11% (99 runs sampled) +source-map-0.8.0: addMapping x 4,593 ops/sec ±0.11% (100 runs sampled) +Fastest is gen-mapping: addSegment + +Generate speed: +gen-mapping: decoded output x 379,864,020 ops/sec ±0.23% (93 runs sampled) +gen-mapping: encoded output x 14,368 ops/sec ±4.07% (82 runs sampled) +source-map-js: encoded output x 5,261 ops/sec ±0.21% (99 runs sampled) +source-map-0.6.1: encoded output x 5,124 ops/sec ±0.58% (99 runs sampled) +source-map-0.8.0: encoded output x 5,434 ops/sec ±0.33% (96 runs sampled) +Fastest is gen-mapping: decoded output + + +*** + + +react.js.map +Memory Usage: +gen-mapping: addSegment 975096 bytes +gen-mapping: addMapping 1102981 bytes +source-map-js 2918836 bytes +source-map-0.6.1 2885435 bytes +source-map-0.8.0 2874336 bytes +Smallest memory usage is gen-mapping: addSegment + +Adding speed: +gen-mapping: addSegment x 4,772 ops/sec ±0.15% (100 runs sampled) +gen-mapping: addMapping x 4,456 ops/sec ±0.13% (97 runs sampled) +source-map-js: addMapping x 1,618 ops/sec ±0.24% (97 runs sampled) +source-map-0.6.1: addMapping x 1,622 ops/sec ±0.12% (99 runs sampled) +source-map-0.8.0: addMapping x 1,631 ops/sec ±0.12% (100 runs sampled) +Fastest is gen-mapping: addSegment + +Generate speed: +gen-mapping: decoded output x 379,107,695 ops/sec ±0.07% (99 runs sampled) +gen-mapping: encoded output x 5,421 ops/sec ±1.60% (89 runs sampled) +source-map-js: encoded output x 2,113 ops/sec ±1.81% (98 runs sampled) +source-map-0.6.1: encoded output x 2,126 ops/sec ±0.10% (100 runs sampled) +source-map-0.8.0: encoded output x 2,176 ops/sec ±0.39% (98 runs sampled) +Fastest is gen-mapping: decoded output +``` + +[source-map]: https://www.npmjs.com/package/source-map +[trace-mapping]: https://github.com/jridgewell/trace-mapping diff --git a/node_modules/@jridgewell/gen-mapping/package.json b/node_modules/@jridgewell/gen-mapping/package.json new file mode 100644 index 0000000000000000000000000000000000000000..69e0ac812b4d8422d963fae6b44364756ef6e456 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/package.json @@ -0,0 +1,77 @@ +{ + "name": "@jridgewell/gen-mapping", + "version": "0.3.3", + "description": "Generate source maps", + "keywords": [ + "source", + "map" + ], + "author": "Justin Ridgewell ", + "license": "MIT", + "repository": "https://github.com/jridgewell/gen-mapping", + "main": "dist/gen-mapping.umd.js", + "module": "dist/gen-mapping.mjs", + "types": "dist/types/gen-mapping.d.ts", + "exports": { + ".": [ + { + "types": "./dist/types/gen-mapping.d.ts", + "browser": "./dist/gen-mapping.umd.js", + "require": "./dist/gen-mapping.umd.js", + "import": "./dist/gen-mapping.mjs" + }, + "./dist/gen-mapping.umd.js" + ], + "./package.json": "./package.json" + }, + "files": [ + "dist" + ], + "engines": { + "node": ">=6.0.0" + }, + "scripts": { + "benchmark": "run-s build:rollup benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node benchmark/index.mjs", + "prebuild": "rm -rf dist", + "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", + "pretest": "run-s build:rollup", + "test": "run-s -n test:lint test:coverage", + "test:debug": "mocha --inspect-brk", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:coverage": "c8 mocha", + "test:watch": "run-p 'build:rollup -- --watch' 'test:only -- --watch'", + "prepublishOnly": "npm run preversion", + "preversion": "run-s test build" + }, + "devDependencies": { + "@rollup/plugin-typescript": "8.3.2", + "@types/mocha": "9.1.1", + "@types/node": "17.0.29", + "@typescript-eslint/eslint-plugin": "5.21.0", + "@typescript-eslint/parser": "5.21.0", + "benchmark": "2.1.4", + "c8": "7.11.2", + "eslint": "8.14.0", + "eslint-config-prettier": "8.5.0", + "mocha": "9.2.2", + "npm-run-all": "4.1.5", + "prettier": "2.6.2", + "rollup": "2.70.2", + "typescript": "4.6.3" + }, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } +} diff --git a/node_modules/@jridgewell/resolve-uri/LICENSE b/node_modules/@jridgewell/resolve-uri/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..0a81b2ade1c77efc8ed0e73172efd07ea1c73539 --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/LICENSE @@ -0,0 +1,19 @@ +Copyright 2019 Justin Ridgewell + +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/@jridgewell/resolve-uri/README.md b/node_modules/@jridgewell/resolve-uri/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2fe70df77ec8e109faf2bc857e9893d486ad9eb1 --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/README.md @@ -0,0 +1,40 @@ +# @jridgewell/resolve-uri + +> Resolve a URI relative to an optional base URI + +Resolve any combination of absolute URIs, protocol-realtive URIs, absolute paths, or relative paths. + +## Installation + +```sh +npm install @jridgewell/resolve-uri +``` + +## Usage + +```typescript +function resolve(input: string, base?: string): string; +``` + +```js +import resolve from '@jridgewell/resolve-uri'; + +resolve('foo', 'https://example.com'); // => 'https://example.com/foo' +``` + +| Input | Base | Resolution | Explanation | +|-----------------------|-------------------------|--------------------------------|--------------------------------------------------------------| +| `https://example.com` | _any_ | `https://example.com/` | Input is normalized only | +| `//example.com` | `https://base.com/` | `https://example.com/` | Input inherits the base's protocol | +| `//example.com` | _rest_ | `//example.com/` | Input is normalized only | +| `/example` | `https://base.com/` | `https://base.com/example` | Input inherits the base's origin | +| `/example` | `//base.com/` | `//base.com/example` | Input inherits the base's host and remains protocol relative | +| `/example` | _rest_ | `/example` | Input is normalized only | +| `example` | `https://base.com/dir/` | `https://base.com/dir/example` | Input is joined with the base | +| `example` | `https://base.com/file` | `https://base.com/example` | Input is joined with the base without its file | +| `example` | `//base.com/dir/` | `//base.com/dir/example` | Input is joined with the base's last directory | +| `example` | `//base.com/file` | `//base.com/example` | Input is joined with the base without its file | +| `example` | `/base/dir/` | `/base/dir/example` | Input is joined with the base's last directory | +| `example` | `/base/file` | `/base/example` | Input is joined with the base without its file | +| `example` | `base/dir/` | `base/dir/example` | Input is joined with the base's last directory | +| `example` | `base/file` | `base/example` | Input is joined with the base without its file | diff --git a/node_modules/@jridgewell/resolve-uri/package.json b/node_modules/@jridgewell/resolve-uri/package.json new file mode 100644 index 0000000000000000000000000000000000000000..114937a006743c392d38603802678c91e29ac773 --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/package.json @@ -0,0 +1,69 @@ +{ + "name": "@jridgewell/resolve-uri", + "version": "3.1.0", + "description": "Resolve a URI relative to an optional base URI", + "keywords": [ + "resolve", + "uri", + "url", + "path" + ], + "author": "Justin Ridgewell ", + "license": "MIT", + "repository": "https://github.com/jridgewell/resolve-uri", + "main": "dist/resolve-uri.umd.js", + "module": "dist/resolve-uri.mjs", + "typings": "dist/types/resolve-uri.d.ts", + "exports": { + ".": [ + { + "types": "./dist/types/resolve-uri.d.ts", + "browser": "./dist/resolve-uri.umd.js", + "require": "./dist/resolve-uri.umd.js", + "import": "./dist/resolve-uri.mjs" + }, + "./dist/resolve-uri.umd.js" + ], + "./package.json": "./package.json" + }, + "files": [ + "dist" + ], + "engines": { + "node": ">=6.0.0" + }, + "scripts": { + "prebuild": "rm -rf dist", + "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", + "pretest": "run-s build:rollup", + "test": "run-s -n test:lint test:only", + "test:debug": "mocha --inspect-brk", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:coverage": "c8 mocha", + "test:watch": "mocha --watch", + "prepublishOnly": "npm run preversion", + "preversion": "run-s test build" + }, + "devDependencies": { + "@jridgewell/resolve-uri-latest": "npm:@jridgewell/resolve-uri@*", + "@rollup/plugin-typescript": "8.3.0", + "@typescript-eslint/eslint-plugin": "5.10.0", + "@typescript-eslint/parser": "5.10.0", + "c8": "7.11.0", + "eslint": "8.7.0", + "eslint-config-prettier": "8.3.0", + "mocha": "9.2.0", + "npm-run-all": "4.1.5", + "prettier": "2.5.1", + "rollup": "2.66.0", + "typescript": "4.5.5" + } +} diff --git a/node_modules/@jridgewell/set-array/LICENSE b/node_modules/@jridgewell/set-array/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..352f0715f391f038c82308374dc93650fd0b2dc7 --- /dev/null +++ b/node_modules/@jridgewell/set-array/LICENSE @@ -0,0 +1,19 @@ +Copyright 2022 Justin Ridgewell + +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/@jridgewell/set-array/README.md b/node_modules/@jridgewell/set-array/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2ed155ff798086abe9b8aa6fd4714f69116aa9e7 --- /dev/null +++ b/node_modules/@jridgewell/set-array/README.md @@ -0,0 +1,37 @@ +# @jridgewell/set-array + +> Like a Set, but provides the index of the `key` in the backing array + +This is designed to allow synchronizing a second array with the contents of the backing array, like +how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, and there +are never duplicates. + +## Installation + +```sh +npm install @jridgewell/set-array +``` + +## Usage + +```js +import { SetArray, get, put, pop } from '@jridgewell/set-array'; + +const sa = new SetArray(); + +let index = put(sa, 'first'); +assert.strictEqual(index, 0); + +index = put(sa, 'second'); +assert.strictEqual(index, 1); + +assert.deepEqual(sa.array, [ 'first', 'second' ]); + +index = get(sa, 'first'); +assert.strictEqual(index, 0); + +pop(sa); +index = get(sa, 'second'); +assert.strictEqual(index, undefined); +assert.deepEqual(sa.array, [ 'first' ]); +``` diff --git a/node_modules/@jridgewell/set-array/package.json b/node_modules/@jridgewell/set-array/package.json new file mode 100644 index 0000000000000000000000000000000000000000..aec4ee029ef79260ac2f1566d4eaa434a1918560 --- /dev/null +++ b/node_modules/@jridgewell/set-array/package.json @@ -0,0 +1,66 @@ +{ + "name": "@jridgewell/set-array", + "version": "1.1.2", + "description": "Like a Set, but provides the index of the `key` in the backing array", + "keywords": [], + "author": "Justin Ridgewell ", + "license": "MIT", + "repository": "https://github.com/jridgewell/set-array", + "main": "dist/set-array.umd.js", + "module": "dist/set-array.mjs", + "typings": "dist/types/set-array.d.ts", + "exports": { + ".": [ + { + "types": "./dist/types/set-array.d.ts", + "browser": "./dist/set-array.umd.js", + "require": "./dist/set-array.umd.js", + "import": "./dist/set-array.mjs" + }, + "./dist/set-array.umd.js" + ], + "./package.json": "./package.json" + }, + "files": [ + "dist", + "src" + ], + "engines": { + "node": ">=6.0.0" + }, + "scripts": { + "prebuild": "rm -rf dist", + "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", + "pretest": "run-s build:rollup", + "test": "run-s -n test:lint test:only", + "test:debug": "mocha --inspect-brk", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:coverage": "c8 mocha", + "test:watch": "mocha --watch", + "prepublishOnly": "npm run preversion", + "preversion": "run-s test build" + }, + "devDependencies": { + "@rollup/plugin-typescript": "8.3.0", + "@types/mocha": "9.1.1", + "@types/node": "17.0.29", + "@typescript-eslint/eslint-plugin": "5.10.0", + "@typescript-eslint/parser": "5.10.0", + "c8": "7.11.0", + "eslint": "8.7.0", + "eslint-config-prettier": "8.3.0", + "mocha": "9.2.0", + "npm-run-all": "4.1.5", + "prettier": "2.5.1", + "rollup": "2.66.0", + "typescript": "4.5.5" + } +} diff --git a/node_modules/@jridgewell/set-array/src/set-array.ts b/node_modules/@jridgewell/set-array/src/set-array.ts new file mode 100644 index 0000000000000000000000000000000000000000..f9ff604271fc72850243e6b030ba050b2ed90fc6 --- /dev/null +++ b/node_modules/@jridgewell/set-array/src/set-array.ts @@ -0,0 +1,55 @@ +/** + * Gets the index associated with `key` in the backing array, if it is already present. + */ +export let get: (strarr: SetArray, key: string) => number | undefined; + +/** + * Puts `key` into the backing array, if it is not already present. Returns + * the index of the `key` in the backing array. + */ +export let put: (strarr: SetArray, key: string) => number; + +/** + * Pops the last added item out of the SetArray. + */ +export let pop: (strarr: SetArray) => void; + +/** + * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the + * index of the `key` in the backing array. + * + * This is designed to allow synchronizing a second array with the contents of the backing array, + * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, + * and there are never duplicates. + */ +export class SetArray { + private declare _indexes: { [key: string]: number | undefined }; + declare array: readonly string[]; + + constructor() { + this._indexes = { __proto__: null } as any; + this.array = []; + } + + static { + get = (strarr, key) => strarr._indexes[key]; + + put = (strarr, key) => { + // The key may or may not be present. If it is present, it's a number. + const index = get(strarr, key); + if (index !== undefined) return index; + + const { array, _indexes: indexes } = strarr; + + return (indexes[key] = (array as string[]).push(key) - 1); + }; + + pop = (strarr) => { + const { array, _indexes: indexes } = strarr; + if (array.length === 0) return; + + const last = (array as string[]).pop()!; + indexes[last] = undefined; + }; + } +} diff --git a/node_modules/@jridgewell/sourcemap-codec/LICENSE b/node_modules/@jridgewell/sourcemap-codec/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..a331065a46b90f36f82834a40086eca10d6979c5 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2015 Rich Harris + +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/@jridgewell/sourcemap-codec/README.md b/node_modules/@jridgewell/sourcemap-codec/README.md new file mode 100644 index 0000000000000000000000000000000000000000..5cbb31525a4a67c7e230d44324ee150e49dad8df --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/README.md @@ -0,0 +1,200 @@ +# @jridgewell/sourcemap-codec + +Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit). + + +## Why? + +Sourcemaps are difficult to generate and manipulate, because the `mappings` property – the part that actually links the generated code back to the original source – is encoded using an obscure method called [Variable-length quantity](https://en.wikipedia.org/wiki/Variable-length_quantity). On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation – you have to understand the whole sourcemap. + +This package makes the process slightly easier. + + +## Installation + +```bash +npm install @jridgewell/sourcemap-codec +``` + + +## Usage + +```js +import { encode, decode } from '@jridgewell/sourcemap-codec'; + +var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' ); + +assert.deepEqual( decoded, [ + // the first line (of the generated code) has no mappings, + // as shown by the starting semi-colon (which separates lines) + [], + + // the second line contains four (comma-separated) segments + [ + // segments are encoded as you'd expect: + // [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ] + + // i.e. the first segment begins at column 2, and maps back to the second column + // of the second line (both zero-based) of the 0th source, and uses the 0th + // name in the `map.names` array + [ 2, 0, 2, 2, 0 ], + + // the remaining segments are 4-length rather than 5-length, + // because they don't map a name + [ 4, 0, 2, 4 ], + [ 6, 0, 2, 5 ], + [ 7, 0, 2, 7 ] + ], + + // the final line contains two segments + [ + [ 2, 1, 10, 19 ], + [ 12, 1, 11, 20 ] + ] +]); + +var encoded = encode( decoded ); +assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' ); +``` + +## Benchmarks + +``` +node v18.0.0 + +amp.js.map - 45120 segments + +Decode Memory Usage: +@jridgewell/sourcemap-codec 5479160 bytes +sourcemap-codec 5659336 bytes +source-map-0.6.1 17144440 bytes +source-map-0.8.0 6867424 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Decode speed: +decode: @jridgewell/sourcemap-codec x 502 ops/sec ±1.03% (90 runs sampled) +decode: sourcemap-codec x 445 ops/sec ±0.97% (92 runs sampled) +decode: source-map-0.6.1 x 36.01 ops/sec ±1.64% (49 runs sampled) +decode: source-map-0.8.0 x 367 ops/sec ±0.04% (95 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec + +Encode Memory Usage: +@jridgewell/sourcemap-codec 1261620 bytes +sourcemap-codec 9119248 bytes +source-map-0.6.1 8968560 bytes +source-map-0.8.0 8952952 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Encode speed: +encode: @jridgewell/sourcemap-codec x 738 ops/sec ±0.42% (98 runs sampled) +encode: sourcemap-codec x 238 ops/sec ±0.73% (88 runs sampled) +encode: source-map-0.6.1 x 162 ops/sec ±0.43% (84 runs sampled) +encode: source-map-0.8.0 x 191 ops/sec ±0.34% (90 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec + + +*** + + +babel.min.js.map - 347793 segments + +Decode Memory Usage: +@jridgewell/sourcemap-codec 35338184 bytes +sourcemap-codec 35922736 bytes +source-map-0.6.1 62366360 bytes +source-map-0.8.0 44337416 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Decode speed: +decode: @jridgewell/sourcemap-codec x 40.35 ops/sec ±4.47% (54 runs sampled) +decode: sourcemap-codec x 36.76 ops/sec ±3.67% (51 runs sampled) +decode: source-map-0.6.1 x 4.44 ops/sec ±2.15% (16 runs sampled) +decode: source-map-0.8.0 x 59.35 ops/sec ±0.05% (78 runs sampled) +Fastest is decode: source-map-0.8.0 + +Encode Memory Usage: +@jridgewell/sourcemap-codec 7212604 bytes +sourcemap-codec 21421456 bytes +source-map-0.6.1 25286888 bytes +source-map-0.8.0 25498744 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Encode speed: +encode: @jridgewell/sourcemap-codec x 112 ops/sec ±0.13% (84 runs sampled) +encode: sourcemap-codec x 30.23 ops/sec ±2.76% (53 runs sampled) +encode: source-map-0.6.1 x 19.43 ops/sec ±3.70% (37 runs sampled) +encode: source-map-0.8.0 x 19.40 ops/sec ±3.26% (37 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec + + +*** + + +preact.js.map - 1992 segments + +Decode Memory Usage: +@jridgewell/sourcemap-codec 500272 bytes +sourcemap-codec 516864 bytes +source-map-0.6.1 1596672 bytes +source-map-0.8.0 517272 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Decode speed: +decode: @jridgewell/sourcemap-codec x 16,137 ops/sec ±0.17% (99 runs sampled) +decode: sourcemap-codec x 12,139 ops/sec ±0.13% (99 runs sampled) +decode: source-map-0.6.1 x 1,264 ops/sec ±0.12% (100 runs sampled) +decode: source-map-0.8.0 x 9,894 ops/sec ±0.08% (101 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec + +Encode Memory Usage: +@jridgewell/sourcemap-codec 321026 bytes +sourcemap-codec 830832 bytes +source-map-0.6.1 586608 bytes +source-map-0.8.0 586680 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Encode speed: +encode: @jridgewell/sourcemap-codec x 19,876 ops/sec ±0.78% (95 runs sampled) +encode: sourcemap-codec x 6,983 ops/sec ±0.15% (100 runs sampled) +encode: source-map-0.6.1 x 5,070 ops/sec ±0.12% (102 runs sampled) +encode: source-map-0.8.0 x 5,641 ops/sec ±0.17% (100 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec + + +*** + + +react.js.map - 5726 segments + +Decode Memory Usage: +@jridgewell/sourcemap-codec 734848 bytes +sourcemap-codec 954200 bytes +source-map-0.6.1 2276432 bytes +source-map-0.8.0 955488 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Decode speed: +decode: @jridgewell/sourcemap-codec x 5,723 ops/sec ±0.12% (98 runs sampled) +decode: sourcemap-codec x 4,555 ops/sec ±0.09% (101 runs sampled) +decode: source-map-0.6.1 x 437 ops/sec ±0.11% (93 runs sampled) +decode: source-map-0.8.0 x 3,441 ops/sec ±0.15% (100 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec + +Encode Memory Usage: +@jridgewell/sourcemap-codec 638672 bytes +sourcemap-codec 1109840 bytes +source-map-0.6.1 1321224 bytes +source-map-0.8.0 1324448 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Encode speed: +encode: @jridgewell/sourcemap-codec x 6,801 ops/sec ±0.48% (98 runs sampled) +encode: sourcemap-codec x 2,533 ops/sec ±0.13% (101 runs sampled) +encode: source-map-0.6.1 x 2,248 ops/sec ±0.08% (100 runs sampled) +encode: source-map-0.8.0 x 2,303 ops/sec ±0.15% (100 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec +``` + +# License + +MIT diff --git a/node_modules/@jridgewell/sourcemap-codec/package.json b/node_modules/@jridgewell/sourcemap-codec/package.json new file mode 100644 index 0000000000000000000000000000000000000000..578448f1ce9ca0762f828ac2b76ce0b72b262a09 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/package.json @@ -0,0 +1,74 @@ +{ + "name": "@jridgewell/sourcemap-codec", + "version": "1.4.15", + "description": "Encode/decode sourcemap mappings", + "keywords": [ + "sourcemap", + "vlq" + ], + "main": "dist/sourcemap-codec.umd.js", + "module": "dist/sourcemap-codec.mjs", + "types": "dist/types/sourcemap-codec.d.ts", + "files": [ + "dist" + ], + "exports": { + ".": [ + { + "types": "./dist/types/sourcemap-codec.d.ts", + "browser": "./dist/sourcemap-codec.umd.js", + "require": "./dist/sourcemap-codec.umd.js", + "import": "./dist/sourcemap-codec.mjs" + }, + "./dist/sourcemap-codec.umd.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "benchmark": "run-s build:rollup benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node --expose-gc benchmark/index.js", + "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", + "pretest": "run-s build:rollup", + "test": "run-s -n test:lint test:only", + "test:debug": "mocha --inspect-brk", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:coverage": "c8 mocha", + "test:watch": "mocha --watch" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jridgewell/sourcemap-codec.git" + }, + "author": "Rich Harris", + "license": "MIT", + "devDependencies": { + "@rollup/plugin-typescript": "8.3.0", + "@types/node": "17.0.15", + "@typescript-eslint/eslint-plugin": "5.10.0", + "@typescript-eslint/parser": "5.10.0", + "benchmark": "2.1.4", + "c8": "7.11.2", + "eslint": "8.7.0", + "eslint-config-prettier": "8.3.0", + "mocha": "9.2.0", + "npm-run-all": "4.1.5", + "prettier": "2.5.1", + "rollup": "2.64.0", + "source-map": "0.6.1", + "source-map-js": "1.0.2", + "sourcemap-codec": "1.4.8", + "typescript": "4.5.4" + } +} diff --git a/node_modules/@jridgewell/trace-mapping/LICENSE b/node_modules/@jridgewell/trace-mapping/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..37bb488f08a1297216557d4197fa33de9908d8c8 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/LICENSE @@ -0,0 +1,19 @@ +Copyright 2022 Justin Ridgewell + +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/@jridgewell/trace-mapping/README.md b/node_modules/@jridgewell/trace-mapping/README.md new file mode 100644 index 0000000000000000000000000000000000000000..cc5e4f9150779fa089b941fd21006510e0ab898a --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/README.md @@ -0,0 +1,252 @@ +# @jridgewell/trace-mapping + +> Trace the original position through a source map + +`trace-mapping` allows you to take the line and column of an output file and trace it to the +original location in the source file through a source map. + +You may already be familiar with the [`source-map`][source-map] package's `SourceMapConsumer`. This +provides the same `originalPositionFor` and `generatedPositionFor` API, without requiring WASM. + +## Installation + +```sh +npm install @jridgewell/trace-mapping +``` + +## Usage + +```typescript +import { + TraceMap, + originalPositionFor, + generatedPositionFor, + sourceContentFor, +} from '@jridgewell/trace-mapping'; + +const tracer = new TraceMap({ + version: 3, + sources: ['input.js'], + sourcesContent: ['content of input.js'], + names: ['foo'], + mappings: 'KAyCIA', +}); + +// Lines start at line 1, columns at column 0. +const traced = originalPositionFor(tracer, { line: 1, column: 5 }); +assert.deepEqual(traced, { + source: 'input.js', + line: 42, + column: 4, + name: 'foo', +}); + +const content = sourceContentFor(tracer, traced.source); +assert.strictEqual(content, 'content for input.js'); + +const generated = generatedPositionFor(tracer, { + source: 'input.js', + line: 42, + column: 4, +}); +assert.deepEqual(generated, { + line: 1, + column: 5, +}); +``` + +We also provide a lower level API to get the actual segment that matches our line and column. Unlike +`originalPositionFor`, `traceSegment` uses a 0-base for `line`: + +```typescript +import { traceSegment } from '@jridgewell/trace-mapping'; + +// line is 0-base. +const traced = traceSegment(tracer, /* line */ 0, /* column */ 5); + +// Segments are [outputColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] +// Again, line is 0-base and so is sourceLine +assert.deepEqual(traced, [5, 0, 41, 4, 0]); +``` + +### SectionedSourceMaps + +The sourcemap spec defines a special `sections` field that's designed to handle concatenation of +output code with associated sourcemaps. This type of sourcemap is rarely used (no major build tool +produces it), but if you are hand coding a concatenation you may need it. We provide an `AnyMap` +helper that can receive either a regular sourcemap or a `SectionedSourceMap` and returns a +`TraceMap` instance: + +```typescript +import { AnyMap } from '@jridgewell/trace-mapping'; +const fooOutput = 'foo'; +const barOutput = 'bar'; +const output = [fooOutput, barOutput].join('\n'); + +const sectioned = new AnyMap({ + version: 3, + sections: [ + { + // 0-base line and column + offset: { line: 0, column: 0 }, + // fooOutput's sourcemap + map: { + version: 3, + sources: ['foo.js'], + names: ['foo'], + mappings: 'AAAAA', + }, + }, + { + // barOutput's sourcemap will not affect the first line, only the second + offset: { line: 1, column: 0 }, + map: { + version: 3, + sources: ['bar.js'], + names: ['bar'], + mappings: 'AAAAA', + }, + }, + ], +}); + +const traced = originalPositionFor(sectioned, { + line: 2, + column: 0, +}); + +assert.deepEqual(traced, { + source: 'bar.js', + line: 1, + column: 0, + name: 'bar', +}); +``` + +## Benchmarks + +``` +node v18.0.0 + +amp.js.map - 45120 segments + +Memory Usage: +trace-mapping decoded 562400 bytes +trace-mapping encoded 5706544 bytes +source-map-js 10717664 bytes +source-map-0.6.1 17446384 bytes +source-map-0.8.0 9701757 bytes +Smallest memory usage is trace-mapping decoded + +Init speed: +trace-mapping: decoded JSON input x 180 ops/sec ±0.34% (85 runs sampled) +trace-mapping: encoded JSON input x 364 ops/sec ±1.77% (89 runs sampled) +trace-mapping: decoded Object input x 3,116 ops/sec ±0.50% (96 runs sampled) +trace-mapping: encoded Object input x 410 ops/sec ±2.62% (85 runs sampled) +source-map-js: encoded Object input x 84.23 ops/sec ±0.91% (73 runs sampled) +source-map-0.6.1: encoded Object input x 37.21 ops/sec ±2.08% (51 runs sampled) +Fastest is trace-mapping: decoded Object input + +Trace speed: +trace-mapping: decoded originalPositionFor x 3,952,212 ops/sec ±0.17% (98 runs sampled) +trace-mapping: encoded originalPositionFor x 3,487,468 ops/sec ±1.58% (90 runs sampled) +source-map-js: encoded originalPositionFor x 827,730 ops/sec ±0.78% (97 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 748,991 ops/sec ±0.53% (94 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 2,532,894 ops/sec ±0.57% (95 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor + + +*** + + +babel.min.js.map - 347793 segments + +Memory Usage: +trace-mapping decoded 89832 bytes +trace-mapping encoded 35474640 bytes +source-map-js 51257176 bytes +source-map-0.6.1 63515664 bytes +source-map-0.8.0 42933752 bytes +Smallest memory usage is trace-mapping decoded + +Init speed: +trace-mapping: decoded JSON input x 15.41 ops/sec ±8.65% (34 runs sampled) +trace-mapping: encoded JSON input x 28.20 ops/sec ±12.87% (42 runs sampled) +trace-mapping: decoded Object input x 964 ops/sec ±0.36% (99 runs sampled) +trace-mapping: encoded Object input x 31.77 ops/sec ±13.79% (45 runs sampled) +source-map-js: encoded Object input x 6.45 ops/sec ±5.16% (21 runs sampled) +source-map-0.6.1: encoded Object input x 4.07 ops/sec ±5.24% (15 runs sampled) +Fastest is trace-mapping: decoded Object input + +Trace speed: +trace-mapping: decoded originalPositionFor x 7,183,038 ops/sec ±0.58% (95 runs sampled) +trace-mapping: encoded originalPositionFor x 5,192,185 ops/sec ±0.41% (100 runs sampled) +source-map-js: encoded originalPositionFor x 4,259,489 ops/sec ±0.79% (94 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 3,742,629 ops/sec ±0.71% (95 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 6,270,211 ops/sec ±0.64% (94 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor + + +*** + + +preact.js.map - 1992 segments + +Memory Usage: +trace-mapping decoded 37128 bytes +trace-mapping encoded 247280 bytes +source-map-js 1143536 bytes +source-map-0.6.1 1290992 bytes +source-map-0.8.0 96544 bytes +Smallest memory usage is trace-mapping decoded + +Init speed: +trace-mapping: decoded JSON input x 3,483 ops/sec ±0.30% (98 runs sampled) +trace-mapping: encoded JSON input x 6,092 ops/sec ±0.18% (97 runs sampled) +trace-mapping: decoded Object input x 249,076 ops/sec ±0.24% (98 runs sampled) +trace-mapping: encoded Object input x 14,555 ops/sec ±0.48% (100 runs sampled) +source-map-js: encoded Object input x 2,447 ops/sec ±0.36% (99 runs sampled) +source-map-0.6.1: encoded Object input x 1,201 ops/sec ±0.57% (96 runs sampled) +Fastest is trace-mapping: decoded Object input + +Trace speed: +trace-mapping: decoded originalPositionFor x 7,620,192 ops/sec ±0.09% (99 runs sampled) +trace-mapping: encoded originalPositionFor x 6,872,554 ops/sec ±0.30% (97 runs sampled) +source-map-js: encoded originalPositionFor x 2,489,570 ops/sec ±0.35% (94 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 1,698,633 ops/sec ±0.28% (98 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 4,015,644 ops/sec ±0.22% (98 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor + + +*** + + +react.js.map - 5726 segments + +Memory Usage: +trace-mapping decoded 16176 bytes +trace-mapping encoded 681552 bytes +source-map-js 2418352 bytes +source-map-0.6.1 2443672 bytes +source-map-0.8.0 111768 bytes +Smallest memory usage is trace-mapping decoded + +Init speed: +trace-mapping: decoded JSON input x 1,720 ops/sec ±0.34% (98 runs sampled) +trace-mapping: encoded JSON input x 4,406 ops/sec ±0.35% (100 runs sampled) +trace-mapping: decoded Object input x 92,122 ops/sec ±0.10% (99 runs sampled) +trace-mapping: encoded Object input x 5,385 ops/sec ±0.37% (99 runs sampled) +source-map-js: encoded Object input x 794 ops/sec ±0.40% (98 runs sampled) +source-map-0.6.1: encoded Object input x 416 ops/sec ±0.54% (91 runs sampled) +Fastest is trace-mapping: decoded Object input + +Trace speed: +trace-mapping: decoded originalPositionFor x 32,759,519 ops/sec ±0.33% (100 runs sampled) +trace-mapping: encoded originalPositionFor x 31,116,306 ops/sec ±0.33% (97 runs sampled) +source-map-js: encoded originalPositionFor x 17,458,435 ops/sec ±0.44% (97 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 12,687,097 ops/sec ±0.43% (95 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 23,538,275 ops/sec ±0.38% (95 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor +``` + +[source-map]: https://www.npmjs.com/package/source-map diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/LICENSE b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..a331065a46b90f36f82834a40086eca10d6979c5 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2015 Rich Harris + +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/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/README.md b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2b9e397136be7be0ce782d600e698d92af6ee2f9 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/README.md @@ -0,0 +1,200 @@ +# sourcemap-codec + +Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit). + + +## Why? + +Sourcemaps are difficult to generate and manipulate, because the `mappings` property – the part that actually links the generated code back to the original source – is encoded using an obscure method called [Variable-length quantity](https://en.wikipedia.org/wiki/Variable-length_quantity). On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation – you have to understand the whole sourcemap. + +This package makes the process slightly easier. + + +## Installation + +```bash +npm install sourcemap-codec +``` + + +## Usage + +```js +import { encode, decode } from 'sourcemap-codec'; + +var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' ); + +assert.deepEqual( decoded, [ + // the first line (of the generated code) has no mappings, + // as shown by the starting semi-colon (which separates lines) + [], + + // the second line contains four (comma-separated) segments + [ + // segments are encoded as you'd expect: + // [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ] + + // i.e. the first segment begins at column 2, and maps back to the second column + // of the second line (both zero-based) of the 0th source, and uses the 0th + // name in the `map.names` array + [ 2, 0, 2, 2, 0 ], + + // the remaining segments are 4-length rather than 5-length, + // because they don't map a name + [ 4, 0, 2, 4 ], + [ 6, 0, 2, 5 ], + [ 7, 0, 2, 7 ] + ], + + // the final line contains two segments + [ + [ 2, 1, 10, 19 ], + [ 12, 1, 11, 20 ] + ] +]); + +var encoded = encode( decoded ); +assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' ); +``` + +## Benchmarks + +``` +node v18.0.0 + +amp.js.map - 45120 segments + +Decode Memory Usage: +@jridgewell/sourcemap-codec 5479160 bytes +sourcemap-codec 5659336 bytes +source-map-0.6.1 17144440 bytes +source-map-0.8.0 6867424 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Decode speed: +decode: @jridgewell/sourcemap-codec x 502 ops/sec ±1.03% (90 runs sampled) +decode: sourcemap-codec x 445 ops/sec ±0.97% (92 runs sampled) +decode: source-map-0.6.1 x 36.01 ops/sec ±1.64% (49 runs sampled) +decode: source-map-0.8.0 x 367 ops/sec ±0.04% (95 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec + +Encode Memory Usage: +@jridgewell/sourcemap-codec 1261620 bytes +sourcemap-codec 9119248 bytes +source-map-0.6.1 8968560 bytes +source-map-0.8.0 8952952 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Encode speed: +encode: @jridgewell/sourcemap-codec x 738 ops/sec ±0.42% (98 runs sampled) +encode: sourcemap-codec x 238 ops/sec ±0.73% (88 runs sampled) +encode: source-map-0.6.1 x 162 ops/sec ±0.43% (84 runs sampled) +encode: source-map-0.8.0 x 191 ops/sec ±0.34% (90 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec + + +*** + + +babel.min.js.map - 347793 segments + +Decode Memory Usage: +@jridgewell/sourcemap-codec 35338184 bytes +sourcemap-codec 35922736 bytes +source-map-0.6.1 62366360 bytes +source-map-0.8.0 44337416 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Decode speed: +decode: @jridgewell/sourcemap-codec x 40.35 ops/sec ±4.47% (54 runs sampled) +decode: sourcemap-codec x 36.76 ops/sec ±3.67% (51 runs sampled) +decode: source-map-0.6.1 x 4.44 ops/sec ±2.15% (16 runs sampled) +decode: source-map-0.8.0 x 59.35 ops/sec ±0.05% (78 runs sampled) +Fastest is decode: source-map-0.8.0 + +Encode Memory Usage: +@jridgewell/sourcemap-codec 7212604 bytes +sourcemap-codec 21421456 bytes +source-map-0.6.1 25286888 bytes +source-map-0.8.0 25498744 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Encode speed: +encode: @jridgewell/sourcemap-codec x 112 ops/sec ±0.13% (84 runs sampled) +encode: sourcemap-codec x 30.23 ops/sec ±2.76% (53 runs sampled) +encode: source-map-0.6.1 x 19.43 ops/sec ±3.70% (37 runs sampled) +encode: source-map-0.8.0 x 19.40 ops/sec ±3.26% (37 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec + + +*** + + +preact.js.map - 1992 segments + +Decode Memory Usage: +@jridgewell/sourcemap-codec 500272 bytes +sourcemap-codec 516864 bytes +source-map-0.6.1 1596672 bytes +source-map-0.8.0 517272 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Decode speed: +decode: @jridgewell/sourcemap-codec x 16,137 ops/sec ±0.17% (99 runs sampled) +decode: sourcemap-codec x 12,139 ops/sec ±0.13% (99 runs sampled) +decode: source-map-0.6.1 x 1,264 ops/sec ±0.12% (100 runs sampled) +decode: source-map-0.8.0 x 9,894 ops/sec ±0.08% (101 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec + +Encode Memory Usage: +@jridgewell/sourcemap-codec 321026 bytes +sourcemap-codec 830832 bytes +source-map-0.6.1 586608 bytes +source-map-0.8.0 586680 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Encode speed: +encode: @jridgewell/sourcemap-codec x 19,876 ops/sec ±0.78% (95 runs sampled) +encode: sourcemap-codec x 6,983 ops/sec ±0.15% (100 runs sampled) +encode: source-map-0.6.1 x 5,070 ops/sec ±0.12% (102 runs sampled) +encode: source-map-0.8.0 x 5,641 ops/sec ±0.17% (100 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec + + +*** + + +react.js.map - 5726 segments + +Decode Memory Usage: +@jridgewell/sourcemap-codec 734848 bytes +sourcemap-codec 954200 bytes +source-map-0.6.1 2276432 bytes +source-map-0.8.0 955488 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Decode speed: +decode: @jridgewell/sourcemap-codec x 5,723 ops/sec ±0.12% (98 runs sampled) +decode: sourcemap-codec x 4,555 ops/sec ±0.09% (101 runs sampled) +decode: source-map-0.6.1 x 437 ops/sec ±0.11% (93 runs sampled) +decode: source-map-0.8.0 x 3,441 ops/sec ±0.15% (100 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec + +Encode Memory Usage: +@jridgewell/sourcemap-codec 638672 bytes +sourcemap-codec 1109840 bytes +source-map-0.6.1 1321224 bytes +source-map-0.8.0 1324448 bytes +Smallest memory usage is @jridgewell/sourcemap-codec + +Encode speed: +encode: @jridgewell/sourcemap-codec x 6,801 ops/sec ±0.48% (98 runs sampled) +encode: sourcemap-codec x 2,533 ops/sec ±0.13% (101 runs sampled) +encode: source-map-0.6.1 x 2,248 ops/sec ±0.08% (100 runs sampled) +encode: source-map-0.8.0 x 2,303 ops/sec ±0.15% (100 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec +``` + +# License + +MIT diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/package.json b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/package.json new file mode 100644 index 0000000000000000000000000000000000000000..59450728782dbd760b33e4532ced3a2a504234b6 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/package.json @@ -0,0 +1,75 @@ +{ + "name": "@jridgewell/sourcemap-codec", + "version": "1.4.14", + "description": "Encode/decode sourcemap mappings", + "keywords": [ + "sourcemap", + "vlq" + ], + "main": "dist/sourcemap-codec.umd.js", + "module": "dist/sourcemap-codec.mjs", + "typings": "dist/types/sourcemap-codec.d.ts", + "files": [ + "dist", + "src" + ], + "exports": { + ".": [ + { + "types": "./dist/types/sourcemap-codec.d.ts", + "browser": "./dist/sourcemap-codec.umd.js", + "import": "./dist/sourcemap-codec.mjs", + "require": "./dist/sourcemap-codec.umd.js" + }, + "./dist/sourcemap-codec.umd.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "benchmark": "run-s build:rollup benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node --expose-gc benchmark/index.js", + "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", + "pretest": "run-s build:rollup", + "test": "run-s -n test:lint test:only", + "test:debug": "mocha --inspect-brk", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:coverage": "c8 mocha", + "test:watch": "mocha --watch" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jridgewell/sourcemap-codec.git" + }, + "author": "Rich Harris", + "license": "MIT", + "devDependencies": { + "@rollup/plugin-typescript": "8.3.0", + "@types/node": "17.0.15", + "@typescript-eslint/eslint-plugin": "5.10.0", + "@typescript-eslint/parser": "5.10.0", + "benchmark": "2.1.4", + "c8": "7.11.2", + "eslint": "8.7.0", + "eslint-config-prettier": "8.3.0", + "mocha": "9.2.0", + "npm-run-all": "4.1.5", + "prettier": "2.5.1", + "rollup": "2.64.0", + "source-map": "0.6.1", + "source-map-js": "1.0.2", + "sourcemap-codec": "1.4.8", + "typescript": "4.5.4" + } +} diff --git a/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts new file mode 100644 index 0000000000000000000000000000000000000000..cafd90effe5597c6b1d2ccf670388507de2f728e --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts @@ -0,0 +1,198 @@ +export type SourceMapSegment = + | [number] + | [number, number, number, number] + | [number, number, number, number, number]; +export type SourceMapLine = SourceMapSegment[]; +export type SourceMapMappings = SourceMapLine[]; + +const comma = ','.charCodeAt(0); +const semicolon = ';'.charCodeAt(0); +const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; +const intToChar = new Uint8Array(64); // 64 possible chars. +const charToInt = new Uint8Array(128); // z is 122 in ASCII + +for (let i = 0; i < chars.length; i++) { + const c = chars.charCodeAt(i); + intToChar[i] = c; + charToInt[c] = i; +} + +// Provide a fallback for older environments. +const td = + typeof TextDecoder !== 'undefined' + ? /* #__PURE__ */ new TextDecoder() + : typeof Buffer !== 'undefined' + ? { + decode(buf: Uint8Array) { + const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + return out.toString(); + }, + } + : { + decode(buf: Uint8Array) { + let out = ''; + for (let i = 0; i < buf.length; i++) { + out += String.fromCharCode(buf[i]); + } + return out; + }, + }; + +export function decode(mappings: string): SourceMapMappings { + const state: [number, number, number, number, number] = new Int32Array(5) as any; + const decoded: SourceMapMappings = []; + + let index = 0; + do { + const semi = indexOf(mappings, index); + const line: SourceMapLine = []; + let sorted = true; + let lastCol = 0; + state[0] = 0; + + for (let i = index; i < semi; i++) { + let seg: SourceMapSegment; + + i = decodeInteger(mappings, i, state, 0); // genColumn + const col = state[0]; + if (col < lastCol) sorted = false; + lastCol = col; + + if (hasMoreVlq(mappings, i, semi)) { + i = decodeInteger(mappings, i, state, 1); // sourcesIndex + i = decodeInteger(mappings, i, state, 2); // sourceLine + i = decodeInteger(mappings, i, state, 3); // sourceColumn + + if (hasMoreVlq(mappings, i, semi)) { + i = decodeInteger(mappings, i, state, 4); // namesIndex + seg = [col, state[1], state[2], state[3], state[4]]; + } else { + seg = [col, state[1], state[2], state[3]]; + } + } else { + seg = [col]; + } + + line.push(seg); + } + + if (!sorted) sort(line); + decoded.push(line); + index = semi + 1; + } while (index <= mappings.length); + + return decoded; +} + +function indexOf(mappings: string, index: number): number { + const idx = mappings.indexOf(';', index); + return idx === -1 ? mappings.length : idx; +} + +function decodeInteger(mappings: string, pos: number, state: SourceMapSegment, j: number): number { + let value = 0; + let shift = 0; + let integer = 0; + + do { + const c = mappings.charCodeAt(pos++); + integer = charToInt[c]; + value |= (integer & 31) << shift; + shift += 5; + } while (integer & 32); + + const shouldNegate = value & 1; + value >>>= 1; + + if (shouldNegate) { + value = -0x80000000 | -value; + } + + state[j] += value; + return pos; +} + +function hasMoreVlq(mappings: string, i: number, length: number): boolean { + if (i >= length) return false; + return mappings.charCodeAt(i) !== comma; +} + +function sort(line: SourceMapSegment[]) { + line.sort(sortComparator); +} + +function sortComparator(a: SourceMapSegment, b: SourceMapSegment): number { + return a[0] - b[0]; +} + +export function encode(decoded: SourceMapMappings): string; +export function encode(decoded: Readonly): string; +export function encode(decoded: Readonly): string { + const state: [number, number, number, number, number] = new Int32Array(5) as any; + const bufLength = 1024 * 16; + const subLength = bufLength - 36; + const buf = new Uint8Array(bufLength); + const sub = buf.subarray(0, subLength); + let pos = 0; + let out = ''; + + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) { + if (pos === bufLength) { + out += td.decode(buf); + pos = 0; + } + buf[pos++] = semicolon; + } + if (line.length === 0) continue; + + state[0] = 0; + + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + // We can push up to 5 ints, each int can take at most 7 chars, and we + // may push a comma. + if (pos > subLength) { + out += td.decode(sub); + buf.copyWithin(0, subLength, pos); + pos -= subLength; + } + if (j > 0) buf[pos++] = comma; + + pos = encodeInteger(buf, pos, state, segment, 0); // genColumn + + if (segment.length === 1) continue; + pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex + pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine + pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn + + if (segment.length === 4) continue; + pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex + } + } + + return out + td.decode(buf.subarray(0, pos)); +} + +function encodeInteger( + buf: Uint8Array, + pos: number, + state: SourceMapSegment, + segment: SourceMapSegment, + j: number, +): number { + const next = segment[j]; + let num = next - state[j]; + state[j] = next; + + num = num < 0 ? (-num << 1) | 1 : num << 1; + do { + let clamped = num & 0b011111; + num >>>= 5; + if (num > 0) clamped |= 0b100000; + buf[pos++] = intToChar[clamped]; + } while (num > 0); + + return pos; +} diff --git a/node_modules/@jridgewell/trace-mapping/package.json b/node_modules/@jridgewell/trace-mapping/package.json new file mode 100644 index 0000000000000000000000000000000000000000..9fcc07f4f8c6f44b23ae5bde29ceb03227c07cf1 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/package.json @@ -0,0 +1,75 @@ +{ + "name": "@jridgewell/trace-mapping", + "version": "0.3.18", + "description": "Trace the original position through a source map", + "keywords": [ + "source", + "map" + ], + "main": "dist/trace-mapping.umd.js", + "module": "dist/trace-mapping.mjs", + "types": "dist/types/trace-mapping.d.ts", + "files": [ + "dist" + ], + "exports": { + ".": [ + { + "types": "./dist/types/trace-mapping.d.ts", + "browser": "./dist/trace-mapping.umd.js", + "require": "./dist/trace-mapping.umd.js", + "import": "./dist/trace-mapping.mjs" + }, + "./dist/trace-mapping.umd.js" + ], + "./package.json": "./package.json" + }, + "author": "Justin Ridgewell ", + "repository": { + "type": "git", + "url": "git+https://github.com/jridgewell/trace-mapping.git" + }, + "license": "MIT", + "scripts": { + "benchmark": "run-s build:rollup benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node --expose-gc benchmark/index.mjs", + "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": "ava debug", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts' '**/*.md'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "c8 ava", + "test:watch": "ava --watch" + }, + "devDependencies": { + "@rollup/plugin-typescript": "8.5.0", + "@typescript-eslint/eslint-plugin": "5.39.0", + "@typescript-eslint/parser": "5.39.0", + "ava": "4.3.3", + "benchmark": "2.1.4", + "c8": "7.12.0", + "esbuild": "0.15.10", + "eslint": "8.25.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-no-only-tests": "3.0.0", + "npm-run-all": "4.1.5", + "prettier": "2.7.1", + "rollup": "2.79.1", + "tsx": "3.10.1", + "typescript": "4.8.4" + }, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } +} diff --git a/node_modules/@nodelib/fs.scandir/LICENSE b/node_modules/@nodelib/fs.scandir/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..65a999460170355f6383b8f122da09e66e485165 --- /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 0000000000000000000000000000000000000000..e0b218b9f090cbf38b4a75f1f6b83b46bf8e4476 --- /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 0000000000000000000000000000000000000000..827f1db09aac5d9f6b2e63d56a509ae67faaf0e6 --- /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 0000000000000000000000000000000000000000..f0fe022023e6dfd5b56c33f2bac6d2d3b180e1c5 --- /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 0000000000000000000000000000000000000000..33f17497d43b391287e2c9fc65d1c7cb4668ea50 --- /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 0000000000000000000000000000000000000000..7e3d4411f751e190be8794b687e9fa60ef5fae06 --- /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 0000000000000000000000000000000000000000..b9da83ed172315106269d96bb9043c922af68cc5 --- /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 0000000000000000000000000000000000000000..99c70d3d635f73d2704b02695933770401b14d37 --- /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 0000000000000000000000000000000000000000..5829676df7e302e14b87edf2d99c04b58384d0af --- /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 0000000000000000000000000000000000000000..e8e2f0a9cba94ed06b7762f2846ab88330aaa44e --- /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 0000000000000000000000000000000000000000..2b4d08b57a0de23a030b494abbb236239638b122 --- /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 0000000000000000000000000000000000000000..8724cb59afe97cdfebdf6b50bdf36534537e781c --- /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 0000000000000000000000000000000000000000..e05c8f072cb5766844c31f6d8424c692f0caacac --- /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 0000000000000000000000000000000000000000..146db3434f42252e4071db1624074a666fe21b4a --- /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 0000000000000000000000000000000000000000..a0db11559914a553d8e2da52b612bf48f2d5dd74 --- /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 0000000000000000000000000000000000000000..15a3e8cde7704afdc4d66723ac440c2acb7e3519 --- /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 0000000000000000000000000000000000000000..f326c5e5e41f3288779c97c777e782e5642aed1f --- /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 0000000000000000000000000000000000000000..c8ad2e549bdc6801e0d1c80b0308d4b9bd4985ce --- /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 0000000000000000000000000000000000000000..bb863f1573e99fe2fe287dcdd8d22c075dd014e1 --- /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 0000000000000000000000000000000000000000..ace7c74d63f6da763b2711a4119d6005f5c3b187 --- /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 0000000000000000000000000000000000000000..1b41954e79d847e0f085ce4235b8ee62fddb1977 --- /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 0000000000000000000000000000000000000000..f5de129f47b80353304d3219c96f73f59a390397 --- /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 0000000000000000000000000000000000000000..d3a89241b3c1891339651dfdeb9495813587e289 --- /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 0000000000000000000000000000000000000000..65a999460170355f6383b8f122da09e66e485165 --- /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 0000000000000000000000000000000000000000..686f0471d40f2f522e53db44f5a5b7a73a65e9df --- /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 0000000000000000000000000000000000000000..3af759c95fb85c927bc8204a49c5eaca37d691d2 --- /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 0000000000000000000000000000000000000000..8dc08c8ca1f1c72aa9622352ca5d55f65198767d --- /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 0000000000000000000000000000000000000000..f95db995c7f8fd07939359f4885835eebcd9e0fc --- /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 0000000000000000000000000000000000000000..b23f7510d050fe830d40765ad49fe72b21ebef5b --- /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 0000000000000000000000000000000000000000..85423ce11e2efb74a86e9477405e1976fec6b7c5 --- /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 0000000000000000000000000000000000000000..983ff0e6cb79f6e4442be70c43e79c6b406dd9bb --- /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 0000000000000000000000000000000000000000..428c3d792b385664fe3fe4770c46e558d7ca5285 --- /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 0000000000000000000000000000000000000000..1521c3616eaee4439c5cd1a855c97d029d4dab38 --- /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 0000000000000000000000000000000000000000..f4b3d444302ff6b5715a79341156f61350bd0a1b --- /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 0000000000000000000000000000000000000000..111ec09ca6491ae6d8d9a9c9bdcb32c8408afcc4 --- /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 0000000000000000000000000000000000000000..74c08ed2f7a1201d2e28453602b83241d83ade82 --- /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 0000000000000000000000000000000000000000..c8ad2e549bdc6801e0d1c80b0308d4b9bd4985ce --- /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 0000000000000000000000000000000000000000..f2540c2894ea9181f73274a493df0dc3789d6128 --- /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 0000000000000000000000000000000000000000..65a999460170355f6383b8f122da09e66e485165 --- /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 0000000000000000000000000000000000000000..6ccc08db4a10bca492f2db7b547b98a7f22a4e8c --- /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 0000000000000000000000000000000000000000..8864c7bff5d8cb4a3db399a957f5eb49031d3248 --- /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 0000000000000000000000000000000000000000..15207874afa1dadac7f7655545b4b1f75ee87a78 --- /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 0000000000000000000000000000000000000000..0f6717d780f64fd49f31ba1cfccabb40eb5aafea --- /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 0000000000000000000000000000000000000000..51d3be51a85d46c5ab53f5b7d92675996d02887c --- /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 0000000000000000000000000000000000000000..874f60c5a10b2f8fdfca1725fc1e8ff335e7549c --- /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 0000000000000000000000000000000000000000..4c2529ce8a385a0215ddf188b8a46163b2e18842 --- /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 0000000000000000000000000000000000000000..294185f85dc59d2a40eec8b0fea2d87958e41cdf --- /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 0000000000000000000000000000000000000000..51298b0f58f14b0c9b9f36061cdd0c0b950ba2f3 --- /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 0000000000000000000000000000000000000000..551c42e41293756691160855d122f365710ac007 --- /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 0000000000000000000000000000000000000000..faab6ca2ad4262e2d9d5539b8c6ce0017090fd29 --- /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 0000000000000000000000000000000000000000..9acf4e6c25f383ab22f55ff79a7f2022f6238773 --- /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 0000000000000000000000000000000000000000..ebe8dd5735858b58c0d6a38cdb925c85c7c03651 --- /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 0000000000000000000000000000000000000000..5985f97c402e5a92edf987d791821650c9b66f3b --- /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 0000000000000000000000000000000000000000..a93572f48a79ecd394339f6b27768a3b49332912 --- /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 0000000000000000000000000000000000000000..e1f383b25192216249d67456b437f7ea0ae5db24 --- /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 0000000000000000000000000000000000000000..782f07cbfab62ff2469f26b2fc98050a38b21f27 --- /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 0000000000000000000000000000000000000000..af410335363f14e3d0bdd44054917e08c6ba57ad --- /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 0000000000000000000000000000000000000000..9a8d5a6f1e18e826bc8930d03b5ef9e05b8738b3 --- /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 0000000000000000000000000000000000000000..d1c4b45f6b52bd167482312568a4ba7f4b9bba74 --- /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 0000000000000000000000000000000000000000..d7a85c81eeecf8fd230e6fecedc9550bddb2ff93 --- /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 0000000000000000000000000000000000000000..6ee9bd3f9bf81ccaf9abde0f329e38b075344056 --- /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 0000000000000000000000000000000000000000..c8ad2e549bdc6801e0d1c80b0308d4b9bd4985ce --- /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 0000000000000000000000000000000000000000..86bfce48b59e41fa4985ac837c5ba8a9dacabe37 --- /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/any-promise/.jshintrc b/node_modules/any-promise/.jshintrc new file mode 100644 index 0000000000000000000000000000000000000000..979105e9116a60f71f5416bfe5fe432dcbdfde91 --- /dev/null +++ b/node_modules/any-promise/.jshintrc @@ -0,0 +1,4 @@ +{ + "node":true, + "strict":true +} diff --git a/node_modules/any-promise/.npmignore b/node_modules/any-promise/.npmignore new file mode 100644 index 0000000000000000000000000000000000000000..1354abc0270ba8c759e4df7c401ce10cb014d58b --- /dev/null +++ b/node_modules/any-promise/.npmignore @@ -0,0 +1,7 @@ +.git* +test/ +test-browser/ +build/ +.travis.yml +*.swp +Makefile diff --git a/node_modules/any-promise/LICENSE b/node_modules/any-promise/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..9187fe5d7293980d23902787dd6438a56e99dc0b --- /dev/null +++ b/node_modules/any-promise/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2014-2016 Kevin Beaty + +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/any-promise/README.md b/node_modules/any-promise/README.md new file mode 100644 index 0000000000000000000000000000000000000000..174bea4aeb0bd0a7b7af83a9991195bb9b887c97 --- /dev/null +++ b/node_modules/any-promise/README.md @@ -0,0 +1,161 @@ +## Any Promise + +[![Build Status](https://secure.travis-ci.org/kevinbeaty/any-promise.svg)](http://travis-ci.org/kevinbeaty/any-promise) + +Let your library support any ES 2015 (ES6) compatible `Promise` and leave the choice to application authors. The application can *optionally* register its preferred `Promise` implementation and it will be exported when requiring `any-promise` from library code. + +If no preference is registered, defaults to the global `Promise` for newer Node.js versions. The browser version defaults to the window `Promise`, so polyfill or register as necessary. + +### Usage with global Promise: + +Assuming the global `Promise` is the desired implementation: + +```bash +# Install any libraries depending on any-promise +$ npm install mz +``` + +The installed libraries will use global Promise by default. + +```js +// in library +var Promise = require('any-promise') // the global Promise + +function promiseReturningFunction(){ + return new Promise(function(resolve, reject){...}) +} +``` + +### Usage with registration: + +Assuming `bluebird` is the desired Promise implementation: + +```bash +# Install preferred promise library +$ npm install bluebird +# Install any-promise to allow registration +$ npm install any-promise +# Install any libraries you would like to use depending on any-promise +$ npm install mz +``` + +Register your preference in the application entry point before any other `require` of packages that load `any-promise`: + +```javascript +// top of application index.js or other entry point +require('any-promise/register/bluebird') + +// -or- Equivalent to above, but allows customization of Promise library +require('any-promise/register')('bluebird', {Promise: require('bluebird')}) +``` + +Now that the implementation is registered, you can use any package depending on `any-promise`: + + +```javascript +var fsp = require('mz/fs') // mz/fs will use registered bluebird promises +var Promise = require('any-promise') // the registered bluebird promise +``` + +It is safe to call `register` multiple times, but it must always be with the same implementation. + +Again, registration is *optional*. It should only be called by the application user if overriding the global `Promise` implementation is desired. + +### Optional Application Registration + +As an application author, you can *optionally* register a preferred `Promise` implementation on application startup (before any call to `require('any-promise')`: + +You must register your preference before any call to `require('any-promise')` (by you or required packages), and only one implementation can be registered. Typically, this registration would occur at the top of the application entry point. + + +#### Registration shortcuts + +If you are using a known `Promise` implementation, you can register your preference with a shortcut: + + +```js +require('any-promise/register/bluebird') +// -or- +import 'any-promise/register/q'; +``` + +Shortcut registration is the preferred registration method as it works in the browser and Node.js. It is also convenient for using with `import` and many test runners, that offer a `--require` flag: + +``` +$ ava --require=any-promise/register/bluebird test.js +``` + +Current known implementations include `bluebird`, `q`, `when`, `rsvp`, `es6-promise`, `promise`, `native-promise-only`, `pinkie`, `vow` and `lie`. If you are not using a known implementation, you can use another registration method described below. + + +#### Basic Registration + +As an alternative to registration shortcuts, you can call the `register` function with the preferred `Promise` implementation. The benefit of this approach is that a `Promise` library can be required by name without being a known implementation. This approach does NOT work in the browser. To use `any-promise` in the browser use either registration shortcuts or specify the `Promise` constructor using advanced registration (see below). + +```javascript +require('any-promise/register')('when') +// -or- require('any-promise/register')('any other ES6 compatible library (known or otherwise)') +``` + +This registration method will try to detect the `Promise` constructor from requiring the specified implementation. If you would like to specify your own constructor, see advanced registration. + + +#### Advanced Registration + +To use the browser version, you should either install a polyfill or explicitly register the `Promise` constructor: + +```javascript +require('any-promise/register')('bluebird', {Promise: require('bluebird')}) +``` + +This could also be used for registering a custom `Promise` implementation or subclass. + +Your preference will be registered globally, allowing a single registration even if multiple versions of `any-promise` are installed in the NPM dependency tree or are using multiple bundled JavaScript files in the browser. You can bypass this global registration in options: + + +```javascript +require('../register')('es6-promise', {Promise: require('es6-promise').Promise, global: false}) +``` + +### Library Usage + +To use any `Promise` constructor, simply require it: + +```javascript +var Promise = require('any-promise'); + +return Promise + .all([xf, f, init, coll]) + .then(fn); + + +return new Promise(function(resolve, reject){ + try { + resolve(item); + } catch(e){ + reject(e); + } +}); + +``` + +Except noted below, libraries using `any-promise` should only use [documented](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) functions as there is no guarantee which implementation will be chosen by the application author. Libraries should never call `register`, only the application user should call if desired. + + +#### Advanced Library Usage + +If your library needs to branch code based on the registered implementation, you can retrieve it using `var impl = require('any-promise/implementation')`, where `impl` will be the package name (`"bluebird"`, `"when"`, etc.) if registered, `"global.Promise"` if using the global version on Node.js, or `"window.Promise"` if using the browser version. You should always include a default case, as there is no guarantee what package may be registered. + + +### Support for old Node.js versions + +Node.js versions prior to `v0.12` may have contained buggy versions of the global `Promise`. For this reason, the global `Promise` is not loaded automatically for these old versions. If using `any-promise` in Node.js versions versions `<= v0.12`, the user should register a desired implementation. + +If an implementation is not registered, `any-promise` will attempt to discover an installed `Promise` implementation. If no implementation can be found, an error will be thrown on `require('any-promise')`. While the auto-discovery usually avoids errors, it is non-deterministic. It is recommended that the user always register a preferred implementation for older Node.js versions. + +This auto-discovery is only available for Node.jS versions prior to `v0.12`. Any newer versions will always default to the global `Promise` implementation. + +### Related + +- [any-observable](https://github.com/sindresorhus/any-observable) - `any-promise` for Observables. + diff --git a/node_modules/any-promise/implementation.d.ts b/node_modules/any-promise/implementation.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..c331a56a82482a6d294bc64af3a248748277227d --- /dev/null +++ b/node_modules/any-promise/implementation.d.ts @@ -0,0 +1,3 @@ +declare var implementation: string; + +export = implementation; diff --git a/node_modules/any-promise/implementation.js b/node_modules/any-promise/implementation.js new file mode 100644 index 0000000000000000000000000000000000000000..a45ae94dd5fb8bf2a501ffe11aee554527f9ec66 --- /dev/null +++ b/node_modules/any-promise/implementation.js @@ -0,0 +1 @@ +module.exports = require('./register')().implementation diff --git a/node_modules/any-promise/index.d.ts b/node_modules/any-promise/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9f646c5dc4ed09c42210f0f1ce9a970e7dea2788 --- /dev/null +++ b/node_modules/any-promise/index.d.ts @@ -0,0 +1,73 @@ +declare class Promise implements Promise.Thenable { + /** + * If you call resolve in the body of the callback passed to the constructor, + * your promise is fulfilled with result object passed to resolve. + * If you call reject your promise is rejected with the object passed to resolve. + * For consistency and debugging (eg stack traces), obj should be an instanceof Error. + * Any errors thrown in the constructor callback will be implicitly passed to reject(). + */ + constructor (callback: (resolve : (value?: R | Promise.Thenable) => void, reject: (error?: any) => void) => void); + + /** + * onFulfilled is called when/if "promise" resolves. onRejected is called when/if "promise" rejects. + * Both are optional, if either/both are omitted the next onFulfilled/onRejected in the chain is called. + * Both callbacks have a single parameter , the fulfillment value or rejection reason. + * "then" returns a new promise equivalent to the value you return from onFulfilled/onRejected after being passed through Promise.resolve. + * If an error is thrown in the callback, the returned promise rejects with that error. + * + * @param onFulfilled called when/if "promise" resolves + * @param onRejected called when/if "promise" rejects + */ + then (onFulfilled?: (value: R) => U | Promise.Thenable, onRejected?: (error: any) => U | Promise.Thenable): Promise; + then (onFulfilled?: (value: R) => U | Promise.Thenable, onRejected?: (error: any) => void): Promise; + + /** + * Sugar for promise.then(undefined, onRejected) + * + * @param onRejected called when/if "promise" rejects + */ + catch (onRejected?: (error: any) => U | Promise.Thenable): Promise; + + /** + * Make a new promise from the thenable. + * A thenable is promise-like in as far as it has a "then" method. + */ + static resolve (): Promise; + static resolve (value: R | Promise.Thenable): Promise; + + /** + * Make a promise that rejects to obj. For consistency and debugging (eg stack traces), obj should be an instanceof Error + */ + static reject (error: any): Promise; + + /** + * Make a promise that fulfills when every item in the array fulfills, and rejects if (and when) any item rejects. + * the array passed to all can be a mixture of promise-like objects and other objects. + * The fulfillment value is an array (in order) of fulfillment values. The rejection value is the first rejection value. + */ + static all (values: [T1 | Promise.Thenable, T2 | Promise.Thenable, T3 | Promise.Thenable, T4 | Promise.Thenable , T5 | Promise.Thenable, T6 | Promise.Thenable, T7 | Promise.Thenable, T8 | Promise.Thenable, T9 | Promise.Thenable, T10 | Promise.Thenable]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + static all (values: [T1 | Promise.Thenable, T2 | Promise.Thenable, T3 | Promise.Thenable, T4 | Promise.Thenable , T5 | Promise.Thenable, T6 | Promise.Thenable, T7 | Promise.Thenable, T8 | Promise.Thenable, T9 | Promise.Thenable]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + static all (values: [T1 | Promise.Thenable, T2 | Promise.Thenable, T3 | Promise.Thenable, T4 | Promise.Thenable , T5 | Promise.Thenable, T6 | Promise.Thenable, T7 | Promise.Thenable, T8 | Promise.Thenable]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + static all (values: [T1 | Promise.Thenable, T2 | Promise.Thenable, T3 | Promise.Thenable, T4 | Promise.Thenable , T5 | Promise.Thenable, T6 | Promise.Thenable, T7 | Promise.Thenable]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + static all (values: [T1 | Promise.Thenable, T2 | Promise.Thenable, T3 | Promise.Thenable, T4 | Promise.Thenable , T5 | Promise.Thenable, T6 | Promise.Thenable]): Promise<[T1, T2, T3, T4, T5, T6]>; + static all (values: [T1 | Promise.Thenable, T2 | Promise.Thenable, T3 | Promise.Thenable, T4 | Promise.Thenable , T5 | Promise.Thenable]): Promise<[T1, T2, T3, T4, T5]>; + static all (values: [T1 | Promise.Thenable, T2 | Promise.Thenable, T3 | Promise.Thenable, T4 | Promise.Thenable ]): Promise<[T1, T2, T3, T4]>; + static all (values: [T1 | Promise.Thenable, T2 | Promise.Thenable, T3 | Promise.Thenable]): Promise<[T1, T2, T3]>; + static all (values: [T1 | Promise.Thenable, T2 | Promise.Thenable]): Promise<[T1, T2]>; + static all (values: [T1 | Promise.Thenable]): Promise<[T1]>; + static all (values: Array>): Promise; + + /** + * Make a Promise that fulfills when any item fulfills, and rejects if any item rejects. + */ + static race (promises: (R | Promise.Thenable)[]): Promise; +} + +declare namespace Promise { + export interface Thenable { + then (onFulfilled?: (value: R) => U | Thenable, onRejected?: (error: any) => U | Thenable): Thenable; + then (onFulfilled?: (value: R) => U | Thenable, onRejected?: (error: any) => void): Thenable; + } +} + +export = Promise; diff --git a/node_modules/any-promise/index.js b/node_modules/any-promise/index.js new file mode 100644 index 0000000000000000000000000000000000000000..74b85483df4daea96f991abd720d03b61fffc1ed --- /dev/null +++ b/node_modules/any-promise/index.js @@ -0,0 +1 @@ +module.exports = require('./register')().Promise diff --git a/node_modules/any-promise/loader.js b/node_modules/any-promise/loader.js new file mode 100644 index 0000000000000000000000000000000000000000..e1649142b444df029f2aa89ddf4955a8289dfa6d --- /dev/null +++ b/node_modules/any-promise/loader.js @@ -0,0 +1,78 @@ +"use strict" + // global key for user preferred registration +var REGISTRATION_KEY = '@@any-promise/REGISTRATION', + // Prior registration (preferred or detected) + registered = null + +/** + * Registers the given implementation. An implementation must + * be registered prior to any call to `require("any-promise")`, + * typically on application load. + * + * If called with no arguments, will return registration in + * following priority: + * + * For Node.js: + * + * 1. Previous registration + * 2. global.Promise if node.js version >= 0.12 + * 3. Auto detected promise based on first sucessful require of + * known promise libraries. Note this is a last resort, as the + * loaded library is non-deterministic. node.js >= 0.12 will + * always use global.Promise over this priority list. + * 4. Throws error. + * + * For Browser: + * + * 1. Previous registration + * 2. window.Promise + * 3. Throws error. + * + * Options: + * + * Promise: Desired Promise constructor + * global: Boolean - Should the registration be cached in a global variable to + * allow cross dependency/bundle registration? (default true) + */ +module.exports = function(root, loadImplementation){ + return function register(implementation, opts){ + implementation = implementation || null + opts = opts || {} + // global registration unless explicitly {global: false} in options (default true) + var registerGlobal = opts.global !== false; + + // load any previous global registration + if(registered === null && registerGlobal){ + registered = root[REGISTRATION_KEY] || null + } + + if(registered !== null + && implementation !== null + && registered.implementation !== implementation){ + // Throw error if attempting to redefine implementation + throw new Error('any-promise already defined as "'+registered.implementation+ + '". You can only register an implementation before the first '+ + ' call to require("any-promise") and an implementation cannot be changed') + } + + if(registered === null){ + // use provided implementation + if(implementation !== null && typeof opts.Promise !== 'undefined'){ + registered = { + Promise: opts.Promise, + implementation: implementation + } + } else { + // require implementation if implementation is specified but not provided + registered = loadImplementation(implementation) + } + + if(registerGlobal){ + // register preference globally in case multiple installations + root[REGISTRATION_KEY] = registered + } + } + + return registered + } +} diff --git a/node_modules/any-promise/optional.js b/node_modules/any-promise/optional.js new file mode 100644 index 0000000000000000000000000000000000000000..f3889420b898e770e33e5710379c5e13c7a330fd --- /dev/null +++ b/node_modules/any-promise/optional.js @@ -0,0 +1,6 @@ +"use strict"; +try { + module.exports = require('./register')().Promise || null +} catch(e) { + module.exports = null +} diff --git a/node_modules/any-promise/package.json b/node_modules/any-promise/package.json new file mode 100644 index 0000000000000000000000000000000000000000..5baf14cf8c87abb445e62f9dcae03d7c588f1d28 --- /dev/null +++ b/node_modules/any-promise/package.json @@ -0,0 +1,45 @@ +{ + "name": "any-promise", + "version": "1.3.0", + "description": "Resolve any installed ES6 compatible promise", + "main": "index.js", + "typings": "index.d.ts", + "browser": { + "./register.js": "./register-shim.js" + }, + "scripts": { + "test": "ava" + }, + "repository": { + "type": "git", + "url": "https://github.com/kevinbeaty/any-promise" + }, + "keywords": [ + "promise", + "es6" + ], + "author": "Kevin Beaty", + "license": "MIT", + "bugs": { + "url": "https://github.com/kevinbeaty/any-promise/issues" + }, + "homepage": "http://github.com/kevinbeaty/any-promise", + "dependencies": {}, + "devDependencies": { + "ava": "^0.14.0", + "bluebird": "^3.0.0", + "es6-promise": "^3.0.0", + "is-promise": "^2.0.0", + "lie": "^3.0.0", + "mocha": "^2.0.0", + "native-promise-only": "^0.8.0", + "phantomjs-prebuilt": "^2.0.0", + "pinkie": "^2.0.0", + "promise": "^7.0.0", + "q": "^1.0.0", + "rsvp": "^3.0.0", + "vow": "^0.4.0", + "when": "^3.0.0", + "zuul": "^3.0.0" + } +} diff --git a/node_modules/any-promise/register-shim.js b/node_modules/any-promise/register-shim.js new file mode 100644 index 0000000000000000000000000000000000000000..9049405c0bfef05aa1a22a79078aa2fcb05ad4a8 --- /dev/null +++ b/node_modules/any-promise/register-shim.js @@ -0,0 +1,18 @@ +"use strict"; +module.exports = require('./loader')(window, loadImplementation) + +/** + * Browser specific loadImplementation. Always uses `window.Promise` + * + * To register a custom implementation, must register with `Promise` option. + */ +function loadImplementation(){ + if(typeof window.Promise === 'undefined'){ + throw new Error("any-promise browser requires a polyfill or explicit registration"+ + " e.g: require('any-promise/register/bluebird')") + } + return { + Promise: window.Promise, + implementation: 'window.Promise' + } +} diff --git a/node_modules/any-promise/register.d.ts b/node_modules/any-promise/register.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..97f2fc051080c9d1717337ede3f74e713f3ee1ad --- /dev/null +++ b/node_modules/any-promise/register.d.ts @@ -0,0 +1,17 @@ +import Promise = require('./index'); + +declare function register (module?: string, options?: register.Options): register.Register; + +declare namespace register { + export interface Register { + Promise: typeof Promise; + implementation: string; + } + + export interface Options { + Promise?: typeof Promise; + global?: boolean + } +} + +export = register; diff --git a/node_modules/any-promise/register.js b/node_modules/any-promise/register.js new file mode 100644 index 0000000000000000000000000000000000000000..255c6e2f516f62d788de60d29c2ecff07dd840f5 --- /dev/null +++ b/node_modules/any-promise/register.js @@ -0,0 +1,94 @@ +"use strict" +module.exports = require('./loader')(global, loadImplementation); + +/** + * Node.js version of loadImplementation. + * + * Requires the given implementation and returns the registration + * containing {Promise, implementation} + * + * If implementation is undefined or global.Promise, loads it + * Otherwise uses require + */ +function loadImplementation(implementation){ + var impl = null + + if(shouldPreferGlobalPromise(implementation)){ + // if no implementation or env specified use global.Promise + impl = { + Promise: global.Promise, + implementation: 'global.Promise' + } + } else if(implementation){ + // if implementation specified, require it + var lib = require(implementation) + impl = { + Promise: lib.Promise || lib, + implementation: implementation + } + } else { + // try to auto detect implementation. This is non-deterministic + // and should prefer other branches, but this is our last chance + // to load something without throwing error + impl = tryAutoDetect() + } + + if(impl === null){ + throw new Error('Cannot find any-promise implementation nor'+ + ' global.Promise. You must install polyfill or call'+ + ' require("any-promise/register") with your preferred'+ + ' implementation, e.g. require("any-promise/register/bluebird")'+ + ' on application load prior to any require("any-promise").') + } + + return impl +} + +/** + * Determines if the global.Promise should be preferred if an implementation + * has not been registered. + */ +function shouldPreferGlobalPromise(implementation){ + if(implementation){ + return implementation === 'global.Promise' + } else if(typeof global.Promise !== 'undefined'){ + // Load global promise if implementation not specified + // Versions < 0.11 did not have global Promise + // Do not use for version < 0.12 as version 0.11 contained buggy versions + var version = (/v(\d+)\.(\d+)\.(\d+)/).exec(process.version) + return !(version && +version[1] == 0 && +version[2] < 12) + } + + // do not have global.Promise or another implementation was specified + return false +} + +/** + * Look for common libs as last resort there is no guarantee that + * this will return a desired implementation or even be deterministic. + * The priority is also nearly arbitrary. We are only doing this + * for older versions of Node.js <0.12 that do not have a reasonable + * global.Promise implementation and we the user has not registered + * the preference. This preserves the behavior of any-promise <= 0.1 + * and may be deprecated or removed in the future + */ +function tryAutoDetect(){ + var libs = [ + "es6-promise", + "promise", + "native-promise-only", + "bluebird", + "rsvp", + "when", + "q", + "pinkie", + "lie", + "vow"] + var i = 0, len = libs.length + for(; i < len; i++){ + try { + return loadImplementation(libs[i]) + } catch(e){} + } + return null +} diff --git a/node_modules/any-promise/register/bluebird.d.ts b/node_modules/any-promise/register/bluebird.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..336ce12bb9106afdf843063ee67c0c1970f70d37 --- /dev/null +++ b/node_modules/any-promise/register/bluebird.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/bluebird.js b/node_modules/any-promise/register/bluebird.js new file mode 100644 index 0000000000000000000000000000000000000000..de0f87eb8e5099e3462608364a599c62e83eb550 --- /dev/null +++ b/node_modules/any-promise/register/bluebird.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('bluebird', {Promise: require('bluebird')}) diff --git a/node_modules/any-promise/register/es6-promise.d.ts b/node_modules/any-promise/register/es6-promise.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..336ce12bb9106afdf843063ee67c0c1970f70d37 --- /dev/null +++ b/node_modules/any-promise/register/es6-promise.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/es6-promise.js b/node_modules/any-promise/register/es6-promise.js new file mode 100644 index 0000000000000000000000000000000000000000..59bd55b761e004dea87e4afc212c8f584ac87dc6 --- /dev/null +++ b/node_modules/any-promise/register/es6-promise.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('es6-promise', {Promise: require('es6-promise').Promise}) diff --git a/node_modules/any-promise/register/lie.d.ts b/node_modules/any-promise/register/lie.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..336ce12bb9106afdf843063ee67c0c1970f70d37 --- /dev/null +++ b/node_modules/any-promise/register/lie.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/lie.js b/node_modules/any-promise/register/lie.js new file mode 100644 index 0000000000000000000000000000000000000000..7d305ca4006a0b53b8d8f8dc048fe5e2270d412f --- /dev/null +++ b/node_modules/any-promise/register/lie.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('lie', {Promise: require('lie')}) diff --git a/node_modules/any-promise/register/native-promise-only.d.ts b/node_modules/any-promise/register/native-promise-only.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..336ce12bb9106afdf843063ee67c0c1970f70d37 --- /dev/null +++ b/node_modules/any-promise/register/native-promise-only.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/native-promise-only.js b/node_modules/any-promise/register/native-promise-only.js new file mode 100644 index 0000000000000000000000000000000000000000..70a5a5e1dec6d467b8c656d734b53dac91005081 --- /dev/null +++ b/node_modules/any-promise/register/native-promise-only.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('native-promise-only', {Promise: require('native-promise-only')}) diff --git a/node_modules/any-promise/register/pinkie.d.ts b/node_modules/any-promise/register/pinkie.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..336ce12bb9106afdf843063ee67c0c1970f70d37 --- /dev/null +++ b/node_modules/any-promise/register/pinkie.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/pinkie.js b/node_modules/any-promise/register/pinkie.js new file mode 100644 index 0000000000000000000000000000000000000000..caaf98a5d04c78d8ba98b4084b87e1fb55776de2 --- /dev/null +++ b/node_modules/any-promise/register/pinkie.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('pinkie', {Promise: require('pinkie')}) diff --git a/node_modules/any-promise/register/promise.d.ts b/node_modules/any-promise/register/promise.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..336ce12bb9106afdf843063ee67c0c1970f70d37 --- /dev/null +++ b/node_modules/any-promise/register/promise.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/promise.js b/node_modules/any-promise/register/promise.js new file mode 100644 index 0000000000000000000000000000000000000000..746620d4e4748cadcf5fa1b9219bd764a1424b14 --- /dev/null +++ b/node_modules/any-promise/register/promise.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('promise', {Promise: require('promise')}) diff --git a/node_modules/any-promise/register/q.d.ts b/node_modules/any-promise/register/q.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..336ce12bb9106afdf843063ee67c0c1970f70d37 --- /dev/null +++ b/node_modules/any-promise/register/q.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/q.js b/node_modules/any-promise/register/q.js new file mode 100644 index 0000000000000000000000000000000000000000..0fc633a93f4ad2b07378afc998962288498aa481 --- /dev/null +++ b/node_modules/any-promise/register/q.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('q', {Promise: require('q').Promise}) diff --git a/node_modules/any-promise/register/rsvp.d.ts b/node_modules/any-promise/register/rsvp.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..336ce12bb9106afdf843063ee67c0c1970f70d37 --- /dev/null +++ b/node_modules/any-promise/register/rsvp.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/rsvp.js b/node_modules/any-promise/register/rsvp.js new file mode 100644 index 0000000000000000000000000000000000000000..02b13180d16be95d8a48d8b0f3765ed591d6977d --- /dev/null +++ b/node_modules/any-promise/register/rsvp.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('rsvp', {Promise: require('rsvp').Promise}) diff --git a/node_modules/any-promise/register/vow.d.ts b/node_modules/any-promise/register/vow.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..336ce12bb9106afdf843063ee67c0c1970f70d37 --- /dev/null +++ b/node_modules/any-promise/register/vow.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/vow.js b/node_modules/any-promise/register/vow.js new file mode 100644 index 0000000000000000000000000000000000000000..5b6868c4c988c069e670512f7964968a69799e87 --- /dev/null +++ b/node_modules/any-promise/register/vow.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('vow', {Promise: require('vow').Promise}) diff --git a/node_modules/any-promise/register/when.d.ts b/node_modules/any-promise/register/when.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..336ce12bb9106afdf843063ee67c0c1970f70d37 --- /dev/null +++ b/node_modules/any-promise/register/when.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/when.js b/node_modules/any-promise/register/when.js new file mode 100644 index 0000000000000000000000000000000000000000..d91c13d35e9b8ed5412012ab981442854db0b6ad --- /dev/null +++ b/node_modules/any-promise/register/when.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('when', {Promise: require('when').Promise}) diff --git a/node_modules/anymatch/LICENSE b/node_modules/anymatch/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..491766ca79a0382e5fc4e370c853201bb641e0d8 --- /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 0000000000000000000000000000000000000000..1dd67f53446ccbad8d17662fee69dd3c46531ba4 --- /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 0000000000000000000000000000000000000000..3ef7eaaddd8b5f479aeae707206d8163f82ada94 --- /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 0000000000000000000000000000000000000000..8eb73e9c9a61d2c642d3c5f44a2fe4cd6cd04615 --- /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 0000000000000000000000000000000000000000..2cb2307e49efc4770c0e8364e4387105162956dd --- /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/arg/LICENSE.md b/node_modules/arg/LICENSE.md new file mode 100644 index 0000000000000000000000000000000000000000..b708f872cb51eb69058c6f83864300a5ce4b0658 --- /dev/null +++ b/node_modules/arg/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2021 Vercel, Inc. + +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/arg/README.md b/node_modules/arg/README.md new file mode 100644 index 0000000000000000000000000000000000000000..6501df5980d25fb1dc4f3f569ae36192cdb8f5cb --- /dev/null +++ b/node_modules/arg/README.md @@ -0,0 +1,317 @@ +# Arg + +`arg` is an unopinionated, no-frills CLI argument parser. + +## Installation + +```bash +npm install arg +``` + +## Usage + +`arg()` takes either 1 or 2 arguments: + +1. Command line specification object (see below) +2. Parse options (_Optional_, defaults to `{permissive: false, argv: process.argv.slice(2), stopAtPositional: false}`) + +It returns an object with any values present on the command-line (missing options are thus +missing from the resulting object). Arg performs no validation/requirement checking - we +leave that up to the application. + +All parameters that aren't consumed by options (commonly referred to as "extra" parameters) +are added to `result._`, which is _always_ an array (even if no extra parameters are passed, +in which case an empty array is returned). + +```javascript +const arg = require('arg'); + +// `options` is an optional parameter +const args = arg( + spec, + (options = { permissive: false, argv: process.argv.slice(2) }) +); +``` + +For example: + +```console +$ node ./hello.js --verbose -vvv --port=1234 -n 'My name' foo bar --tag qux --tag=qix -- --foobar +``` + +```javascript +// hello.js +const arg = require('arg'); + +const args = arg({ + // Types + '--help': Boolean, + '--version': Boolean, + '--verbose': arg.COUNT, // Counts the number of times --verbose is passed + '--port': Number, // --port or --port= + '--name': String, // --name or --name= + '--tag': [String], // --tag or --tag= + + // Aliases + '-v': '--verbose', + '-n': '--name', // -n ; result is stored in --name + '--label': '--name' // --label or --label=; + // result is stored in --name +}); + +console.log(args); +/* +{ + _: ["foo", "bar", "--foobar"], + '--port': 1234, + '--verbose': 4, + '--name': "My name", + '--tag': ["qux", "qix"] +} +*/ +``` + +The values for each key=>value pair is either a type (function or [function]) or a string (indicating an alias). + +- In the case of a function, the string value of the argument's value is passed to it, + and the return value is used as the ultimate value. + +- In the case of an array, the only element _must_ be a type function. Array types indicate + that the argument may be passed multiple times, and as such the resulting value in the returned + object is an array with all of the values that were passed using the specified flag. + +- In the case of a string, an alias is established. If a flag is passed that matches the _key_, + then the _value_ is substituted in its place. + +Type functions are passed three arguments: + +1. The parameter value (always a string) +2. The parameter name (e.g. `--label`) +3. The previous value for the destination (useful for reduce-like operations or for supporting `-v` multiple times, etc.) + +This means the built-in `String`, `Number`, and `Boolean` type constructors "just work" as type functions. + +Note that `Boolean` and `[Boolean]` have special treatment - an option argument is _not_ consumed or passed, but instead `true` is +returned. These options are called "flags". + +For custom handlers that wish to behave as flags, you may pass the function through `arg.flag()`: + +```javascript +const arg = require('arg'); + +const argv = [ + '--foo', + 'bar', + '-ff', + 'baz', + '--foo', + '--foo', + 'qux', + '-fff', + 'qix' +]; + +function myHandler(value, argName, previousValue) { + /* `value` is always `true` */ + return 'na ' + (previousValue || 'batman!'); +} + +const args = arg( + { + '--foo': arg.flag(myHandler), + '-f': '--foo' + }, + { + argv + } +); + +console.log(args); +/* +{ + _: ['bar', 'baz', 'qux', 'qix'], + '--foo': 'na na na na na na na na batman!' +} +*/ +``` + +As well, `arg` supplies a helper argument handler called `arg.COUNT`, which equivalent to a `[Boolean]` argument's `.length` +property - effectively counting the number of times the boolean flag, denoted by the key, is passed on the command line.. +For example, this is how you could implement `ssh`'s multiple levels of verbosity (`-vvvv` being the most verbose). + +```javascript +const arg = require('arg'); + +const argv = ['-AAAA', '-BBBB']; + +const args = arg( + { + '-A': arg.COUNT, + '-B': [Boolean] + }, + { + argv + } +); + +console.log(args); +/* +{ + _: [], + '-A': 4, + '-B': [true, true, true, true] +} +*/ +``` + +### Options + +If a second parameter is specified and is an object, it specifies parsing options to modify the behavior of `arg()`. + +#### `argv` + +If you have already sliced or generated a number of raw arguments to be parsed (as opposed to letting `arg` +slice them from `process.argv`) you may specify them in the `argv` option. + +For example: + +```javascript +const args = arg( + { + '--foo': String + }, + { + argv: ['hello', '--foo', 'world'] + } +); +``` + +results in: + +```javascript +const args = { + _: ['hello'], + '--foo': 'world' +}; +``` + +#### `permissive` + +When `permissive` set to `true`, `arg` will push any unknown arguments +onto the "extra" argument array (`result._`) instead of throwing an error about +an unknown flag. + +For example: + +```javascript +const arg = require('arg'); + +const argv = [ + '--foo', + 'hello', + '--qux', + 'qix', + '--bar', + '12345', + 'hello again' +]; + +const args = arg( + { + '--foo': String, + '--bar': Number + }, + { + argv, + permissive: true + } +); +``` + +results in: + +```javascript +const args = { + _: ['--qux', 'qix', 'hello again'], + '--foo': 'hello', + '--bar': 12345 +}; +``` + +#### `stopAtPositional` + +When `stopAtPositional` is set to `true`, `arg` will halt parsing at the first +positional argument. + +For example: + +```javascript +const arg = require('arg'); + +const argv = ['--foo', 'hello', '--bar']; + +const args = arg( + { + '--foo': Boolean, + '--bar': Boolean + }, + { + argv, + stopAtPositional: true + } +); +``` + +results in: + +```javascript +const args = { + _: ['hello', '--bar'], + '--foo': true +}; +``` + +### Errors + +Some errors that `arg` throws provide a `.code` property in order to aid in recovering from user error, or to +differentiate between user error and developer error (bug). + +##### ARG_UNKNOWN_OPTION + +If an unknown option (not defined in the spec object) is passed, an error with code `ARG_UNKNOWN_OPTION` will be thrown: + +```js +// cli.js +try { + require('arg')({ '--hi': String }); +} catch (err) { + if (err.code === 'ARG_UNKNOWN_OPTION') { + console.log(err.message); + } else { + throw err; + } +} +``` + +```shell +node cli.js --extraneous true +Unknown or unexpected option: --extraneous +``` + +# FAQ + +A few questions and answers that have been asked before: + +### How do I require an argument with `arg`? + +Do the assertion yourself, such as: + +```javascript +const args = arg({ '--name': String }); + +if (!args['--name']) throw new Error('missing required argument: --name'); +``` + +# License + +Released under the [MIT License](LICENSE.md). diff --git a/node_modules/arg/index.d.ts b/node_modules/arg/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..44f9f354ba3354257f701bbcf669dc5fae45792a --- /dev/null +++ b/node_modules/arg/index.d.ts @@ -0,0 +1,44 @@ +declare function arg( + spec: T, + options?: arg.Options +): arg.Result; + +declare namespace arg { + export const flagSymbol: unique symbol; + + export function flag(fn: T): T & { [arg.flagSymbol]: true }; + + export const COUNT: Handler & { [arg.flagSymbol]: true }; + + export type Handler = ( + value: string, + name: string, + previousValue?: T + ) => T; + + export class ArgError extends Error { + constructor(message: string, code: string); + + code: string; + } + + export interface Spec { + [key: string]: string | Handler | [Handler]; + } + + export type Result = { _: string[] } & { + [K in keyof T]?: T[K] extends Handler + ? ReturnType + : T[K] extends [Handler] + ? Array> + : never; + }; + + export interface Options { + argv?: string[]; + permissive?: boolean; + stopAtPositional?: boolean; + } +} + +export = arg; diff --git a/node_modules/arg/index.js b/node_modules/arg/index.js new file mode 100644 index 0000000000000000000000000000000000000000..3f60f4cadc95780cfbb37bf27e972a864c69cbff --- /dev/null +++ b/node_modules/arg/index.js @@ -0,0 +1,195 @@ +const flagSymbol = Symbol('arg flag'); + +class ArgError extends Error { + constructor(msg, code) { + super(msg); + this.name = 'ArgError'; + this.code = code; + + Object.setPrototypeOf(this, ArgError.prototype); + } +} + +function arg( + opts, + { + argv = process.argv.slice(2), + permissive = false, + stopAtPositional = false + } = {} +) { + if (!opts) { + throw new ArgError( + 'argument specification object is required', + 'ARG_CONFIG_NO_SPEC' + ); + } + + const result = { _: [] }; + + const aliases = {}; + const handlers = {}; + + for (const key of Object.keys(opts)) { + if (!key) { + throw new ArgError( + 'argument key cannot be an empty string', + 'ARG_CONFIG_EMPTY_KEY' + ); + } + + if (key[0] !== '-') { + throw new ArgError( + `argument key must start with '-' but found: '${key}'`, + 'ARG_CONFIG_NONOPT_KEY' + ); + } + + if (key.length === 1) { + throw new ArgError( + `argument key must have a name; singular '-' keys are not allowed: ${key}`, + 'ARG_CONFIG_NONAME_KEY' + ); + } + + if (typeof opts[key] === 'string') { + aliases[key] = opts[key]; + continue; + } + + let type = opts[key]; + let isFlag = false; + + if ( + Array.isArray(type) && + type.length === 1 && + typeof type[0] === 'function' + ) { + const [fn] = type; + type = (value, name, prev = []) => { + prev.push(fn(value, name, prev[prev.length - 1])); + return prev; + }; + isFlag = fn === Boolean || fn[flagSymbol] === true; + } else if (typeof type === 'function') { + isFlag = type === Boolean || type[flagSymbol] === true; + } else { + throw new ArgError( + `type missing or not a function or valid array type: ${key}`, + 'ARG_CONFIG_VAD_TYPE' + ); + } + + if (key[1] !== '-' && key.length > 2) { + throw new ArgError( + `short argument keys (with a single hyphen) must have only one character: ${key}`, + 'ARG_CONFIG_SHORTOPT_TOOLONG' + ); + } + + handlers[key] = [type, isFlag]; + } + + for (let i = 0, len = argv.length; i < len; i++) { + const wholeArg = argv[i]; + + if (stopAtPositional && result._.length > 0) { + result._ = result._.concat(argv.slice(i)); + break; + } + + if (wholeArg === '--') { + result._ = result._.concat(argv.slice(i + 1)); + break; + } + + if (wholeArg.length > 1 && wholeArg[0] === '-') { + /* eslint-disable operator-linebreak */ + const separatedArguments = + wholeArg[1] === '-' || wholeArg.length === 2 + ? [wholeArg] + : wholeArg + .slice(1) + .split('') + .map((a) => `-${a}`); + /* eslint-enable operator-linebreak */ + + for (let j = 0; j < separatedArguments.length; j++) { + const arg = separatedArguments[j]; + const [originalArgName, argStr] = + arg[1] === '-' ? arg.split(/=(.*)/, 2) : [arg, undefined]; + + let argName = originalArgName; + while (argName in aliases) { + argName = aliases[argName]; + } + + if (!(argName in handlers)) { + if (permissive) { + result._.push(arg); + continue; + } else { + throw new ArgError( + `unknown or unexpected option: ${originalArgName}`, + 'ARG_UNKNOWN_OPTION' + ); + } + } + + const [type, isFlag] = handlers[argName]; + + if (!isFlag && j + 1 < separatedArguments.length) { + throw new ArgError( + `option requires argument (but was followed by another short argument): ${originalArgName}`, + 'ARG_MISSING_REQUIRED_SHORTARG' + ); + } + + if (isFlag) { + result[argName] = type(true, argName, result[argName]); + } else if (argStr === undefined) { + if ( + argv.length < i + 2 || + (argv[i + 1].length > 1 && + argv[i + 1][0] === '-' && + !( + argv[i + 1].match(/^-?\d*(\.(?=\d))?\d*$/) && + (type === Number || + // eslint-disable-next-line no-undef + (typeof BigInt !== 'undefined' && type === BigInt)) + )) + ) { + const extended = + originalArgName === argName ? '' : ` (alias for ${argName})`; + throw new ArgError( + `option requires argument: ${originalArgName}${extended}`, + 'ARG_MISSING_REQUIRED_LONGARG' + ); + } + + result[argName] = type(argv[i + 1], argName, result[argName]); + ++i; + } else { + result[argName] = type(argStr, argName, result[argName]); + } + } + } else { + result._.push(wholeArg); + } + } + + return result; +} + +arg.flag = (fn) => { + fn[flagSymbol] = true; + return fn; +}; + +// Utility types +arg.COUNT = arg.flag((v, name, existingCount) => (existingCount || 0) + 1); + +// Expose error class +arg.ArgError = ArgError; + +module.exports = arg; diff --git a/node_modules/arg/package.json b/node_modules/arg/package.json new file mode 100644 index 0000000000000000000000000000000000000000..47368d76d2b916bb003ec35e0ff6162d3f23768f --- /dev/null +++ b/node_modules/arg/package.json @@ -0,0 +1,28 @@ +{ + "name": "arg", + "version": "5.0.2", + "description": "Unopinionated, no-frills CLI argument parser", + "main": "index.js", + "types": "index.d.ts", + "repository": "vercel/arg", + "author": "Josh Junon ", + "license": "MIT", + "files": [ + "index.js", + "index.d.ts" + ], + "scripts": { + "test": "WARN_EXIT=1 jest --coverage -w 2" + }, + "devDependencies": { + "chai": "^4.1.1", + "jest": "^27.0.6", + "prettier": "^2.3.2" + }, + "prettier": { + "arrowParens": "always", + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "none" + } +} diff --git a/node_modules/balanced-match/.github/FUNDING.yml b/node_modules/balanced-match/.github/FUNDING.yml new file mode 100644 index 0000000000000000000000000000000000000000..cea8b16e9edc40b78b839e97f7d4b174ada0b41f --- /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 0000000000000000000000000000000000000000..2cdc8e4148cc0aa1f788b25dbec4b22878644cdf --- /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 0000000000000000000000000000000000000000..d2a48b6b49f2cf17358262f911b997121d1c2a31 --- /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 0000000000000000000000000000000000000000..c67a64608df7f4d8e126c0a8eff2cc4a3d837e71 --- /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 0000000000000000000000000000000000000000..ce6073e0403b5a9aeef19a91624ad0256f5e61b8 --- /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/binary-extensions/binary-extensions.json b/node_modules/binary-extensions/binary-extensions.json new file mode 100644 index 0000000000000000000000000000000000000000..4aab3837893a2c70f31f9dd4d5fa856a69fd481c --- /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 0000000000000000000000000000000000000000..94a248c2bcff7d66060ed1968cd12897d340b4a0 --- /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 0000000000000000000000000000000000000000..f469ac5fb0fe5fd6cbd8816db9257c718d8d2c85 --- /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 0000000000000000000000000000000000000000..d46e46886711415a0a1064443c20e8a3704714c3 --- /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 0000000000000000000000000000000000000000..401b1c731bcd3ed3193b94d7cbb81bd3b4a1dd47 --- /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 0000000000000000000000000000000000000000..c4d3641735b91bde0b706bf4f039436934e4fb0c --- /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 0000000000000000000000000000000000000000..3e25dd835e08b67c15d935a7cf2182865a61bc5f --- /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/brace-expansion/LICENSE b/node_modules/brace-expansion/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..de3226673c3874b1c6506db022393c753495655c --- /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 0000000000000000000000000000000000000000..6b4e0e16409152451eb2b55e083a88e3396c23b1 --- /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 0000000000000000000000000000000000000000..0478be81eabc2b140c2405999e46ba98214461eb --- /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 0000000000000000000000000000000000000000..a18faa8fd67b8265a4c01909f8f16d55a46bec32 --- /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 0000000000000000000000000000000000000000..36f798b004e0df3fdd0edd130fbe87849739c1e4 --- /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 0000000000000000000000000000000000000000..d32ab4426a5f6bd7986ed80df4073bbf997903d1 --- /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 0000000000000000000000000000000000000000..cba2f600d2e6efad9cb14279a04d7e3ac6cd6cce --- /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 0000000000000000000000000000000000000000..0eee0f567049b8773a065a2a8d344722f2e9b789 --- /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 0000000000000000000000000000000000000000..3f52e346f618f8916ec49a15ffbfbd206b7e93fa --- /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/camelcase-css/README.md b/node_modules/camelcase-css/README.md new file mode 100644 index 0000000000000000000000000000000000000000..caaa817f918bcd0857c5f1b35af656e195cbe06b --- /dev/null +++ b/node_modules/camelcase-css/README.md @@ -0,0 +1,27 @@ +# camelcase-css [![NPM Version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] + +> Convert a kebab-cased CSS property into a camelCased DOM property. + + +## Installation +[Node.js](http://nodejs.org/) `>= 6` is required. Type this at the command line: +```shell +npm install camelcase-css +``` + + +## Usage +```js +const camelCaseCSS = require('camelcase-css'); + +camelCaseCSS('-webkit-border-radius'); //-> WebkitBorderRadius +camelCaseCSS('-moz-border-radius'); //-> MozBorderRadius +camelCaseCSS('-ms-border-radius'); //-> msBorderRadius +camelCaseCSS('border-radius'); //-> borderRadius +``` + + +[npm-image]: https://img.shields.io/npm/v/camelcase-css.svg +[npm-url]: https://npmjs.org/package/camelcase-css +[travis-image]: https://img.shields.io/travis/stevenvachon/camelcase-css.svg +[travis-url]: https://travis-ci.org/stevenvachon/camelcase-css diff --git a/node_modules/camelcase-css/index-es5.js b/node_modules/camelcase-css/index-es5.js new file mode 100644 index 0000000000000000000000000000000000000000..48ef078122a9123166e29e370634f7487803fb6b --- /dev/null +++ b/node_modules/camelcase-css/index-es5.js @@ -0,0 +1,24 @@ +"use strict"; + +var pattern = /-(\w|$)/g; + +var callback = function callback(dashChar, char) { + return char.toUpperCase(); +}; + +var camelCaseCSS = function camelCaseCSS(property) { + property = property.toLowerCase(); + + // NOTE :: IE8's "styleFloat" is intentionally not supported + if (property === "float") { + return "cssFloat"; + } + // Microsoft vendor-prefixes are uniquely cased + else if (property.charCodeAt(0) === 45&& property.charCodeAt(1) === 109&& property.charCodeAt(2) === 115&& property.charCodeAt(3) === 45) { + return property.substr(1).replace(pattern, callback); + } else { + return property.replace(pattern, callback); + } +}; + +module.exports = camelCaseCSS; diff --git a/node_modules/camelcase-css/index.js b/node_modules/camelcase-css/index.js new file mode 100644 index 0000000000000000000000000000000000000000..c9d1f1b662dd35ede8e879b02d33c6da51a1022a --- /dev/null +++ b/node_modules/camelcase-css/index.js @@ -0,0 +1,30 @@ +"use strict"; +const pattern = /-(\w|$)/g; + +const callback = (dashChar, char) => char.toUpperCase(); + + + +const camelCaseCSS = property => +{ + property = property.toLowerCase(); + + // NOTE :: IE8's "styleFloat" is intentionally not supported + if (property === "float") + { + return "cssFloat"; + } + // Microsoft vendor-prefixes are uniquely cased + else if (property.startsWith("-ms-")) + { + return property.substr(1).replace(pattern, callback); + } + else + { + return property.replace(pattern, callback); + } +}; + + + +module.exports = camelCaseCSS; diff --git a/node_modules/camelcase-css/license b/node_modules/camelcase-css/license new file mode 100644 index 0000000000000000000000000000000000000000..b760007aedf42ef8a6ef5566dc373def2feb6504 --- /dev/null +++ b/node_modules/camelcase-css/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Steven Vachon (svachon.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-css/package.json b/node_modules/camelcase-css/package.json new file mode 100644 index 0000000000000000000000000000000000000000..61dc51a8017e349403fd97011ac239ca98797270 --- /dev/null +++ b/node_modules/camelcase-css/package.json @@ -0,0 +1,34 @@ +{ + "name": "camelcase-css", + "description": "Convert a kebab-cased CSS property into a camelCased DOM property.", + "version": "2.0.1", + "license": "MIT", + "author": "Steven Vachon (https://www.svachon.com/)", + "repository": "stevenvachon/camelcase-css", + "browser": "index-es5.js", + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-plugin-optimize-starts-with": "^1.0.1", + "babel-preset-env": "^1.7.0", + "chai": "^4.1.2", + "mocha": "^5.2.0" + }, + "engines": { + "node": ">= 6" + }, + "scripts": { + "pretest": "babel index.js --out-file=index-es5.js --presets=env --plugins=optimize-starts-with", + "test": "mocha test.js --check-leaks --bail" + }, + "files": [ + "index.js", + "index-es5.js" + ], + "keywords": [ + "camelcase", + "case", + "css", + "dom" + ] +} diff --git a/node_modules/chokidar/LICENSE b/node_modules/chokidar/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..fa9162b51acb582ac3b63c75552db2ca9b9d9bb2 --- /dev/null +++ b/node_modules/chokidar/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker + +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/chokidar/README.md b/node_modules/chokidar/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d6a57fd9c58dec945cc830267499fc5f6448eeea --- /dev/null +++ b/node_modules/chokidar/README.md @@ -0,0 +1,308 @@ +# Chokidar [![Weekly downloads](https://img.shields.io/npm/dw/chokidar.svg)](https://github.com/paulmillr/chokidar) [![Yearly downloads](https://img.shields.io/npm/dy/chokidar.svg)](https://github.com/paulmillr/chokidar) + +> Minimal and efficient cross-platform file watching library + +[![NPM](https://nodei.co/npm/chokidar.png)](https://www.npmjs.com/package/chokidar) + +## Why? + +Node.js `fs.watch`: + +* Doesn't report filenames on MacOS. +* Doesn't report events at all when using editors like Sublime on MacOS. +* Often reports events twice. +* Emits most changes as `rename`. +* Does not provide an easy way to recursively watch file trees. +* Does not support recursive watching on Linux. + +Node.js `fs.watchFile`: + +* Almost as bad at event handling. +* Also does not provide any recursive watching. +* Results in high CPU utilization. + +Chokidar resolves these problems. + +Initially made for **[Brunch](https://brunch.io/)** (an ultra-swift web app build tool), it is now used in +[Microsoft's Visual Studio Code](https://github.com/microsoft/vscode), +[gulp](https://github.com/gulpjs/gulp/), +[karma](https://karma-runner.github.io/), +[PM2](https://github.com/Unitech/PM2), +[browserify](http://browserify.org/), +[webpack](https://webpack.github.io/), +[BrowserSync](https://www.browsersync.io/), +and [many others](https://www.npmjs.com/browse/depended/chokidar). +It has proven itself in production environments. + +Version 3 is out! Check out our blog post about it: [Chokidar 3: How to save 32TB of traffic every week](https://paulmillr.com/posts/chokidar-3-save-32tb-of-traffic/) + +## How? + +Chokidar does still rely on the Node.js core `fs` module, but when using +`fs.watch` and `fs.watchFile` for watching, it normalizes the events it +receives, often checking for truth by getting file stats and/or dir contents. + +On MacOS, chokidar by default uses a native extension exposing the Darwin +`FSEvents` API. This provides very efficient recursive watching compared with +implementations like `kqueue` available on most \*nix platforms. Chokidar still +does have to do some work to normalize the events received that way as well. + +On most other platforms, the `fs.watch`-based implementation is the default, which +avoids polling and keeps CPU usage down. Be advised that chokidar will initiate +watchers recursively for everything within scope of the paths that have been +specified, so be judicious about not wasting system resources by watching much +more than needed. + +## Getting started + +Install with npm: + +```sh +npm install chokidar +``` + +Then `require` and use it in your code: + +```javascript +const chokidar = require('chokidar'); + +// One-liner for current directory +chokidar.watch('.').on('all', (event, path) => { + console.log(event, path); +}); +``` + +## API + +```javascript +// Example of a more typical implementation structure + +// Initialize watcher. +const watcher = chokidar.watch('file, dir, glob, or array', { + ignored: /(^|[\/\\])\../, // ignore dotfiles + persistent: true +}); + +// Something to use when events are received. +const log = console.log.bind(console); +// Add event listeners. +watcher + .on('add', path => log(`File ${path} has been added`)) + .on('change', path => log(`File ${path} has been changed`)) + .on('unlink', path => log(`File ${path} has been removed`)); + +// More possible events. +watcher + .on('addDir', path => log(`Directory ${path} has been added`)) + .on('unlinkDir', path => log(`Directory ${path} has been removed`)) + .on('error', error => log(`Watcher error: ${error}`)) + .on('ready', () => log('Initial scan complete. Ready for changes')) + .on('raw', (event, path, details) => { // internal + log('Raw event info:', event, path, details); + }); + +// 'add', 'addDir' and 'change' events also receive stat() results as second +// argument when available: https://nodejs.org/api/fs.html#fs_class_fs_stats +watcher.on('change', (path, stats) => { + if (stats) console.log(`File ${path} changed size to ${stats.size}`); +}); + +// Watch new files. +watcher.add('new-file'); +watcher.add(['new-file-2', 'new-file-3', '**/other-file*']); + +// Get list of actual paths being watched on the filesystem +var watchedPaths = watcher.getWatched(); + +// Un-watch some files. +await watcher.unwatch('new-file*'); + +// Stop watching. +// The method is async! +watcher.close().then(() => console.log('closed')); + +// Full list of options. See below for descriptions. +// Do not use this example! +chokidar.watch('file', { + persistent: true, + + ignored: '*.txt', + ignoreInitial: false, + followSymlinks: true, + cwd: '.', + disableGlobbing: false, + + usePolling: false, + interval: 100, + binaryInterval: 300, + alwaysStat: false, + depth: 99, + awaitWriteFinish: { + stabilityThreshold: 2000, + pollInterval: 100 + }, + + ignorePermissionErrors: false, + atomic: true // or a custom 'atomicity delay', in milliseconds (default 100) +}); + +``` + +`chokidar.watch(paths, [options])` + +* `paths` (string or array of strings). Paths to files, dirs to be watched +recursively, or glob patterns. + - Note: globs must not contain windows separators (`\`), + because that's how they work by the standard — + you'll need to replace them with forward slashes (`/`). + - Note 2: for additional glob documentation, check out low-level + library: [picomatch](https://github.com/micromatch/picomatch). +* `options` (object) Options object as defined below: + +#### Persistence + +* `persistent` (default: `true`). Indicates whether the process +should continue to run as long as files are being watched. If set to +`false` when using `fsevents` to watch, no more events will be emitted +after `ready`, even if the process continues to run. + +#### Path filtering + +* `ignored` ([anymatch](https://github.com/es128/anymatch)-compatible definition) +Defines files/paths to be ignored. The whole relative or absolute path is +tested, not just filename. If a function with two arguments is provided, it +gets called twice per path - once with a single argument (the path), second +time with two arguments (the path and the +[`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) +object of that path). +* `ignoreInitial` (default: `false`). If set to `false` then `add`/`addDir` events are also emitted for matching paths while +instantiating the watching as chokidar discovers these file paths (before the `ready` event). +* `followSymlinks` (default: `true`). When `false`, only the +symlinks themselves will be watched for changes instead of following +the link references and bubbling events through the link's path. +* `cwd` (no default). The base directory from which watch `paths` are to be +derived. Paths emitted with events will be relative to this. +* `disableGlobbing` (default: `false`). If set to `true` then the strings passed to `.watch()` and `.add()` are treated as +literal path names, even if they look like globs. + +#### Performance + +* `usePolling` (default: `false`). +Whether to use fs.watchFile (backed by polling), or fs.watch. If polling +leads to high CPU utilization, consider setting this to `false`. It is +typically necessary to **set this to `true` to successfully watch files over +a network**, and it may be necessary to successfully watch files in other +non-standard situations. Setting to `true` explicitly on MacOS overrides the +`useFsEvents` default. You may also set the CHOKIDAR_USEPOLLING env variable +to true (1) or false (0) in order to override this option. +* _Polling-specific settings_ (effective when `usePolling: true`) + * `interval` (default: `100`). Interval of file system polling, in milliseconds. You may also + set the CHOKIDAR_INTERVAL env variable to override this option. + * `binaryInterval` (default: `300`). Interval of file system + polling for binary files. + ([see list of binary extensions](https://github.com/sindresorhus/binary-extensions/blob/master/binary-extensions.json)) +* `useFsEvents` (default: `true` on MacOS). Whether to use the +`fsevents` watching interface if available. When set to `true` explicitly +and `fsevents` is available this supercedes the `usePolling` setting. When +set to `false` on MacOS, `usePolling: true` becomes the default. +* `alwaysStat` (default: `false`). If relying upon the +[`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) +object that may get passed with `add`, `addDir`, and `change` events, set +this to `true` to ensure it is provided even in cases where it wasn't +already available from the underlying watch events. +* `depth` (default: `undefined`). If set, limits how many levels of +subdirectories will be traversed. +* `awaitWriteFinish` (default: `false`). +By default, the `add` event will fire when a file first appears on disk, before +the entire file has been written. Furthermore, in some cases some `change` +events will be emitted while the file is being written. In some cases, +especially when watching for large files there will be a need to wait for the +write operation to finish before responding to a file creation or modification. +Setting `awaitWriteFinish` to `true` (or a truthy value) will poll file size, +holding its `add` and `change` events until the size does not change for a +configurable amount of time. The appropriate duration setting is heavily +dependent on the OS and hardware. For accurate detection this parameter should +be relatively high, making file watching much less responsive. +Use with caution. + * *`options.awaitWriteFinish` can be set to an object in order to adjust + timing params:* + * `awaitWriteFinish.stabilityThreshold` (default: 2000). Amount of time in + milliseconds for a file size to remain constant before emitting its event. + * `awaitWriteFinish.pollInterval` (default: 100). File size polling interval, in milliseconds. + +#### Errors + +* `ignorePermissionErrors` (default: `false`). Indicates whether to watch files +that don't have read permissions if possible. If watching fails due to `EPERM` +or `EACCES` with this set to `true`, the errors will be suppressed silently. +* `atomic` (default: `true` if `useFsEvents` and `usePolling` are `false`). +Automatically filters out artifacts that occur when using editors that use +"atomic writes" instead of writing directly to the source file. If a file is +re-added within 100 ms of being deleted, Chokidar emits a `change` event +rather than `unlink` then `add`. If the default of 100 ms does not work well +for you, you can override it by setting `atomic` to a custom value, in +milliseconds. + +### Methods & Events + +`chokidar.watch()` produces an instance of `FSWatcher`. Methods of `FSWatcher`: + +* `.add(path / paths)`: Add files, directories, or glob patterns for tracking. +Takes an array of strings or just one string. +* `.on(event, callback)`: Listen for an FS event. +Available events: `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `ready`, +`raw`, `error`. +Additionally `all` is available which gets emitted with the underlying event +name and path for every event other than `ready`, `raw`, and `error`. `raw` is internal, use it carefully. +* `.unwatch(path / paths)`: Stop watching files, directories, or glob patterns. +Takes an array of strings or just one string. +* `.close()`: **async** Removes all listeners from watched files. Asynchronous, returns Promise. Use with `await` to ensure bugs don't happen. +* `.getWatched()`: Returns an object representing all the paths on the file +system being watched by this `FSWatcher` instance. The object's keys are all the +directories (using absolute paths unless the `cwd` option was used), and the +values are arrays of the names of the items contained in each directory. + +## CLI + +If you need a CLI interface for your file watching, check out +[chokidar-cli](https://github.com/open-cli-tools/chokidar-cli), allowing you to +execute a command on each change, or get a stdio stream of change events. + +## Install Troubleshooting + +* `npm WARN optional dep failed, continuing fsevents@n.n.n` + * This message is normal part of how `npm` handles optional dependencies and is + not indicative of a problem. Even if accompanied by other related error messages, + Chokidar should function properly. + +* `TypeError: fsevents is not a constructor` + * Update chokidar by doing `rm -rf node_modules package-lock.json yarn.lock && npm install`, or update your dependency that uses chokidar. + +* Chokidar is producing `ENOSP` error on Linux, like this: + * `bash: cannot set terminal process group (-1): Inappropriate ioctl for device bash: no job control in this shell` + `Error: watch /home/ ENOSPC` + * This means Chokidar ran out of file handles and you'll need to increase their count by executing the following command in Terminal: + `echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p` + +## Changelog + +For more detailed changelog, see [`full_changelog.md`](.github/full_changelog.md). +- **v3.5 (Jan 6, 2021):** Support for ARM Macs with Apple Silicon. Fixes for deleted symlinks. +- **v3.4 (Apr 26, 2020):** Support for directory-based symlinks. Fixes for macos file replacement. +- **v3.3 (Nov 2, 2019):** `FSWatcher#close()` method became async. That fixes IO race conditions related to close method. +- **v3.2 (Oct 1, 2019):** Improve Linux RAM usage by 50%. Race condition fixes. Windows glob fixes. Improve stability by using tight range of dependency versions. +- **v3.1 (Sep 16, 2019):** dotfiles are no longer filtered out by default. Use `ignored` option if needed. Improve initial Linux scan time by 50%. +- **v3 (Apr 30, 2019):** massive CPU & RAM consumption improvements; reduces deps / package size by a factor of 17x and bumps Node.js requirement to v8.16 and higher. +- **v2 (Dec 29, 2017):** Globs are now posix-style-only; without windows support. Tons of bugfixes. +- **v1 (Apr 7, 2015):** Glob support, symlink support, tons of bugfixes. Node 0.8+ is supported +- **v0.1 (Apr 20, 2012):** Initial release, extracted from [Brunch](https://github.com/brunch/brunch/blob/9847a065aea300da99bd0753f90354cde9de1261/src/helpers.coffee#L66) + +## Also + +Why was chokidar named this way? What's the meaning behind it? + +>Chowkidar is a transliteration of a Hindi word meaning 'watchman, gatekeeper', चौकीदार. This ultimately comes from Sanskrit _ चतुष्क_ (crossway, quadrangle, consisting-of-four). + +## License + +MIT (c) Paul Miller (), see [LICENSE](LICENSE) file. diff --git a/node_modules/chokidar/index.js b/node_modules/chokidar/index.js new file mode 100644 index 0000000000000000000000000000000000000000..ed4b6d5b6cbabee76c879c6eedcc7bf6ba46d38d --- /dev/null +++ b/node_modules/chokidar/index.js @@ -0,0 +1,973 @@ +'use strict'; + +const { EventEmitter } = require('events'); +const fs = require('fs'); +const sysPath = require('path'); +const { promisify } = require('util'); +const readdirp = require('readdirp'); +const anymatch = require('anymatch').default; +const globParent = require('glob-parent'); +const isGlob = require('is-glob'); +const braces = require('braces'); +const normalizePath = require('normalize-path'); + +const NodeFsHandler = require('./lib/nodefs-handler'); +const FsEventsHandler = require('./lib/fsevents-handler'); +const { + EV_ALL, + EV_READY, + EV_ADD, + EV_CHANGE, + EV_UNLINK, + EV_ADD_DIR, + EV_UNLINK_DIR, + EV_RAW, + EV_ERROR, + + STR_CLOSE, + STR_END, + + BACK_SLASH_RE, + DOUBLE_SLASH_RE, + SLASH_OR_BACK_SLASH_RE, + DOT_RE, + REPLACER_RE, + + SLASH, + SLASH_SLASH, + BRACE_START, + BANG, + ONE_DOT, + TWO_DOTS, + GLOBSTAR, + SLASH_GLOBSTAR, + ANYMATCH_OPTS, + STRING_TYPE, + FUNCTION_TYPE, + EMPTY_STR, + EMPTY_FN, + + isWindows, + isMacos, + isIBMi +} = require('./lib/constants'); + +const stat = promisify(fs.stat); +const readdir = promisify(fs.readdir); + +/** + * @typedef {String} Path + * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName + * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType + */ + +/** + * + * @typedef {Object} WatchHelpers + * @property {Boolean} followSymlinks + * @property {'stat'|'lstat'} statMethod + * @property {Path} path + * @property {Path} watchPath + * @property {Function} entryPath + * @property {Boolean} hasGlob + * @property {Object} globFilter + * @property {Function} filterPath + * @property {Function} filterDir + */ + +const arrify = (value = []) => Array.isArray(value) ? value : [value]; +const flatten = (list, result = []) => { + list.forEach(item => { + if (Array.isArray(item)) { + flatten(item, result); + } else { + result.push(item); + } + }); + return result; +}; + +const unifyPaths = (paths_) => { + /** + * @type {Array} + */ + const paths = flatten(arrify(paths_)); + if (!paths.every(p => typeof p === STRING_TYPE)) { + throw new TypeError(`Non-string provided as watch path: ${paths}`); + } + return paths.map(normalizePathToUnix); +}; + +// If SLASH_SLASH occurs at the beginning of path, it is not replaced +// because "//StoragePC/DrivePool/Movies" is a valid network path +const toUnix = (string) => { + let str = string.replace(BACK_SLASH_RE, SLASH); + let prepend = false; + if (str.startsWith(SLASH_SLASH)) { + prepend = true; + } + while (str.match(DOUBLE_SLASH_RE)) { + str = str.replace(DOUBLE_SLASH_RE, SLASH); + } + if (prepend) { + str = SLASH + str; + } + return str; +}; + +// Our version of upath.normalize +// TODO: this is not equal to path-normalize module - investigate why +const normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path))); + +const normalizeIgnored = (cwd = EMPTY_STR) => (path) => { + if (typeof path !== STRING_TYPE) return path; + return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path)); +}; + +const getAbsolutePath = (path, cwd) => { + if (sysPath.isAbsolute(path)) { + return path; + } + if (path.startsWith(BANG)) { + return BANG + sysPath.join(cwd, path.slice(1)); + } + return sysPath.join(cwd, path); +}; + +const undef = (opts, key) => opts[key] === undefined; + +/** + * Directory entry. + * @property {Path} path + * @property {Set} items + */ +class DirEntry { + /** + * @param {Path} dir + * @param {Function} removeWatcher + */ + constructor(dir, removeWatcher) { + this.path = dir; + this._removeWatcher = removeWatcher; + /** @type {Set} */ + this.items = new Set(); + } + + add(item) { + const {items} = this; + if (!items) return; + if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item); + } + + async remove(item) { + const {items} = this; + if (!items) return; + items.delete(item); + if (items.size > 0) return; + + const dir = this.path; + try { + await readdir(dir); + } catch (err) { + if (this._removeWatcher) { + this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir)); + } + } + } + + has(item) { + const {items} = this; + if (!items) return; + return items.has(item); + } + + /** + * @returns {Array} + */ + getChildren() { + const {items} = this; + if (!items) return; + return [...items.values()]; + } + + dispose() { + this.items.clear(); + delete this.path; + delete this._removeWatcher; + delete this.items; + Object.freeze(this); + } +} + +const STAT_METHOD_F = 'stat'; +const STAT_METHOD_L = 'lstat'; +class WatchHelper { + constructor(path, watchPath, follow, fsw) { + this.fsw = fsw; + this.path = path = path.replace(REPLACER_RE, EMPTY_STR); + this.watchPath = watchPath; + this.fullWatchPath = sysPath.resolve(watchPath); + this.hasGlob = watchPath !== path; + /** @type {object|boolean} */ + if (path === EMPTY_STR) this.hasGlob = false; + this.globSymlink = this.hasGlob && follow ? undefined : false; + this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false; + this.dirParts = this.getDirParts(path); + this.dirParts.forEach((parts) => { + if (parts.length > 1) parts.pop(); + }); + this.followSymlinks = follow; + this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L; + } + + checkGlobSymlink(entry) { + // only need to resolve once + // first entry should always have entry.parentDir === EMPTY_STR + if (this.globSymlink === undefined) { + this.globSymlink = entry.fullParentDir === this.fullWatchPath ? + false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath}; + } + + if (this.globSymlink) { + return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath); + } + + return entry.fullPath; + } + + entryPath(entry) { + return sysPath.join(this.watchPath, + sysPath.relative(this.watchPath, this.checkGlobSymlink(entry)) + ); + } + + filterPath(entry) { + const {stats} = entry; + if (stats && stats.isSymbolicLink()) return this.filterDir(entry); + const resolvedPath = this.entryPath(entry); + const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ? + this.globFilter(resolvedPath) : true; + return matchesGlob && + this.fsw._isntIgnored(resolvedPath, stats) && + this.fsw._hasReadPermissions(stats); + } + + getDirParts(path) { + if (!this.hasGlob) return []; + const parts = []; + const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path]; + expandedPath.forEach((path) => { + parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE)); + }); + return parts; + } + + filterDir(entry) { + if (this.hasGlob) { + const entryParts = this.getDirParts(this.checkGlobSymlink(entry)); + let globstar = false; + this.unmatchedGlob = !this.dirParts.some((parts) => { + return parts.every((part, i) => { + if (part === GLOBSTAR) globstar = true; + return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS); + }); + }); + } + return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats); + } +} + +/** + * Watches files & directories for changes. Emitted events: + * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error` + * + * new FSWatcher() + * .add(directories) + * .on('add', path => log('File', path, 'was added')) + */ +class FSWatcher extends EventEmitter { +// Not indenting methods for history sake; for now. +constructor(_opts) { + super(); + + const opts = {}; + if (_opts) Object.assign(opts, _opts); // for frozen objects + + /** @type {Map} */ + this._watched = new Map(); + /** @type {Map} */ + this._closers = new Map(); + /** @type {Set} */ + this._ignoredPaths = new Set(); + + /** @type {Map} */ + this._throttled = new Map(); + + /** @type {Map} */ + this._symlinkPaths = new Map(); + + this._streams = new Set(); + this.closed = false; + + // Set up default options. + if (undef(opts, 'persistent')) opts.persistent = true; + if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false; + if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false; + if (undef(opts, 'interval')) opts.interval = 100; + if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300; + if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false; + opts.enableBinaryInterval = opts.binaryInterval !== opts.interval; + + // Enable fsevents on OS X when polling isn't explicitly enabled. + if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling; + + // If we can't use fsevents, ensure the options reflect it's disabled. + const canUseFsEvents = FsEventsHandler.canUse(); + if (!canUseFsEvents) opts.useFsEvents = false; + + // Use polling on Mac if not using fsevents. + // Other platforms use non-polling fs_watch. + if (undef(opts, 'usePolling') && !opts.useFsEvents) { + opts.usePolling = isMacos; + } + + // Always default to polling on IBM i because fs.watch() is not available on IBM i. + if(isIBMi) { + opts.usePolling = true; + } + + // Global override (useful for end-developers that need to force polling for all + // instances of chokidar, regardless of usage/dependency depth) + const envPoll = process.env.CHOKIDAR_USEPOLLING; + if (envPoll !== undefined) { + const envLower = envPoll.toLowerCase(); + + if (envLower === 'false' || envLower === '0') { + opts.usePolling = false; + } else if (envLower === 'true' || envLower === '1') { + opts.usePolling = true; + } else { + opts.usePolling = !!envLower; + } + } + const envInterval = process.env.CHOKIDAR_INTERVAL; + if (envInterval) { + opts.interval = Number.parseInt(envInterval, 10); + } + + // Editor atomic write normalization enabled by default with fs.watch + if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents; + if (opts.atomic) this._pendingUnlinks = new Map(); + + if (undef(opts, 'followSymlinks')) opts.followSymlinks = true; + + if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false; + if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {}; + const awf = opts.awaitWriteFinish; + if (awf) { + if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000; + if (!awf.pollInterval) awf.pollInterval = 100; + this._pendingWrites = new Map(); + } + if (opts.ignored) opts.ignored = arrify(opts.ignored); + + let readyCalls = 0; + this._emitReady = () => { + readyCalls++; + if (readyCalls >= this._readyCount) { + this._emitReady = EMPTY_FN; + this._readyEmitted = true; + // use process.nextTick to allow time for listener to be bound + process.nextTick(() => this.emit(EV_READY)); + } + }; + this._emitRaw = (...args) => this.emit(EV_RAW, ...args); + this._readyEmitted = false; + this.options = opts; + + // Initialize with proper watcher. + if (opts.useFsEvents) { + this._fsEventsHandler = new FsEventsHandler(this); + } else { + this._nodeFsHandler = new NodeFsHandler(this); + } + + // You’re frozen when your heart’s not open. + Object.freeze(opts); +} + +// Public methods + +/** + * Adds paths to be watched on an existing FSWatcher instance + * @param {Path|Array} paths_ + * @param {String=} _origAdd private; for handling non-existent paths to be watched + * @param {Boolean=} _internal private; indicates a non-user add + * @returns {FSWatcher} for chaining + */ +add(paths_, _origAdd, _internal) { + const {cwd, disableGlobbing} = this.options; + this.closed = false; + let paths = unifyPaths(paths_); + if (cwd) { + paths = paths.map((path) => { + const absPath = getAbsolutePath(path, cwd); + + // Check `path` instead of `absPath` because the cwd portion can't be a glob + if (disableGlobbing || !isGlob(path)) { + return absPath; + } + return normalizePath(absPath); + }); + } + + // set aside negated glob strings + paths = paths.filter((path) => { + if (path.startsWith(BANG)) { + this._ignoredPaths.add(path.slice(1)); + return false; + } + + // if a path is being added that was previously ignored, stop ignoring it + this._ignoredPaths.delete(path); + this._ignoredPaths.delete(path + SLASH_GLOBSTAR); + + // reset the cached userIgnored anymatch fn + // to make ignoredPaths changes effective + this._userIgnored = undefined; + + return true; + }); + + if (this.options.useFsEvents && this._fsEventsHandler) { + if (!this._readyCount) this._readyCount = paths.length; + if (this.options.persistent) this._readyCount *= 2; + paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path)); + } else { + if (!this._readyCount) this._readyCount = 0; + this._readyCount += paths.length; + Promise.all( + paths.map(async path => { + const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd); + if (res) this._emitReady(); + return res; + }) + ).then(results => { + if (this.closed) return; + results.filter(item => item).forEach(item => { + this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item)); + }); + }); + } + + return this; +} + +/** + * Close watchers or start ignoring events from specified paths. + * @param {Path|Array} paths_ - string or array of strings, file/directory paths and/or globs + * @returns {FSWatcher} for chaining +*/ +unwatch(paths_) { + if (this.closed) return this; + const paths = unifyPaths(paths_); + const {cwd} = this.options; + + paths.forEach((path) => { + // convert to absolute path unless relative path already matches + if (!sysPath.isAbsolute(path) && !this._closers.has(path)) { + if (cwd) path = sysPath.join(cwd, path); + path = sysPath.resolve(path); + } + + this._closePath(path); + + this._ignoredPaths.add(path); + if (this._watched.has(path)) { + this._ignoredPaths.add(path + SLASH_GLOBSTAR); + } + + // reset the cached userIgnored anymatch fn + // to make ignoredPaths changes effective + this._userIgnored = undefined; + }); + + return this; +} + +/** + * Close watchers and remove all listeners from watched paths. + * @returns {Promise}. +*/ +close() { + if (this.closed) return this._closePromise; + this.closed = true; + + // Memory management. + this.removeAllListeners(); + const closers = []; + this._closers.forEach(closerList => closerList.forEach(closer => { + const promise = closer(); + if (promise instanceof Promise) closers.push(promise); + })); + this._streams.forEach(stream => stream.destroy()); + this._userIgnored = undefined; + this._readyCount = 0; + this._readyEmitted = false; + this._watched.forEach(dirent => dirent.dispose()); + ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => { + this[`_${key}`].clear(); + }); + + this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve(); + return this._closePromise; +} + +/** + * Expose list of watched paths + * @returns {Object} for chaining +*/ +getWatched() { + const watchList = {}; + this._watched.forEach((entry, dir) => { + const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir; + watchList[key || ONE_DOT] = entry.getChildren().sort(); + }); + return watchList; +} + +emitWithAll(event, args) { + this.emit(...args); + if (event !== EV_ERROR) this.emit(EV_ALL, ...args); +} + +// Common helpers +// -------------- + +/** + * Normalize and emit events. + * Calling _emit DOES NOT MEAN emit() would be called! + * @param {EventName} event Type of event + * @param {Path} path File or directory path + * @param {*=} val1 arguments to be passed with event + * @param {*=} val2 + * @param {*=} val3 + * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag + */ +async _emit(event, path, val1, val2, val3) { + if (this.closed) return; + + const opts = this.options; + if (isWindows) path = sysPath.normalize(path); + if (opts.cwd) path = sysPath.relative(opts.cwd, path); + /** @type Array */ + const args = [event, path]; + if (val3 !== undefined) args.push(val1, val2, val3); + else if (val2 !== undefined) args.push(val1, val2); + else if (val1 !== undefined) args.push(val1); + + const awf = opts.awaitWriteFinish; + let pw; + if (awf && (pw = this._pendingWrites.get(path))) { + pw.lastChange = new Date(); + return this; + } + + if (opts.atomic) { + if (event === EV_UNLINK) { + this._pendingUnlinks.set(path, args); + setTimeout(() => { + this._pendingUnlinks.forEach((entry, path) => { + this.emit(...entry); + this.emit(EV_ALL, ...entry); + this._pendingUnlinks.delete(path); + }); + }, typeof opts.atomic === 'number' ? opts.atomic : 100); + return this; + } + if (event === EV_ADD && this._pendingUnlinks.has(path)) { + event = args[0] = EV_CHANGE; + this._pendingUnlinks.delete(path); + } + } + + if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) { + const awfEmit = (err, stats) => { + if (err) { + event = args[0] = EV_ERROR; + args[1] = err; + this.emitWithAll(event, args); + } else if (stats) { + // if stats doesn't exist the file must have been deleted + if (args.length > 2) { + args[2] = stats; + } else { + args.push(stats); + } + this.emitWithAll(event, args); + } + }; + + this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit); + return this; + } + + if (event === EV_CHANGE) { + const isThrottled = !this._throttle(EV_CHANGE, path, 50); + if (isThrottled) return this; + } + + if (opts.alwaysStat && val1 === undefined && + (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE) + ) { + const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path; + let stats; + try { + stats = await stat(fullPath); + } catch (err) {} + // Suppress event when fs_stat fails, to avoid sending undefined 'stat' + if (!stats || this.closed) return; + args.push(stats); + } + this.emitWithAll(event, args); + + return this; +} + +/** + * Common handler for errors + * @param {Error} error + * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag + */ +_handleError(error) { + const code = error && error.code; + if (error && code !== 'ENOENT' && code !== 'ENOTDIR' && + (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES')) + ) { + this.emit(EV_ERROR, error); + } + return error || this.closed; +} + +/** + * Helper utility for throttling + * @param {ThrottleType} actionType type being throttled + * @param {Path} path being acted upon + * @param {Number} timeout duration of time to suppress duplicate actions + * @returns {Object|false} tracking object or false if action should be suppressed + */ +_throttle(actionType, path, timeout) { + if (!this._throttled.has(actionType)) { + this._throttled.set(actionType, new Map()); + } + + /** @type {Map} */ + const action = this._throttled.get(actionType); + /** @type {Object} */ + const actionPath = action.get(path); + + if (actionPath) { + actionPath.count++; + return false; + } + + let timeoutObject; + const clear = () => { + const item = action.get(path); + const count = item ? item.count : 0; + action.delete(path); + clearTimeout(timeoutObject); + if (item) clearTimeout(item.timeoutObject); + return count; + }; + timeoutObject = setTimeout(clear, timeout); + const thr = {timeoutObject, clear, count: 0}; + action.set(path, thr); + return thr; +} + +_incrReadyCount() { + return this._readyCount++; +} + +/** + * Awaits write operation to finish. + * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback. + * @param {Path} path being acted upon + * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished + * @param {EventName} event + * @param {Function} awfEmit Callback to be called when ready for event to be emitted. + */ +_awaitWriteFinish(path, threshold, event, awfEmit) { + let timeoutHandler; + + let fullPath = path; + if (this.options.cwd && !sysPath.isAbsolute(path)) { + fullPath = sysPath.join(this.options.cwd, path); + } + + const now = new Date(); + + const awaitWriteFinish = (prevStat) => { + fs.stat(fullPath, (err, curStat) => { + if (err || !this._pendingWrites.has(path)) { + if (err && err.code !== 'ENOENT') awfEmit(err); + return; + } + + const now = Number(new Date()); + + if (prevStat && curStat.size !== prevStat.size) { + this._pendingWrites.get(path).lastChange = now; + } + const pw = this._pendingWrites.get(path); + const df = now - pw.lastChange; + + if (df >= threshold) { + this._pendingWrites.delete(path); + awfEmit(undefined, curStat); + } else { + timeoutHandler = setTimeout( + awaitWriteFinish, + this.options.awaitWriteFinish.pollInterval, + curStat + ); + } + }); + }; + + if (!this._pendingWrites.has(path)) { + this._pendingWrites.set(path, { + lastChange: now, + cancelWait: () => { + this._pendingWrites.delete(path); + clearTimeout(timeoutHandler); + return event; + } + }); + timeoutHandler = setTimeout( + awaitWriteFinish, + this.options.awaitWriteFinish.pollInterval + ); + } +} + +_getGlobIgnored() { + return [...this._ignoredPaths.values()]; +} + +/** + * Determines whether user has asked to ignore this path. + * @param {Path} path filepath or dir + * @param {fs.Stats=} stats result of fs.stat + * @returns {Boolean} + */ +_isIgnored(path, stats) { + if (this.options.atomic && DOT_RE.test(path)) return true; + if (!this._userIgnored) { + const {cwd} = this.options; + const ign = this.options.ignored; + + const ignored = ign && ign.map(normalizeIgnored(cwd)); + const paths = arrify(ignored) + .filter((path) => typeof path === STRING_TYPE && !isGlob(path)) + .map((path) => path + SLASH_GLOBSTAR); + const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths); + this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS); + } + + return this._userIgnored([path, stats]); +} + +_isntIgnored(path, stat) { + return !this._isIgnored(path, stat); +} + +/** + * Provides a set of common helpers and properties relating to symlink and glob handling. + * @param {Path} path file, directory, or glob pattern being watched + * @param {Number=} depth at any depth > 0, this isn't a glob + * @returns {WatchHelper} object containing helpers for this path + */ +_getWatchHelpers(path, depth) { + const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path); + const follow = this.options.followSymlinks; + + return new WatchHelper(path, watchPath, follow, this); +} + +// Directory helpers +// ----------------- + +/** + * Provides directory tracking objects + * @param {String} directory path of the directory + * @returns {DirEntry} the directory's tracking object + */ +_getWatchedDir(directory) { + if (!this._boundRemove) this._boundRemove = this._remove.bind(this); + const dir = sysPath.resolve(directory); + if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove)); + return this._watched.get(dir); +} + +// File helpers +// ------------ + +/** + * Check for read permissions. + * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405 + * @param {fs.Stats} stats - object, result of fs_stat + * @returns {Boolean} indicates whether the file can be read +*/ +_hasReadPermissions(stats) { + if (this.options.ignorePermissionErrors) return true; + + // stats.mode may be bigint + const md = stats && Number.parseInt(stats.mode, 10); + const st = md & 0o777; + const it = Number.parseInt(st.toString(8)[0], 10); + return Boolean(4 & it); +} + +/** + * Handles emitting unlink events for + * files and directories, and via recursion, for + * files and directories within directories that are unlinked + * @param {String} directory within which the following item is located + * @param {String} item base path of item/directory + * @returns {void} +*/ +_remove(directory, item, isDirectory) { + // if what is being deleted is a directory, get that directory's paths + // for recursive deleting and cleaning of watched object + // if it is not a directory, nestedDirectoryChildren will be empty array + const path = sysPath.join(directory, item); + const fullPath = sysPath.resolve(path); + isDirectory = isDirectory != null + ? isDirectory + : this._watched.has(path) || this._watched.has(fullPath); + + // prevent duplicate handling in case of arriving here nearly simultaneously + // via multiple paths (such as _handleFile and _handleDir) + if (!this._throttle('remove', path, 100)) return; + + // if the only watched file is removed, watch for its return + if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) { + this.add(directory, item, true); + } + + // This will create a new entry in the watched object in either case + // so we got to do the directory check beforehand + const wp = this._getWatchedDir(path); + const nestedDirectoryChildren = wp.getChildren(); + + // Recursively remove children directories / files. + nestedDirectoryChildren.forEach(nested => this._remove(path, nested)); + + // Check if item was on the watched list and remove it + const parent = this._getWatchedDir(directory); + const wasTracked = parent.has(item); + parent.remove(item); + + // Fixes issue #1042 -> Relative paths were detected and added as symlinks + // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612), + // but never removed from the map in case the path was deleted. + // This leads to an incorrect state if the path was recreated: + // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553 + if (this._symlinkPaths.has(fullPath)) { + this._symlinkPaths.delete(fullPath); + } + + // If we wait for this file to be fully written, cancel the wait. + let relPath = path; + if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path); + if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) { + const event = this._pendingWrites.get(relPath).cancelWait(); + if (event === EV_ADD) return; + } + + // The Entry will either be a directory that just got removed + // or a bogus entry to a file, in either case we have to remove it + this._watched.delete(path); + this._watched.delete(fullPath); + const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK; + if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path); + + // Avoid conflicts if we later create another file with the same name + if (!this.options.useFsEvents) { + this._closePath(path); + } +} + +/** + * Closes all watchers for a path + * @param {Path} path + */ +_closePath(path) { + this._closeFile(path) + const dir = sysPath.dirname(path); + this._getWatchedDir(dir).remove(sysPath.basename(path)); +} + +/** + * Closes only file-specific watchers + * @param {Path} path + */ +_closeFile(path) { + const closers = this._closers.get(path); + if (!closers) return; + closers.forEach(closer => closer()); + this._closers.delete(path); +} + +/** + * + * @param {Path} path + * @param {Function} closer + */ +_addPathCloser(path, closer) { + if (!closer) return; + let list = this._closers.get(path); + if (!list) { + list = []; + this._closers.set(path, list); + } + list.push(closer); +} + +_readdirp(root, opts) { + if (this.closed) return; + const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts}; + let stream = readdirp(root, options); + this._streams.add(stream); + stream.once(STR_CLOSE, () => { + stream = undefined; + }); + stream.once(STR_END, () => { + if (stream) { + this._streams.delete(stream); + stream = undefined; + } + }); + return stream; +} + +} + +// Export FSWatcher class +exports.FSWatcher = FSWatcher; + +/** + * Instantiates watcher with paths to be tracked. + * @param {String|Array} paths file/directory paths and/or globs + * @param {Object=} options chokidar opts + * @returns an instance of FSWatcher for chaining. + */ +const watch = (paths, options) => { + const watcher = new FSWatcher(options); + watcher.add(paths); + return watcher; +}; + +exports.watch = watch; diff --git a/node_modules/chokidar/node_modules/glob-parent/CHANGELOG.md b/node_modules/chokidar/node_modules/glob-parent/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..fb9de9618b9dd9a7e239c148fc60a55197ab8f6a --- /dev/null +++ b/node_modules/chokidar/node_modules/glob-parent/CHANGELOG.md @@ -0,0 +1,110 @@ +### [5.1.2](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2) (2021-03-06) + + +### Bug Fixes + +* eliminate ReDoS ([#36](https://github.com/gulpjs/glob-parent/issues/36)) ([f923116](https://github.com/gulpjs/glob-parent/commit/f9231168b0041fea3f8f954b3cceb56269fc6366)) + +### [5.1.1](https://github.com/gulpjs/glob-parent/compare/v5.1.0...v5.1.1) (2021-01-27) + + +### Bug Fixes + +* unescape exclamation mark ([#26](https://github.com/gulpjs/glob-parent/issues/26)) ([a98874f](https://github.com/gulpjs/glob-parent/commit/a98874f1a59e407f4fb1beb0db4efa8392da60bb)) + +## [5.1.0](https://github.com/gulpjs/glob-parent/compare/v5.0.0...v5.1.0) (2021-01-27) + + +### Features + +* add `flipBackslashes` option to disable auto conversion of slashes (closes [#24](https://github.com/gulpjs/glob-parent/issues/24)) ([#25](https://github.com/gulpjs/glob-parent/issues/25)) ([eecf91d](https://github.com/gulpjs/glob-parent/commit/eecf91d5e3834ed78aee39c4eaaae654d76b87b3)) + +## [5.0.0](https://github.com/gulpjs/glob-parent/compare/v4.0.0...v5.0.0) (2021-01-27) + + +### ⚠ BREAKING CHANGES + +* Drop support for node <6 & bump dependencies + +### Miscellaneous Chores + +* Drop support for node <6 & bump dependencies ([896c0c0](https://github.com/gulpjs/glob-parent/commit/896c0c00b4e7362f60b96e7fc295ae929245255a)) + +## [4.0.0](https://github.com/gulpjs/glob-parent/compare/v3.1.0...v4.0.0) (2021-01-27) + + +### ⚠ BREAKING CHANGES + +* question marks are valid path characters on Windows so avoid flagging as a glob when alone +* Update is-glob dependency + +### Features + +* hoist regexps and strings for performance gains ([4a80667](https://github.com/gulpjs/glob-parent/commit/4a80667c69355c76a572a5892b0f133c8e1f457e)) +* question marks are valid path characters on Windows so avoid flagging as a glob when alone ([2a551dd](https://github.com/gulpjs/glob-parent/commit/2a551dd0dc3235e78bf3c94843d4107072d17841)) +* Update is-glob dependency ([e41fcd8](https://github.com/gulpjs/glob-parent/commit/e41fcd895d1f7bc617dba45c9d935a7949b9c281)) + +## [3.1.0](https://github.com/gulpjs/glob-parent/compare/v3.0.1...v3.1.0) (2021-01-27) + + +### Features + +* allow basic win32 backslash use ([272afa5](https://github.com/gulpjs/glob-parent/commit/272afa5fd070fc0f796386a5993d4ee4a846988b)) +* handle extglobs (parentheses) containing separators ([7db1bdb](https://github.com/gulpjs/glob-parent/commit/7db1bdb0756e55fd14619e8ce31aa31b17b117fd)) +* new approach to braces/brackets handling ([8269bd8](https://github.com/gulpjs/glob-parent/commit/8269bd89290d99fac9395a354fb56fdcdb80f0be)) +* pre-process braces/brackets sections ([9ef8a87](https://github.com/gulpjs/glob-parent/commit/9ef8a87f66b1a43d0591e7a8e4fc5a18415ee388)) +* preserve escaped brace/bracket at end of string ([8cfb0ba](https://github.com/gulpjs/glob-parent/commit/8cfb0ba84202d51571340dcbaf61b79d16a26c76)) + + +### Bug Fixes + +* trailing escaped square brackets ([99ec9fe](https://github.com/gulpjs/glob-parent/commit/99ec9fecc60ee488ded20a94dd4f18b4f55c4ccf)) + +### [3.0.1](https://github.com/gulpjs/glob-parent/compare/v3.0.0...v3.0.1) (2021-01-27) + + +### Features + +* use path-dirname ponyfill ([cdbea5f](https://github.com/gulpjs/glob-parent/commit/cdbea5f32a58a54e001a75ddd7c0fccd4776aacc)) + + +### Bug Fixes + +* unescape glob-escaped dirnames on output ([598c533](https://github.com/gulpjs/glob-parent/commit/598c533bdf49c1428bc063aa9b8db40c5a86b030)) + +## [3.0.0](https://github.com/gulpjs/glob-parent/compare/v2.0.0...v3.0.0) (2021-01-27) + + +### ⚠ BREAKING CHANGES + +* update is-glob dependency + +### Features + +* update is-glob dependency ([5c5f8ef](https://github.com/gulpjs/glob-parent/commit/5c5f8efcee362a8e7638cf8220666acd8784f6bd)) + +## [2.0.0](https://github.com/gulpjs/glob-parent/compare/v1.3.0...v2.0.0) (2021-01-27) + + +### Features + +* move up to dirname regardless of glob characters ([f97fb83](https://github.com/gulpjs/glob-parent/commit/f97fb83be2e0a9fc8d3b760e789d2ecadd6aa0c2)) + +## [1.3.0](https://github.com/gulpjs/glob-parent/compare/v1.2.0...v1.3.0) (2021-01-27) + +## [1.2.0](https://github.com/gulpjs/glob-parent/compare/v1.1.0...v1.2.0) (2021-01-27) + + +### Reverts + +* feat: make regex test strings smaller ([dc80fa9](https://github.com/gulpjs/glob-parent/commit/dc80fa9658dca20549cfeba44bbd37d5246fcce0)) + +## [1.1.0](https://github.com/gulpjs/glob-parent/compare/v1.0.0...v1.1.0) (2021-01-27) + + +### Features + +* make regex test strings smaller ([cd83220](https://github.com/gulpjs/glob-parent/commit/cd832208638f45169f986d80fcf66e401f35d233)) + +## 1.0.0 (2021-01-27) + diff --git a/node_modules/chokidar/node_modules/glob-parent/LICENSE b/node_modules/chokidar/node_modules/glob-parent/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..63222d7a8f9f5cd8bf912764cc10b6b51a5940ae --- /dev/null +++ b/node_modules/chokidar/node_modules/glob-parent/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) 2015, 2019 Elan Shanker + +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/chokidar/node_modules/glob-parent/README.md b/node_modules/chokidar/node_modules/glob-parent/README.md new file mode 100644 index 0000000000000000000000000000000000000000..36a279384b14a8ea5b723b1d952c283a109f690e --- /dev/null +++ b/node_modules/chokidar/node_modules/glob-parent/README.md @@ -0,0 +1,137 @@ +

+ + + +

+ +# glob-parent + +[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Azure Pipelines Build Status][azure-pipelines-image]][azure-pipelines-url] [![Travis Build Status][travis-image]][travis-url] [![AppVeyor Build Status][appveyor-image]][appveyor-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url] + +Extract the non-magic parent path from a glob string. + +## Usage + +```js +var globParent = require('glob-parent'); + +globParent('path/to/*.js'); // 'path/to' +globParent('/root/path/to/*.js'); // '/root/path/to' +globParent('/*.js'); // '/' +globParent('*.js'); // '.' +globParent('**/*.js'); // '.' +globParent('path/{to,from}'); // 'path' +globParent('path/!(to|from)'); // 'path' +globParent('path/?(to|from)'); // 'path' +globParent('path/+(to|from)'); // 'path' +globParent('path/*(to|from)'); // 'path' +globParent('path/@(to|from)'); // 'path' +globParent('path/**/*'); // 'path' + +// if provided a non-glob path, returns the nearest dir +globParent('path/foo/bar.js'); // 'path/foo' +globParent('path/foo/'); // 'path/foo' +globParent('path/foo'); // 'path' (see issue #3 for details) +``` + +## API + +### `globParent(maybeGlobString, [options])` + +Takes a string and returns the part of the path before the glob begins. Be aware of Escaping rules and Limitations below. + +#### options + +```js +{ + // Disables the automatic conversion of slashes for Windows + flipBackslashes: true +} +``` + +## Escaping + +The following characters have special significance in glob patterns and must be escaped if you want them to be treated as regular path characters: + +- `?` (question mark) unless used as a path segment alone +- `*` (asterisk) +- `|` (pipe) +- `(` (opening parenthesis) +- `)` (closing parenthesis) +- `{` (opening curly brace) +- `}` (closing curly brace) +- `[` (opening bracket) +- `]` (closing bracket) + +**Example** + +```js +globParent('foo/[bar]/') // 'foo' +globParent('foo/\\[bar]/') // 'foo/[bar]' +``` + +## Limitations + +### Braces & Brackets +This library attempts a quick and imperfect method of determining which path +parts have glob magic without fully parsing/lexing the pattern. There are some +advanced use cases that can trip it up, such as nested braces where the outer +pair is escaped and the inner one contains a path separator. If you find +yourself in the unlikely circumstance of being affected by this or need to +ensure higher-fidelity glob handling in your library, it is recommended that you +pre-process your input with [expand-braces] and/or [expand-brackets]. + +### Windows +Backslashes are not valid path separators for globs. If a path with backslashes +is provided anyway, for simple cases, glob-parent will replace the path +separator for you and return the non-glob parent path (now with +forward-slashes, which are still valid as Windows path separators). + +This cannot be used in conjunction with escape characters. + +```js +// BAD +globParent('C:\\Program Files \\(x86\\)\\*.ext') // 'C:/Program Files /(x86/)' + +// GOOD +globParent('C:/Program Files\\(x86\\)/*.ext') // 'C:/Program Files (x86)' +``` + +If you are using escape characters for a pattern without path parts (i.e. +relative to `cwd`), prefix with `./` to avoid confusing glob-parent. + +```js +// BAD +globParent('foo \\[bar]') // 'foo ' +globParent('foo \\[bar]*') // 'foo ' + +// GOOD +globParent('./foo \\[bar]') // 'foo [bar]' +globParent('./foo \\[bar]*') // '.' +``` + +## License + +ISC + +[expand-braces]: https://github.com/jonschlinkert/expand-braces +[expand-brackets]: https://github.com/jonschlinkert/expand-brackets + +[downloads-image]: https://img.shields.io/npm/dm/glob-parent.svg +[npm-url]: https://www.npmjs.com/package/glob-parent +[npm-image]: https://img.shields.io/npm/v/glob-parent.svg + +[azure-pipelines-url]: https://dev.azure.com/gulpjs/gulp/_build/latest?definitionId=2&branchName=master +[azure-pipelines-image]: https://dev.azure.com/gulpjs/gulp/_apis/build/status/glob-parent?branchName=master + +[travis-url]: https://travis-ci.org/gulpjs/glob-parent +[travis-image]: https://img.shields.io/travis/gulpjs/glob-parent.svg?label=travis-ci + +[appveyor-url]: https://ci.appveyor.com/project/gulpjs/glob-parent +[appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/glob-parent.svg?label=appveyor + +[coveralls-url]: https://coveralls.io/r/gulpjs/glob-parent +[coveralls-image]: https://img.shields.io/coveralls/gulpjs/glob-parent/master.svg + +[gitter-url]: https://gitter.im/gulpjs/gulp +[gitter-image]: https://badges.gitter.im/gulpjs/gulp.svg diff --git a/node_modules/chokidar/node_modules/glob-parent/index.js b/node_modules/chokidar/node_modules/glob-parent/index.js new file mode 100644 index 0000000000000000000000000000000000000000..09e257ea306cd41c63cc1a59a86653d098bda0f9 --- /dev/null +++ b/node_modules/chokidar/node_modules/glob-parent/index.js @@ -0,0 +1,42 @@ +'use strict'; + +var isGlob = require('is-glob'); +var pathPosixDirname = require('path').posix.dirname; +var isWin32 = require('os').platform() === 'win32'; + +var slash = '/'; +var backslash = /\\/g; +var enclosure = /[\{\[].*[\}\]]$/; +var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; +var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; + +/** + * @param {string} str + * @param {Object} opts + * @param {boolean} [opts.flipBackslashes=true] + * @returns {string} + */ +module.exports = function globParent(str, opts) { + var options = Object.assign({ flipBackslashes: true }, opts); + + // flip windows path separators + if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { + str = str.replace(backslash, slash); + } + + // special case for strings ending in enclosure containing path separator + if (enclosure.test(str)) { + str += slash; + } + + // preserves full path in case of trailing path separator + str += 'a'; + + // remove path parts that are globby + do { + str = pathPosixDirname(str); + } while (isGlob(str) || globby.test(str)); + + // remove escape chars and return result + return str.replace(escaped, '$1'); +}; diff --git a/node_modules/chokidar/node_modules/glob-parent/package.json b/node_modules/chokidar/node_modules/glob-parent/package.json new file mode 100644 index 0000000000000000000000000000000000000000..125c971c2701983e5569b097af23dc98a29525ff --- /dev/null +++ b/node_modules/chokidar/node_modules/glob-parent/package.json @@ -0,0 +1,48 @@ +{ + "name": "glob-parent", + "version": "5.1.2", + "description": "Extract the non-magic parent path from a glob string.", + "author": "Gulp Team (https://gulpjs.com/)", + "contributors": [ + "Elan Shanker (https://github.com/es128)", + "Blaine Bublitz " + ], + "repository": "gulpjs/glob-parent", + "license": "ISC", + "engines": { + "node": ">= 6" + }, + "main": "index.js", + "files": [ + "LICENSE", + "index.js" + ], + "scripts": { + "lint": "eslint .", + "pretest": "npm run lint", + "test": "nyc mocha --async-only", + "azure-pipelines": "nyc mocha --async-only --reporter xunit -O output=test.xunit", + "coveralls": "nyc report --reporter=text-lcov | coveralls" + }, + "dependencies": { + "is-glob": "^4.0.1" + }, + "devDependencies": { + "coveralls": "^3.0.11", + "eslint": "^2.13.1", + "eslint-config-gulp": "^3.0.1", + "expect": "^1.20.2", + "mocha": "^6.0.2", + "nyc": "^13.3.0" + }, + "keywords": [ + "glob", + "parent", + "strip", + "path", + "dirname", + "directory", + "base", + "wildcard" + ] +} diff --git a/node_modules/chokidar/package.json b/node_modules/chokidar/package.json new file mode 100644 index 0000000000000000000000000000000000000000..6c3cd27c7bccf1a1b7e349e5de20330006f5ea9a --- /dev/null +++ b/node_modules/chokidar/package.json @@ -0,0 +1,85 @@ +{ + "name": "chokidar", + "description": "Minimal and efficient cross-platform file watching library", + "version": "3.5.3", + "homepage": "https://github.com/paulmillr/chokidar", + "author": "Paul Miller (https://paulmillr.com)", + "contributors": [ + "Paul Miller (https://paulmillr.com)", + "Elan Shanker" + ], + "engines": { + "node": ">= 8.10.0" + }, + "main": "index.js", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "devDependencies": { + "@types/node": "^14", + "chai": "^4.3", + "dtslint": "^3.3.0", + "eslint": "^7.0.0", + "mocha": "^7.0.0", + "nyc": "^15.0.0", + "rimraf": "^3.0.0", + "sinon": "^9.0.1", + "sinon-chai": "^3.3.0", + "typescript": "~4.4.3", + "upath": "^1.2.0" + }, + "files": [ + "index.js", + "lib/*.js", + "types/index.d.ts" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/paulmillr/chokidar.git" + }, + "bugs": { + "url": "https://github.com/paulmillr/chokidar/issues" + }, + "license": "MIT", + "scripts": { + "dtslint": "dtslint types", + "lint": "eslint --report-unused-disable-directives --ignore-path .gitignore .", + "mocha": "mocha --exit --timeout 90000", + "test": "npm run lint && npm run mocha" + }, + "keywords": [ + "fs", + "watch", + "watchFile", + "watcher", + "watching", + "file", + "fsevents" + ], + "types": "./types/index.d.ts", + "nyc": { + "include": [ + "index.js", + "lib/*.js" + ], + "reporter": [ + "html", + "text" + ] + }, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] +} diff --git a/node_modules/chokidar/types/index.d.ts b/node_modules/chokidar/types/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..aab8e337accaf54e81b171ca3b7674e337d4794b --- /dev/null +++ b/node_modules/chokidar/types/index.d.ts @@ -0,0 +1,188 @@ +// TypeScript Version: 3.0 + +/// + +import * as fs from "fs"; +import { EventEmitter } from "events"; +import { Matcher } from 'anymatch'; + +export class FSWatcher extends EventEmitter implements fs.FSWatcher { + options: WatchOptions; + + /** + * Constructs a new FSWatcher instance with optional WatchOptions parameter. + */ + constructor(options?: WatchOptions); + + /** + * Add files, directories, or glob patterns for tracking. Takes an array of strings or just one + * string. + */ + add(paths: string | ReadonlyArray): this; + + /** + * Stop watching files, directories, or glob patterns. Takes an array of strings or just one + * string. + */ + unwatch(paths: string | ReadonlyArray): this; + + /** + * Returns an object representing all the paths on the file system being watched by this + * `FSWatcher` instance. The object's keys are all the directories (using absolute paths unless + * the `cwd` option was used), and the values are arrays of the names of the items contained in + * each directory. + */ + getWatched(): { + [directory: string]: string[]; + }; + + /** + * Removes all listeners from watched files. + */ + close(): Promise; + + on(event: 'add'|'addDir'|'change', listener: (path: string, stats?: fs.Stats) => void): this; + + on(event: 'all', listener: (eventName: 'add'|'addDir'|'change'|'unlink'|'unlinkDir', path: string, stats?: fs.Stats) => void): this; + + /** + * Error occurred + */ + on(event: 'error', listener: (error: Error) => void): this; + + /** + * Exposes the native Node `fs.FSWatcher events` + */ + on(event: 'raw', listener: (eventName: string, path: string, details: any) => void): this; + + /** + * Fires when the initial scan is complete + */ + on(event: 'ready', listener: () => void): this; + + on(event: 'unlink'|'unlinkDir', listener: (path: string) => void): this; + + on(event: string, listener: (...args: any[]) => void): this; +} + +export interface WatchOptions { + /** + * Indicates whether the process should continue to run as long as files are being watched. If + * set to `false` when using `fsevents` to watch, no more events will be emitted after `ready`, + * even if the process continues to run. + */ + persistent?: boolean; + + /** + * ([anymatch](https://github.com/micromatch/anymatch)-compatible definition) Defines files/paths to + * be ignored. The whole relative or absolute path is tested, not just filename. If a function + * with two arguments is provided, it gets called twice per path - once with a single argument + * (the path), second time with two arguments (the path and the + * [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object of that path). + */ + ignored?: Matcher; + + /** + * If set to `false` then `add`/`addDir` events are also emitted for matching paths while + * instantiating the watching as chokidar discovers these file paths (before the `ready` event). + */ + ignoreInitial?: boolean; + + /** + * When `false`, only the symlinks themselves will be watched for changes instead of following + * the link references and bubbling events through the link's path. + */ + followSymlinks?: boolean; + + /** + * The base directory from which watch `paths` are to be derived. Paths emitted with events will + * be relative to this. + */ + cwd?: string; + + /** + * If set to true then the strings passed to .watch() and .add() are treated as literal path + * names, even if they look like globs. Default: false. + */ + disableGlobbing?: boolean; + + /** + * Whether to use fs.watchFile (backed by polling), or fs.watch. If polling leads to high CPU + * utilization, consider setting this to `false`. It is typically necessary to **set this to + * `true` to successfully watch files over a network**, and it may be necessary to successfully + * watch files in other non-standard situations. Setting to `true` explicitly on OS X overrides + * the `useFsEvents` default. + */ + usePolling?: boolean; + + /** + * Whether to use the `fsevents` watching interface if available. When set to `true` explicitly + * and `fsevents` is available this supercedes the `usePolling` setting. When set to `false` on + * OS X, `usePolling: true` becomes the default. + */ + useFsEvents?: boolean; + + /** + * If relying upon the [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object that + * may get passed with `add`, `addDir`, and `change` events, set this to `true` to ensure it is + * provided even in cases where it wasn't already available from the underlying watch events. + */ + alwaysStat?: boolean; + + /** + * If set, limits how many levels of subdirectories will be traversed. + */ + depth?: number; + + /** + * Interval of file system polling. + */ + interval?: number; + + /** + * Interval of file system polling for binary files. ([see list of binary extensions](https://gi + * thub.com/sindresorhus/binary-extensions/blob/master/binary-extensions.json)) + */ + binaryInterval?: number; + + /** + * Indicates whether to watch files that don't have read permissions if possible. If watching + * fails due to `EPERM` or `EACCES` with this set to `true`, the errors will be suppressed + * silently. + */ + ignorePermissionErrors?: boolean; + + /** + * `true` if `useFsEvents` and `usePolling` are `false`). Automatically filters out artifacts + * that occur when using editors that use "atomic writes" instead of writing directly to the + * source file. If a file is re-added within 100 ms of being deleted, Chokidar emits a `change` + * event rather than `unlink` then `add`. If the default of 100 ms does not work well for you, + * you can override it by setting `atomic` to a custom value, in milliseconds. + */ + atomic?: boolean | number; + + /** + * can be set to an object in order to adjust timing params: + */ + awaitWriteFinish?: AwaitWriteFinishOptions | boolean; +} + +export interface AwaitWriteFinishOptions { + /** + * Amount of time in milliseconds for a file size to remain constant before emitting its event. + */ + stabilityThreshold?: number; + + /** + * File size polling interval. + */ + pollInterval?: number; +} + +/** + * produces an instance of `FSWatcher`. + */ +export function watch( + paths: string | ReadonlyArray, + options?: WatchOptions +): FSWatcher; diff --git a/node_modules/color-name/LICENSE b/node_modules/color-name/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..c6b10012540c24ceec902ae292dbfe31214d40f8 --- /dev/null +++ b/node_modules/color-name/LICENSE @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +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/color-name/README.md b/node_modules/color-name/README.md new file mode 100644 index 0000000000000000000000000000000000000000..932b979176f33bf738aa6293c70bb3e451f2baf5 --- /dev/null +++ b/node_modules/color-name/README.md @@ -0,0 +1,11 @@ +A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors. + +[![NPM](https://nodei.co/npm/color-name.png?mini=true)](https://nodei.co/npm/color-name/) + + +```js +var colors = require('color-name'); +colors.red //[255,0,0] +``` + + diff --git a/node_modules/color-name/index.js b/node_modules/color-name/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b7c198a6f3d7c579041efc7a54358fd89cddf43a --- /dev/null +++ b/node_modules/color-name/index.js @@ -0,0 +1,152 @@ +'use strict' + +module.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; diff --git a/node_modules/color-name/package.json b/node_modules/color-name/package.json new file mode 100644 index 0000000000000000000000000000000000000000..782dd82878030a00c89c1d72254a2a26dc457986 --- /dev/null +++ b/node_modules/color-name/package.json @@ -0,0 +1,28 @@ +{ + "name": "color-name", + "version": "1.1.4", + "description": "A list of color names and its values", + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "test": "node test.js" + }, + "repository": { + "type": "git", + "url": "git@github.com:colorjs/color-name.git" + }, + "keywords": [ + "color-name", + "color", + "color-keyword", + "keyword" + ], + "author": "DY ", + "license": "MIT", + "bugs": { + "url": "https://github.com/colorjs/color-name/issues" + }, + "homepage": "https://github.com/colorjs/color-name" +} diff --git a/node_modules/commander/CHANGELOG.md b/node_modules/commander/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..f00cb2b5385a86588eef0afbc74203072a035671 --- /dev/null +++ b/node_modules/commander/CHANGELOG.md @@ -0,0 +1,436 @@ +# Changelog + +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). (Format adopted after v3.0.0.) + + + +## [4.1.1] (2020-02-02) + +### Fixed + +* TypeScript definition for `.action()` should include Promise for async ([#1157]) + +## [4.1.0] (2020-01-06) + +### Added + +* two routines to change how option values are handled, and eliminate name clashes with command properties ([#933] [#1102]) + * see storeOptionsAsProperties and passCommandToAction in README +* `.parseAsync` to use instead of `.parse` if supply async action handlers ([#806] [#1118]) + +### Fixed + +* Remove trailing blanks from wrapped help text ([#1096]) + +### Changed + +* update dependencies +* extend security coverage for Commander 2.x to 2020-02-03 +* improvements to README +* improvements to TypeScript definition documentation +* move old versions out of main CHANGELOG +* removed explicit use of `ts-node` in tests + +## [4.0.1] (2019-11-12) + +### Fixed + +* display help when requested, even if there are missing required options ([#1091]) + +## [4.0.0] (2019-11-02) + +### Added + +* automatically wrap and indent help descriptions for options and commands ([#1051]) +* `.exitOverride()` allows override of calls to `process.exit` for additional error handling and to keep program running ([#1040]) +* support for declaring required options with `.requiredOptions()` ([#1071]) +* GitHub Actions support ([#1027]) +* translation links in README + +### Changed + +* dev: switch tests from Sinon+Should to Jest with major rewrite of tests ([#1035]) +* call default subcommand even when there are unknown options ([#1047]) +* *Breaking* Commander is only officially supported on Node 8 and above, and requires Node 6 ([#1053]) + +### Fixed + +* *Breaking* keep command object out of program.args when action handler called ([#1048]) + * also, action handler now passed array of unknown arguments +* complain about unknown options when program argument supplied and action handler ([#1049]) + * this changes parameters to `command:*` event to include unknown arguments +* removed deprecated `customFds` option from call to `child_process.spawn` ([#1052]) +* rework TypeScript declarations to bring all types into imported namespace ([#1081]) + +### Migration Tips + +#### Testing for no arguments + +If you were previously using code like: + +```js +if (!program.args.length) ... +``` + +a partial replacement is: + +```js +if (program.rawArgs.length < 3) ... +``` + +## [4.0.0-1] Prerelease (2019-10-08) + +(Released in 4.0.0) + +## [4.0.0-0] Prerelease (2019-10-01) + +(Released in 4.0.0) + +## [2.20.1] (2019-09-29) + +### Fixed + +* Improve tracking of executable subcommands. + +### Changed + +* update development dependencies + +## [3.0.2] (2019-09-27) + +### Fixed + +* Improve tracking of executable subcommands. + +### Changed + +* update development dependencies + +## [3.0.1] (2019-08-30) + +### Added + +* .name and .usage to README ([#1010]) +* Table of Contents to README ([#1010]) +* TypeScript definition for `executableFile` in CommandOptions ([#1028]) + +### Changed + +* consistently use `const` rather than `var` in README ([#1026]) + +### Fixed + +* help for sub commands with custom executableFile ([#1018]) + +## [3.0.0] / 2019-08-08 + +* Add option to specify executable file name ([#999]) + * e.g. `.command('clone', 'clone description', { executableFile: 'myClone' })` +* Change docs for `.command` to contrast action handler vs git-style executable. ([#938] [#990]) +* **Breaking** Change TypeScript to use overloaded function for `.command`. ([#938] [#990]) +* Change to use straight quotes around strings in error messages (like 'this' instead of `this') ([#915]) +* Add TypeScript "reference types" for node ([#974]) +* Add support for hyphen as an option argument in subcommands ([#697]) +* Add support for a short option flag and its value to be concatenated for action handler subcommands ([#599]) + * e.g. `-p 80` can also be supplied as `-p80` +* Add executable arguments to spawn in win32, for git-style executables ([#611]) + * e.g. `node --harmony myCommand.js clone` +* Add parent command as prefix of subcommand in help ([#980]) +* Add optional custom description to `.version` ([#963]) + * e.g. `program.version('0.0.1', '-v, --vers', 'output the current version')` +* Add `.helpOption(flags, description)` routine to customise help flags and description ([#963]) + * e.g. `.helpOption('-e, --HELP', 'read more information')` +* Fix behavior of --no-* options ([#795]) + * can now define both `--foo` and `--no-foo` + * **Breaking** custom event listeners: `--no-foo` on cli now emits `option:no-foo` (previously `option:foo`) + * **Breaking** default value: defining `--no-foo` after defining `--foo` leaves the default value unchanged (previously set it to false) + * allow boolean default value, such as from environment ([#987]) +* Increment inspector port for spawned subcommands ([#991]) + * e.g. `node --inspect myCommand.js clone` + +### Migration Tips + +The custom event for a negated option like `--no-foo` is `option:no-foo` (previously `option:foo`). + +```js +program + .option('--no-foo') + .on('option:no-foo', () => { + console.log('removing foo'); + }); +``` + +When using TypeScript, adding a command does not allow an explicit `undefined` for an unwanted executable description (e.g +for a command with an action handler). + +```js +program + .command('action1', undefined, { noHelp: true }) // No longer valid + .command('action2', { noHelp: true }) // Correct +``` + +## 3.0.0-0 Prerelease / 2019-07-28 + +(Released as 3.0.0) + +## 2.20.0 / 2019-04-02 + +* fix: resolve symbolic links completely when hunting for subcommands (#935) +* Update index.d.ts (#930) +* Update Readme.md (#924) +* Remove --save option as it isn't required anymore (#918) +* Add link to the license file (#900) +* Added example of receiving args from options (#858) +* Added missing semicolon (#882) +* Add extension to .eslintrc (#876) + +## 2.19.0 / 2018-10-02 + +* Removed newline after Options and Commands headers (#864) +* Bugfix - Error output (#862) +* Fix to change default value to string (#856) + +## 2.18.0 / 2018-09-07 + +* Standardize help output (#853) +* chmod 644 travis.yml (#851) +* add support for execute typescript subcommand via ts-node (#849) + +## 2.17.1 / 2018-08-07 + +* Fix bug in command emit (#844) + +## 2.17.0 / 2018-08-03 + +* fixed newline output after help information (#833) +* Fix to emit the action even without command (#778) +* npm update (#823) + +## 2.16.0 / 2018-06-29 + +* Remove Makefile and `test/run` (#821) +* Make 'npm test' run on Windows (#820) +* Add badge to display install size (#807) +* chore: cache node_modules (#814) +* chore: remove Node.js 4 (EOL), add Node.js 10 (#813) +* fixed typo in readme (#812) +* Fix types (#804) +* Update eslint to resolve vulnerabilities in lodash (#799) +* updated readme with custom event listeners. (#791) +* fix tests (#794) + +## 2.15.0 / 2018-03-07 + +* Update downloads badge to point to graph of downloads over time instead of duplicating link to npm +* Arguments description + +## 2.14.1 / 2018-02-07 + +* Fix typing of help function + +## 2.14.0 / 2018-02-05 + +* only register the option:version event once +* Fixes issue #727: Passing empty string for option on command is set to undefined +* enable eqeqeq rule +* resolves #754 add linter configuration to project +* resolves #560 respect custom name for version option +* document how to override the version flag +* document using options per command + +## 2.13.0 / 2018-01-09 + +* Do not print default for --no- +* remove trailing spaces in command help +* Update CI's Node.js to LTS and latest version +* typedefs: Command and Option types added to commander namespace + +## 2.12.2 / 2017-11-28 + +* fix: typings are not shipped + +## 2.12.1 / 2017-11-23 + +* Move @types/node to dev dependency + +## 2.12.0 / 2017-11-22 + +* add attributeName() method to Option objects +* Documentation updated for options with --no prefix +* typings: `outputHelp` takes a string as the first parameter +* typings: use overloads +* feat(typings): update to match js api +* Print default value in option help +* Fix translation error +* Fail when using same command and alias (#491) +* feat(typings): add help callback +* fix bug when description is add after command with options (#662) +* Format js code +* Rename History.md to CHANGELOG.md (#668) +* feat(typings): add typings to support TypeScript (#646) +* use current node + +## 2.11.0 / 2017-07-03 + +* Fix help section order and padding (#652) +* feature: support for signals to subcommands (#632) +* Fixed #37, --help should not display first (#447) +* Fix translation errors. (#570) +* Add package-lock.json +* Remove engines +* Upgrade package version +* Prefix events to prevent conflicts between commands and options (#494) +* Removing dependency on graceful-readlink +* Support setting name in #name function and make it chainable +* Add .vscode directory to .gitignore (Visual Studio Code metadata) +* Updated link to ruby commander in readme files + +## 2.10.0 / 2017-06-19 + +* Update .travis.yml. drop support for older node.js versions. +* Fix require arguments in README.md +* On SemVer you do not start from 0.0.1 +* Add missing semi colon in readme +* Add save param to npm install +* node v6 travis test +* Update Readme_zh-CN.md +* Allow literal '--' to be passed-through as an argument +* Test subcommand alias help +* link build badge to master branch +* Support the alias of Git style sub-command +* added keyword commander for better search result on npm +* Fix Sub-Subcommands +* test node.js stable +* Fixes TypeError when a command has an option called `--description` +* Update README.md to make it beginner friendly and elaborate on the difference between angled and square brackets. +* Add chinese Readme file + +## 2.9.0 / 2015-10-13 + +* Add option `isDefault` to set default subcommand #415 @Qix- +* Add callback to allow filtering or post-processing of help text #434 @djulien +* Fix `undefined` text in help information close #414 #416 @zhiyelee + +## 2.8.1 / 2015-04-22 + +* Back out `support multiline description` Close #396 #397 + +## 2.8.0 / 2015-04-07 + +* Add `process.execArg` support, execution args like `--harmony` will be passed to sub-commands #387 @DigitalIO @zhiyelee +* Fix bug in Git-style sub-commands #372 @zhiyelee +* Allow commands to be hidden from help #383 @tonylukasavage +* When git-style sub-commands are in use, yet none are called, display help #382 @claylo +* Add ability to specify arguments syntax for top-level command #258 @rrthomas +* Support multiline descriptions #208 @zxqfox + +## 2.7.1 / 2015-03-11 + +* Revert #347 (fix collisions when option and first arg have same name) which causes a bug in #367. + +## 2.7.0 / 2015-03-09 + +* Fix git-style bug when installed globally. Close #335 #349 @zhiyelee +* Fix collisions when option and first arg have same name. Close #346 #347 @tonylukasavage +* Add support for camelCase on `opts()`. Close #353 @nkzawa +* Add node.js 0.12 and io.js to travis.yml +* Allow RegEx options. #337 @palanik +* Fixes exit code when sub-command failing. Close #260 #332 @pirelenito +* git-style `bin` files in $PATH make sense. Close #196 #327 @zhiyelee + +## 2.6.0 / 2014-12-30 + +* added `Command#allowUnknownOption` method. Close #138 #318 @doozr @zhiyelee +* Add application description to the help msg. Close #112 @dalssoft + +## 2.5.1 / 2014-12-15 + +* fixed two bugs incurred by variadic arguments. Close #291 @Quentin01 #302 @zhiyelee + +## 2.5.0 / 2014-10-24 + +* add support for variadic arguments. Closes #277 @whitlockjc + +## 2.4.0 / 2014-10-17 + +* fixed a bug on executing the coercion function of subcommands option. Closes #270 +* added `Command.prototype.name` to retrieve command name. Closes #264 #266 @tonylukasavage +* added `Command.prototype.opts` to retrieve all the options as a simple object of key-value pairs. Closes #262 @tonylukasavage +* fixed a bug on subcommand name. Closes #248 @jonathandelgado +* fixed function normalize doesn’t honor option terminator. Closes #216 @abbr + +## 2.3.0 / 2014-07-16 + +* add command alias'. Closes PR #210 +* fix: Typos. Closes #99 +* fix: Unused fs module. Closes #217 + +## 2.2.0 / 2014-03-29 + +* add passing of previous option value +* fix: support subcommands on windows. Closes #142 +* Now the defaultValue passed as the second argument of the coercion function. + +## 2.1.0 / 2013-11-21 + +* add: allow cflag style option params, unit test, fixes #174 + +## 2.0.0 / 2013-07-18 + +* remove input methods (.prompt, .confirm, etc) + +## Older versions + +* [1.x](./changelogs/CHANGELOG-1.md) +* [0.x](./changelogs/CHANGELOG-0.md) + +[#599]: https://github.com/tj/commander.js/issues/599 +[#611]: https://github.com/tj/commander.js/issues/611 +[#697]: https://github.com/tj/commander.js/issues/697 +[#795]: https://github.com/tj/commander.js/issues/795 +[#806]: https://github.com/tj/commander.js/issues/806 +[#915]: https://github.com/tj/commander.js/issues/915 +[#938]: https://github.com/tj/commander.js/issues/938 +[#963]: https://github.com/tj/commander.js/issues/963 +[#974]: https://github.com/tj/commander.js/issues/974 +[#980]: https://github.com/tj/commander.js/issues/980 +[#987]: https://github.com/tj/commander.js/issues/987 +[#990]: https://github.com/tj/commander.js/issues/990 +[#991]: https://github.com/tj/commander.js/issues/991 +[#993]: https://github.com/tj/commander.js/issues/993 +[#999]: https://github.com/tj/commander.js/issues/999 +[#1010]: https://github.com/tj/commander.js/pull/1010 +[#1018]: https://github.com/tj/commander.js/pull/1018 +[#1026]: https://github.com/tj/commander.js/pull/1026 +[#1027]: https://github.com/tj/commander.js/pull/1027 +[#1028]: https://github.com/tj/commander.js/pull/1028 +[#1035]: https://github.com/tj/commander.js/pull/1035 +[#1040]: https://github.com/tj/commander.js/pull/1040 +[#1047]: https://github.com/tj/commander.js/pull/1047 +[#1048]: https://github.com/tj/commander.js/pull/1048 +[#1049]: https://github.com/tj/commander.js/pull/1049 +[#1051]: https://github.com/tj/commander.js/pull/1051 +[#1052]: https://github.com/tj/commander.js/pull/1052 +[#1053]: https://github.com/tj/commander.js/pull/1053 +[#1071]: https://github.com/tj/commander.js/pull/1071 +[#1081]: https://github.com/tj/commander.js/pull/1081 +[#1091]: https://github.com/tj/commander.js/pull/1091 +[#1096]: https://github.com/tj/commander.js/pull/1096 +[#1102]: https://github.com/tj/commander.js/pull/1102 +[#1118]: https://github.com/tj/commander.js/pull/1118 +[#1157]: https://github.com/tj/commander.js/pull/1157 + +[Unreleased]: https://github.com/tj/commander.js/compare/master...develop +[4.1.1]: https://github.com/tj/commander.js/compare/v4.0.0..v4.1.1 +[4.1.0]: https://github.com/tj/commander.js/compare/v4.0.1..v4.1.0 +[4.0.1]: https://github.com/tj/commander.js/compare/v4.0.0..v4.0.1 +[4.0.0]: https://github.com/tj/commander.js/compare/v3.0.2..v4.0.0 +[4.0.0-1]: https://github.com/tj/commander.js/compare/v4.0.0-0..v4.0.0-1 +[4.0.0-0]: https://github.com/tj/commander.js/compare/v3.0.2...v4.0.0-0 +[3.0.2]: https://github.com/tj/commander.js/compare/v3.0.1...v3.0.2 +[3.0.1]: https://github.com/tj/commander.js/compare/v3.0.0...v3.0.1 +[3.0.0]: https://github.com/tj/commander.js/compare/v2.20.1...v3.0.0 +[2.20.1]: https://github.com/tj/commander.js/compare/v2.20.0...v2.20.1 diff --git a/node_modules/commander/LICENSE b/node_modules/commander/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..10f997ab104594695189c3fca8fa6c65ae9ccdd6 --- /dev/null +++ b/node_modules/commander/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2011 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/commander/Readme.md b/node_modules/commander/Readme.md new file mode 100644 index 0000000000000000000000000000000000000000..aa4f42b598eb877b6a31d29c59fffed9cdda5c51 --- /dev/null +++ b/node_modules/commander/Readme.md @@ -0,0 +1,713 @@ +# Commander.js + +[![Build Status](https://api.travis-ci.org/tj/commander.js.svg?branch=master)](http://travis-ci.org/tj/commander.js) +[![NPM Version](http://img.shields.io/npm/v/commander.svg?style=flat)](https://www.npmjs.org/package/commander) +[![NPM Downloads](https://img.shields.io/npm/dm/commander.svg?style=flat)](https://npmcharts.com/compare/commander?minimal=true) +[![Install Size](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) + +The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/commander-rb/commander). + +Read this in other languages: English | [简体中文](./Readme_zh-CN.md) + +- [Commander.js](#commanderjs) + - [Installation](#installation) + - [Declaring program variable](#declaring-program-variable) + - [Options](#options) + - [Common option types, boolean and value](#common-option-types-boolean-and-value) + - [Default option value](#default-option-value) + - [Other option types, negatable boolean and flag|value](#other-option-types-negatable-boolean-and-flagvalue) + - [Custom option processing](#custom-option-processing) + - [Required option](#required-option) + - [Version option](#version-option) + - [Commands](#commands) + - [Specify the argument syntax](#specify-the-argument-syntax) + - [Action handler (sub)commands](#action-handler-subcommands) + - [Git-style executable (sub)commands](#git-style-executable-subcommands) + - [Automated --help](#automated---help) + - [Custom help](#custom-help) + - [.usage and .name](#usage-and-name) + - [.outputHelp(cb)](#outputhelpcb) + - [.helpOption(flags, description)](#helpoptionflags-description) + - [.help(cb)](#helpcb) + - [Custom event listeners](#custom-event-listeners) + - [Bits and pieces](#bits-and-pieces) + - [Avoiding option name clashes](#avoiding-option-name-clashes) + - [TypeScript](#typescript) + - [Node options such as --harmony](#node-options-such-as---harmony) + - [Node debugging](#node-debugging) + - [Override exit handling](#override-exit-handling) + - [Examples](#examples) + - [License](#license) + - [Support](#support) + - [Commander for enterprise](#commander-for-enterprise) + +## Installation + +```bash +npm install commander +``` + +## Declaring _program_ variable + +Commander exports a global object which is convenient for quick programs. +This is used in the examples in this README for brevity. + +```js +const program = require('commander'); +program.version('0.0.1'); +``` + +For larger programs which may use commander in multiple ways, including unit testing, it is better to create a local Command object to use. + + ```js + const commander = require('commander'); + const program = new commander.Command(); + program.version('0.0.1'); + ``` + +## Options + +Options are defined with the `.option()` method, also serving as documentation for the options. Each option can have a short flag (single character) and a long name, separated by a comma or space. + +The options can be accessed as properties on the Command object. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. Multiple short flags may be combined as a single arg, for example `-abc` is equivalent to `-a -b -c`. + +See also optional new behaviour to [avoid name clashes](#avoiding-option-name-clashes). + +### Common option types, boolean and value + +The two most used option types are a boolean flag, and an option which takes a value (declared using angle brackets). Both are `undefined` unless specified on command line. + +```js +const program = require('commander'); + +program + .option('-d, --debug', 'output extra debugging') + .option('-s, --small', 'small pizza size') + .option('-p, --pizza-type ', 'flavour of pizza'); + +program.parse(process.argv); + +if (program.debug) console.log(program.opts()); +console.log('pizza details:'); +if (program.small) console.log('- small pizza size'); +if (program.pizzaType) console.log(`- ${program.pizzaType}`); +``` + +```bash +$ pizza-options -d +{ debug: true, small: undefined, pizzaType: undefined } +pizza details: +$ pizza-options -p +error: option '-p, --pizza-type ' argument missing +$ pizza-options -ds -p vegetarian +{ debug: true, small: true, pizzaType: 'vegetarian' } +pizza details: +- small pizza size +- vegetarian +$ pizza-options --pizza-type=cheese +pizza details: +- cheese +``` + +`program.parse(arguments)` processes the arguments, leaving any args not consumed by the options as the `program.args` array. + +### Default option value + +You can specify a default value for an option which takes a value. + +```js +const program = require('commander'); + +program + .option('-c, --cheese ', 'add the specified type of cheese', 'blue'); + +program.parse(process.argv); + +console.log(`cheese: ${program.cheese}`); +``` + +```bash +$ pizza-options +cheese: blue +$ pizza-options --cheese stilton +cheese: stilton +``` + +### Other option types, negatable boolean and flag|value + +You can specify a boolean option long name with a leading `no-` to set the option value to false when used. +Defined alone this also makes the option true by default. + +If you define `--foo` first, adding `--no-foo` does not change the default value from what it would +otherwise be. You can specify a default boolean value for a boolean flag and it can be overridden on command line. + +```js +const program = require('commander'); + +program + .option('--no-sauce', 'Remove sauce') + .option('--cheese ', 'cheese flavour', 'mozzarella') + .option('--no-cheese', 'plain with no cheese') + .parse(process.argv); + +const sauceStr = program.sauce ? 'sauce' : 'no sauce'; +const cheeseStr = (program.cheese === false) ? 'no cheese' : `${program.cheese} cheese`; +console.log(`You ordered a pizza with ${sauceStr} and ${cheeseStr}`); +``` + +```bash +$ pizza-options +You ordered a pizza with sauce and mozzarella cheese +$ pizza-options --sauce +error: unknown option '--sauce' +$ pizza-options --cheese=blue +You ordered a pizza with sauce and blue cheese +$ pizza-options --no-sauce --no-cheese +You ordered a pizza with no sauce and no cheese +``` + +You can specify an option which functions as a flag but may also take a value (declared using square brackets). + +```js +const program = require('commander'); + +program + .option('-c, --cheese [type]', 'Add cheese with optional type'); + +program.parse(process.argv); + +if (program.cheese === undefined) console.log('no cheese'); +else if (program.cheese === true) console.log('add cheese'); +else console.log(`add cheese type ${program.cheese}`); +``` + +```bash +$ pizza-options +no cheese +$ pizza-options --cheese +add cheese +$ pizza-options --cheese mozzarella +add cheese type mozzarella +``` + +### Custom option processing + +You may specify a function to do custom processing of option values. The callback function receives two parameters, the user specified value and the +previous value for the option. It returns the new value for the option. + +This allows you to coerce the option value to the desired type, or accumulate values, or do entirely custom processing. + +You can optionally specify the default/starting value for the option after the function. + +```js +const program = require('commander'); + +function myParseInt(value, dummyPrevious) { + // parseInt takes a string and an optional radix + return parseInt(value); +} + +function increaseVerbosity(dummyValue, previous) { + return previous + 1; +} + +function collect(value, previous) { + return previous.concat([value]); +} + +function commaSeparatedList(value, dummyPrevious) { + return value.split(','); +} + +program + .option('-f, --float ', 'float argument', parseFloat) + .option('-i, --integer ', 'integer argument', myParseInt) + .option('-v, --verbose', 'verbosity that can be increased', increaseVerbosity, 0) + .option('-c, --collect ', 'repeatable value', collect, []) + .option('-l, --list ', 'comma separated list', commaSeparatedList) +; + +program.parse(process.argv); + +if (program.float !== undefined) console.log(`float: ${program.float}`); +if (program.integer !== undefined) console.log(`integer: ${program.integer}`); +if (program.verbose > 0) console.log(`verbosity: ${program.verbose}`); +if (program.collect.length > 0) console.log(program.collect); +if (program.list !== undefined) console.log(program.list); +``` + +```bash +$ custom -f 1e2 +float: 100 +$ custom --integer 2 +integer: 2 +$ custom -v -v -v +verbose: 3 +$ custom -c a -c b -c c +[ 'a', 'b', 'c' ] +$ custom --list x,y,z +[ 'x', 'y', 'z' ] +``` + +### Required option + +You may specify a required (mandatory) option using `.requiredOption`. The option must be specified on the command line, or by having a default value. The method is otherwise the same as `.option` in format, taking flags and description, and optional default value or custom processing. + +```js +const program = require('commander'); + +program + .requiredOption('-c, --cheese ', 'pizza must have cheese'); + +program.parse(process.argv); +``` + +``` +$ pizza +error: required option '-c, --cheese ' not specified +``` + +### Version option + +The optional `version` method adds handling for displaying the command version. The default option flags are `-V` and `--version`, and when present the command prints the version number and exits. + +```js +program.version('0.0.1'); +``` + +```bash +$ ./examples/pizza -V +0.0.1 +``` + +You may change the flags and description by passing additional parameters to the `version` method, using +the same syntax for flags as the `option` method. The version flags can be named anything, but a long name is required. + +```js +program.version('0.0.1', '-v, --vers', 'output the current version'); +``` + +## Commands + +You can specify (sub)commands for your top-level command using `.command`. There are two ways these can be implemented: using an action handler attached to the command, or as a separate executable file (described in more detail later). In the first parameter to `.command` you specify the command name and any command arguments. The arguments may be `` or `[optional]`, and the last argument may also be `variadic...`. + +For example: + +```js +// Command implemented using action handler (description is supplied separately to `.command`) +// Returns new command for configuring. +program + .command('clone [destination]') + .description('clone a repository into a newly created directory') + .action((source, destination) => { + console.log('clone command called'); + }); + +// Command implemented using separate executable file (description is second parameter to `.command`) +// Returns top-level command for adding more commands. +program + .command('start ', 'start named service') + .command('stop [service]', 'stop named service, or all if no name supplied'); +``` + +### Specify the argument syntax + +You use `.arguments` to specify the arguments for the top-level command, and for subcommands they are included in the `.command` call. Angled brackets (e.g. ``) indicate required input. Square brackets (e.g. `[optional]`) indicate optional input. + +```js +const program = require('commander'); + +program + .version('0.1.0') + .arguments(' [env]') + .action(function (cmd, env) { + cmdValue = cmd; + envValue = env; + }); + +program.parse(process.argv); + +if (typeof cmdValue === 'undefined') { + console.error('no command given!'); + process.exit(1); +} +console.log('command:', cmdValue); +console.log('environment:', envValue || "no environment given"); +``` + + The last argument of a command can be variadic, and only the last argument. To make an argument variadic you + append `...` to the argument name. For example: + +```js +const program = require('commander'); + +program + .version('0.1.0') + .command('rmdir [otherDirs...]') + .action(function (dir, otherDirs) { + console.log('rmdir %s', dir); + if (otherDirs) { + otherDirs.forEach(function (oDir) { + console.log('rmdir %s', oDir); + }); + } + }); + +program.parse(process.argv); +``` + +The variadic argument is passed to the action handler as an array. (And this also applies to `program.args`.) + +### Action handler (sub)commands + +You can add options to a command that uses an action handler. +The action handler gets passed a parameter for each argument you declared, and one additional argument which is the +command object itself. This command argument has the values for the command-specific options added as properties. + +```js +const program = require('commander'); + +program + .command('rm ') + .option('-r, --recursive', 'Remove recursively') + .action(function (dir, cmdObj) { + console.log('remove ' + dir + (cmdObj.recursive ? ' recursively' : '')) + }) + +program.parse(process.argv) +``` + +You may supply an `async` action handler, in which case you call `.parseAsync` rather than `.parse`. + +```js +async function run() { /* code goes here */ } + +async function main() { + program + .command('run') + .action(run); + await program.parseAsync(process.argv); +} +``` + +A command's options on the command line are validated when the command is used. Any unknown options will be reported as an error. However, if an action-based command does not define an action, then the options are not validated. + +Configuration options can be passed with the call to `.command()`. Specifying `true` for `opts.noHelp` will remove the command from the generated help output. + +### Git-style executable (sub)commands + +When `.command()` is invoked with a description argument, this tells commander that you're going to use separate executables for sub-commands, much like `git(1)` and other popular tools. +Commander will search the executables in the directory of the entry script (like `./examples/pm`) with the name `program-subcommand`, like `pm-install`, `pm-search`. +You can specify a custom name with the `executableFile` configuration option. + +You handle the options for an executable (sub)command in the executable, and don't declare them at the top-level. + +```js +// file: ./examples/pm +const program = require('commander'); + +program + .version('0.1.0') + .command('install [name]', 'install one or more packages') + .command('search [query]', 'search with optional query') + .command('update', 'update installed packages', {executableFile: 'myUpdateSubCommand'}) + .command('list', 'list packages installed', {isDefault: true}) + .parse(process.argv); +``` + +Configuration options can be passed with the call to `.command()`. Specifying `true` for `opts.noHelp` will remove the command from the generated help output. Specifying `true` for `opts.isDefault` will run the subcommand if no other subcommand is specified. +Specifying a name with `executableFile` will override the default constructed name. + +If the program is designed to be installed globally, make sure the executables have proper modes, like `755`. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +```bash +$ ./examples/pizza --help +Usage: pizza [options] + +An application for pizzas ordering + +Options: + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineapple + -b, --bbq Add bbq sauce + -c, --cheese Add the specified type of cheese (default: "marble") + -C, --no-cheese You do not want any cheese + -h, --help output usage information +``` + +### Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviors, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +const program = require('commander'); + +program + .version('0.1.0') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log('') + console.log('Examples:'); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +Yields the following help output when `node script-name.js -h` or `node script-name.js --help` are run: + +```Text +Usage: custom-help [options] + +Options: + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + $ custom-help --help + $ custom-help -h +``` + +### .usage and .name + +These allow you to customise the usage description in the first line of the help. The name is otherwise +deduced from the (full) program arguments. Given: + +```js +program + .name("my-command") + .usage("[global options] command") +``` + +The help will start with: + +```Text +Usage: my-command [global options] command +``` + +### .outputHelp(cb) + +Output help information without exiting. +Optional callback cb allows post-processing of help text before it is displayed. + +If you want to display help by default (e.g. if no command was provided), you can use something like: + +```js +const program = require('commander'); +const colors = require('colors'); + +program + .version('0.1.0') + .command('getstream [url]', 'get stream URL') + .parse(process.argv); + +if (!process.argv.slice(2).length) { + program.outputHelp(make_red); +} + +function make_red(txt) { + return colors.red(txt); //display the help text in red on the console +} +``` + +### .helpOption(flags, description) + + Override the default help flags and description. + +```js +program + .helpOption('-e, --HELP', 'read more information'); +``` + +### .help(cb) + + Output help information and exit immediately. + Optional callback cb allows post-processing of help text before it is displayed. + +## Custom event listeners + + You can execute custom actions by listening to command and option events. + +```js +program.on('option:verbose', function () { + process.env.VERBOSE = this.verbose; +}); + +// error on unknown commands +program.on('command:*', function () { + console.error('Invalid command: %s\nSee --help for a list of available commands.', program.args.join(' ')); + process.exit(1); +}); +``` + +## Bits and pieces + +### Avoiding option name clashes + +The original and default behaviour is that the option values are stored +as properties on the program, and the action handler is passed a +command object with the options values stored as properties. +This is very convenient to code, but the downside is possible clashes with +existing properties of Command. + +There are two new routines to change the behaviour, and the default behaviour may change in the future: + +- `storeOptionsAsProperties`: whether to store option values as properties on command object, or store separately (specify false) and access using `.opts()` +- `passCommandToAction`: whether to pass command to action handler, +or just the options (specify false) + +```js +// file: ./examples/storeOptionsAsProperties.action.js +program + .storeOptionsAsProperties(false) + .passCommandToAction(false); + +program + .name('my-program-name') + .option('-n,--name '); + +program + .command('show') + .option('-a,--action ') + .action((options) => { + console.log(options.action); + }); + +program.parse(process.argv); + +const programOptions = program.opts(); +console.log(programOptions.name); +``` + +### TypeScript + +The Commander package includes its TypeScript Definition file, but also requires the node types which you need to install yourself. e.g. + +```bash +npm install commander +npm install --save-dev @types/node +``` + +If you use `ts-node` and git-style sub-commands written as `.ts` files, you need to call your program through node to get the sub-commands called correctly. e.g. + +```bash +node -r ts-node/register pm.ts +``` + +### Node options such as `--harmony` + +You can enable `--harmony` option in two ways: + +- Use `#! /usr/bin/env node --harmony` in the sub-commands scripts. (Note Windows does not support this pattern.) +- Use the `--harmony` option when call the command, like `node --harmony examples/pm publish`. The `--harmony` option will be preserved when spawning sub-command process. + +### Node debugging + +If you are using the node inspector for [debugging](https://nodejs.org/en/docs/guides/debugging-getting-started/) git-style executable (sub)commands using `node --inspect` et al, +the inspector port is incremented by 1 for the spawned subcommand. + +### Override exit handling + +By default Commander calls `process.exit` when it detects errors, or after displaying the help or version. You can override +this behaviour and optionally supply a callback. The default override throws a `CommanderError`. + +The override callback is passed a `CommanderError` with properties `exitCode` number, `code` string, and `message`. The default override behaviour is to throw the error, except for async handling of executable subcommand completion which carries on. The normal display of error messages or version or help +is not affected by the override which is called after the display. + +``` js +program.exitOverride(); + +try { + program.parse(process.argv); +} catch (err) { + // custom processing... +} +``` + +## Examples + +```js +const program = require('commander'); + +program + .version('0.1.0') + .option('-C, --chdir ', 'change the working directory') + .option('-c, --config ', 'set config path. defaults to ./deploy.conf') + .option('-T, --no-tests', 'ignore test hook'); + +program + .command('setup [env]') + .description('run setup commands for all envs') + .option("-s, --setup_mode [mode]", "Which setup mode to use") + .action(function(env, options){ + const mode = options.setup_mode || "normal"; + env = env || 'all'; + console.log('setup for %s env(s) with %s mode', env, mode); + }); + +program + .command('exec ') + .alias('ex') + .description('execute the given remote cmd') + .option("-e, --exec_mode ", "Which exec mode to use") + .action(function(cmd, options){ + console.log('exec "%s" using %s mode', cmd, options.exec_mode); + }).on('--help', function() { + console.log(''); + console.log('Examples:'); + console.log(''); + console.log(' $ deploy exec sequential'); + console.log(' $ deploy exec async'); + }); + +program + .command('*') + .action(function(env){ + console.log('deploying "%s"', env); + }); + +program.parse(process.argv); +``` + +More Demos can be found in the [examples](https://github.com/tj/commander.js/tree/master/examples) directory. + +## License + +[MIT](https://github.com/tj/commander.js/blob/master/LICENSE) + +## Support + +Commander 4.x is supported on Node 8 and above, and is likely to work with Node 6 but not tested. +(For versions of Node below Node 6, use Commander 3.x or 2.x.) + +The main forum for free and community support is the project [Issues](https://github.com/tj/commander.js/issues) on GitHub. + +### Commander for enterprise + +Available as part of the Tidelift Subscription + +The maintainers of Commander 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-commander?utm_source=npm-commander&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/commander/index.js b/node_modules/commander/index.js new file mode 100644 index 0000000000000000000000000000000000000000..37d20cc5ef3640706b2ee9abca207ca0b361059f --- /dev/null +++ b/node_modules/commander/index.js @@ -0,0 +1,1649 @@ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var spawn = require('child_process').spawn; +var path = require('path'); +var dirname = path.dirname; +var basename = path.basename; +var fs = require('fs'); + +/** + * Inherit `Command` from `EventEmitter.prototype`. + */ + +require('util').inherits(Command, EventEmitter); + +/** + * Expose the root command. + */ + +exports = module.exports = new Command(); + +/** + * Expose `Command`. + */ + +exports.Command = Command; + +/** + * Expose `Option`. + */ + +exports.Option = Option; + +/** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {String} flags + * @param {String} description + * @api public + */ + +function Option(flags, description) { + this.flags = flags; + this.required = flags.indexOf('<') >= 0; // A value must be supplied when the option is specified. + this.optional = flags.indexOf('[') >= 0; // A value is optional when the option is specified. + this.mandatory = false; // The option must have a value after parsing, which usually means it must be specified on command line. + this.negate = flags.indexOf('-no-') !== -1; + flags = flags.split(/[ ,|]+/); + if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); + this.long = flags.shift(); + this.description = description || ''; +} + +/** + * Return option name. + * + * @return {String} + * @api private + */ + +Option.prototype.name = function() { + return this.long.replace(/^--/, ''); +}; + +/** + * Return option name, in a camelcase format that can be used + * as a object attribute key. + * + * @return {String} + * @api private + */ + +Option.prototype.attributeName = function() { + return camelcase(this.name().replace(/^no-/, '')); +}; + +/** + * Check if `arg` matches the short or long flag. + * + * @param {String} arg + * @return {Boolean} + * @api private + */ + +Option.prototype.is = function(arg) { + return this.short === arg || this.long === arg; +}; + +/** + * CommanderError class + * @class + */ +class CommanderError extends Error { + /** + * Constructs the CommanderError class + * @param {Number} exitCode suggested exit code which could be used with process.exit + * @param {String} code an id string representing the error + * @param {String} message human-readable description of the error + * @constructor + */ + constructor(exitCode, code, message) { + super(message); + // properly capture stack trace in Node.js + Error.captureStackTrace(this, this.constructor); + this.name = this.constructor.name; + this.code = code; + this.exitCode = exitCode; + } +} + +exports.CommanderError = CommanderError; + +/** + * Initialize a new `Command`. + * + * @param {String} [name] + * @api public + */ + +function Command(name) { + this.commands = []; + this.options = []; + this._execs = new Set(); + this._allowUnknownOption = false; + this._args = []; + this._name = name || ''; + this._optionValues = {}; + this._storeOptionsAsProperties = true; // backwards compatible by default + this._passCommandToAction = true; // backwards compatible by default + this._actionResults = []; + + this._helpFlags = '-h, --help'; + this._helpDescription = 'output usage information'; + this._helpShortFlag = '-h'; + this._helpLongFlag = '--help'; +} + +/** + * Define a command. + * + * There are two styles of command: pay attention to where to put the description. + * + * Examples: + * + * // Command implemented using action handler (description is supplied separately to `.command`) + * program + * .command('clone [destination]') + * .description('clone a repository into a newly created directory') + * .action((source, destination) => { + * console.log('clone command called'); + * }); + * + * // Command implemented using separate executable file (description is second parameter to `.command`) + * program + * .command('start ', 'start named service') + * .command('stop [service]', 'stop named service, or all if no name supplied'); + * + * @param {string} nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` + * @param {Object|string} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable) + * @param {Object} [execOpts] - configuration options (for executable) + * @return {Command} returns new command for action handler, or top-level command for executable command + * @api public + */ + +Command.prototype.command = function(nameAndArgs, actionOptsOrExecDesc, execOpts) { + var desc = actionOptsOrExecDesc; + var opts = execOpts; + if (typeof desc === 'object' && desc !== null) { + opts = desc; + desc = null; + } + opts = opts || {}; + var args = nameAndArgs.split(/ +/); + var cmd = new Command(args.shift()); + + if (desc) { + cmd.description(desc); + this.executables = true; + this._execs.add(cmd._name); + if (opts.isDefault) this.defaultExecutable = cmd._name; + } + cmd._noHelp = !!opts.noHelp; + cmd._helpFlags = this._helpFlags; + cmd._helpDescription = this._helpDescription; + cmd._helpShortFlag = this._helpShortFlag; + cmd._helpLongFlag = this._helpLongFlag; + cmd._exitCallback = this._exitCallback; + cmd._storeOptionsAsProperties = this._storeOptionsAsProperties; + cmd._passCommandToAction = this._passCommandToAction; + + cmd._executableFile = opts.executableFile; // Custom name for executable file + this.commands.push(cmd); + cmd.parseExpectedArgs(args); + cmd.parent = this; + + if (desc) return this; + return cmd; +}; + +/** + * Define argument syntax for the top-level command. + * + * @api public + */ + +Command.prototype.arguments = function(desc) { + return this.parseExpectedArgs(desc.split(/ +/)); +}; + +/** + * Add an implicit `help [cmd]` subcommand + * which invokes `--help` for the given command. + * + * @api private + */ + +Command.prototype.addImplicitHelpCommand = function() { + this.command('help [cmd]', 'display help for [cmd]'); +}; + +/** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {Array} args + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parseExpectedArgs = function(args) { + if (!args.length) return; + var self = this; + args.forEach(function(arg) { + var argDetails = { + required: false, + name: '', + variadic: false + }; + + switch (arg[0]) { + case '<': + argDetails.required = true; + argDetails.name = arg.slice(1, -1); + break; + case '[': + argDetails.name = arg.slice(1, -1); + break; + } + + if (argDetails.name.length > 3 && argDetails.name.slice(-3) === '...') { + argDetails.variadic = true; + argDetails.name = argDetails.name.slice(0, -3); + } + if (argDetails.name) { + self._args.push(argDetails); + } + }); + return this; +}; + +/** + * Register callback to use as replacement for calling process.exit. + * + * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing + * @return {Command} for chaining + * @api public + */ + +Command.prototype.exitOverride = function(fn) { + if (fn) { + this._exitCallback = fn; + } else { + this._exitCallback = function(err) { + if (err.code !== 'commander.executeSubCommandAsync') { + throw err; + } else { + // Async callback from spawn events, not useful to throw. + } + }; + } + return this; +}; + +/** + * Call process.exit, and _exitCallback if defined. + * + * @param {Number} exitCode exit code for using with process.exit + * @param {String} code an id string representing the error + * @param {String} message human-readable description of the error + * @return never + * @api private + */ + +Command.prototype._exit = function(exitCode, code, message) { + if (this._exitCallback) { + this._exitCallback(new CommanderError(exitCode, code, message)); + // Expecting this line is not reached. + } + process.exit(exitCode); +}; + +/** + * Register callback `fn` for the command. + * + * Examples: + * + * program + * .command('help') + * .description('display verbose help') + * .action(function() { + * // output help here + * }); + * + * @param {Function} fn + * @return {Command} for chaining + * @api public + */ + +Command.prototype.action = function(fn) { + var self = this; + var listener = function(args, unknown) { + // Parse any so-far unknown options + args = args || []; + unknown = unknown || []; + + var parsed = self.parseOptions(unknown); + + // Output help if necessary + outputHelpIfRequested(self, parsed.unknown); + self._checkForMissingMandatoryOptions(); + + // If there are still any unknown options, then we simply + // die, unless someone asked for help, in which case we give it + // to them, and then we die. + if (parsed.unknown.length > 0) { + self.unknownOption(parsed.unknown[0]); + } + + // Leftover arguments need to be pushed back. Fixes issue #56 + if (parsed.args.length) args = parsed.args.concat(args); + + self._args.forEach(function(arg, i) { + if (arg.required && args[i] == null) { + self.missingArgument(arg.name); + } else if (arg.variadic) { + if (i !== self._args.length - 1) { + self.variadicArgNotLast(arg.name); + } + + args[i] = args.splice(i); + } + }); + + // The .action callback takes an extra parameter which is the command itself. + var expectedArgsCount = self._args.length; + var actionArgs = args.slice(0, expectedArgsCount); + if (self._passCommandToAction) { + actionArgs[expectedArgsCount] = self; + } else { + actionArgs[expectedArgsCount] = self.opts(); + } + // Add the extra arguments so available too. + if (args.length > expectedArgsCount) { + actionArgs.push(args.slice(expectedArgsCount)); + } + + const actionResult = fn.apply(self, actionArgs); + // Remember result in case it is async. Assume parseAsync getting called on root. + let rootCommand = self; + while (rootCommand.parent) { + rootCommand = rootCommand.parent; + } + rootCommand._actionResults.push(actionResult); + }; + var parent = this.parent || this; + var name = parent === this ? '*' : this._name; + parent.on('command:' + name, listener); + if (this._alias) parent.on('command:' + this._alias, listener); + return this; +}; + +/** + * Internal implementation shared by .option() and .requiredOption() + * + * @param {Object} config + * @param {String} flags + * @param {String} description + * @param {Function|*} [fn] - custom option processing function or default vaue + * @param {*} [defaultValue] + * @return {Command} for chaining + * @api private + */ + +Command.prototype._optionEx = function(config, flags, description, fn, defaultValue) { + var self = this, + option = new Option(flags, description), + oname = option.name(), + name = option.attributeName(); + option.mandatory = !!config.mandatory; + + // default as 3rd arg + if (typeof fn !== 'function') { + if (fn instanceof RegExp) { + // This is a bit simplistic (especially no error messages), and probably better handled by caller using custom option processing. + // No longer documented in README, but still present for backwards compatibility. + var regex = fn; + fn = function(val, def) { + var m = regex.exec(val); + return m ? m[0] : def; + }; + } else { + defaultValue = fn; + fn = null; + } + } + + // preassign default value for --no-*, [optional], , or plain flag if boolean value + if (option.negate || option.optional || option.required || typeof defaultValue === 'boolean') { + // when --no-foo we make sure default is true, unless a --foo option is already defined + if (option.negate) { + const positiveLongFlag = option.long.replace(/^--no-/, '--'); + defaultValue = self.optionFor(positiveLongFlag) ? self._getOptionValue(name) : true; + } + // preassign only if we have a default + if (defaultValue !== undefined) { + self._setOptionValue(name, defaultValue); + option.defaultValue = defaultValue; + } + } + + // register the option + this.options.push(option); + + // when it's passed assign the value + // and conditionally invoke the callback + this.on('option:' + oname, function(val) { + // coercion + if (val !== null && fn) { + val = fn(val, self._getOptionValue(name) === undefined ? defaultValue : self._getOptionValue(name)); + } + + // unassigned or boolean value + if (typeof self._getOptionValue(name) === 'boolean' || typeof self._getOptionValue(name) === 'undefined') { + // if no value, negate false, and we have a default, then use it! + if (val == null) { + self._setOptionValue(name, option.negate + ? false + : defaultValue || true); + } else { + self._setOptionValue(name, val); + } + } else if (val !== null) { + // reassign + self._setOptionValue(name, option.negate ? false : val); + } + }); + + return this; +}; + +/** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * Examples: + * + * // simple boolean defaulting to undefined + * program.option('-p, --pepper', 'add pepper'); + * + * program.pepper + * // => undefined + * + * --pepper + * program.pepper + * // => true + * + * // simple boolean defaulting to true (unless non-negated option is also defined) + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => false + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {String} flags + * @param {String} description + * @param {Function|*} [fn] - custom option processing function or default vaue + * @param {*} [defaultValue] + * @return {Command} for chaining + * @api public + */ + +Command.prototype.option = function(flags, description, fn, defaultValue) { + return this._optionEx({}, flags, description, fn, defaultValue); +}; + +/* + * Add a required option which must have a value after parsing. This usually means + * the option must be specified on the command line. (Otherwise the same as .option().) + * + * The `flags` string should contain both the short and long flags, separated by comma, a pipe or space. + * + * @param {String} flags + * @param {String} description + * @param {Function|*} [fn] - custom option processing function or default vaue + * @param {*} [defaultValue] + * @return {Command} for chaining + * @api public + */ + +Command.prototype.requiredOption = function(flags, description, fn, defaultValue) { + return this._optionEx({ mandatory: true }, flags, description, fn, defaultValue); +}; + +/** + * Allow unknown options on the command line. + * + * @param {Boolean} arg if `true` or omitted, no error will be thrown + * for unknown options. + * @api public + */ +Command.prototype.allowUnknownOption = function(arg) { + this._allowUnknownOption = arguments.length === 0 || arg; + return this; +}; + +/** + * Whether to store option values as properties on command object, + * or store separately (specify false). In both cases the option values can be accessed using .opts(). + * + * @param {boolean} value + * @return {Command} Command for chaining + * @api public + */ + +Command.prototype.storeOptionsAsProperties = function(value) { + this._storeOptionsAsProperties = (value === undefined) || value; + if (this.options.length) { + // This is for programmer, not end user. + console.error('Commander usage error: call storeOptionsAsProperties before adding options'); + } + return this; +}; + +/** + * Whether to pass command to action handler, + * or just the options (specify false). + * + * @param {boolean} value + * @return {Command} Command for chaining + * @api public + */ + +Command.prototype.passCommandToAction = function(value) { + this._passCommandToAction = (value === undefined) || value; + return this; +}; + +/** + * Store option value + * + * @param {String} key + * @param {Object} value + * @api private + */ + +Command.prototype._setOptionValue = function(key, value) { + if (this._storeOptionsAsProperties) { + this[key] = value; + } else { + this._optionValues[key] = value; + } +}; + +/** + * Retrieve option value + * + * @param {String} key + * @return {Object} value + * @api private + */ + +Command.prototype._getOptionValue = function(key) { + if (this._storeOptionsAsProperties) { + return this[key]; + } + return this._optionValues[key]; +}; + +/** + * Parse `argv`, setting options and invoking commands when defined. + * + * @param {Array} argv + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parse = function(argv) { + // implicit help + if (this.executables) this.addImplicitHelpCommand(); + + // store raw args + this.rawArgs = argv; + + // guess name + this._name = this._name || basename(argv[1], '.js'); + + // github-style sub-commands with no sub-command + if (this.executables && argv.length < 3 && !this.defaultExecutable) { + // this user needs help + argv.push(this._helpLongFlag); + } + + // process argv + var normalized = this.normalize(argv.slice(2)); + var parsed = this.parseOptions(normalized); + var args = this.args = parsed.args; + + var result = this.parseArgs(this.args, parsed.unknown); + + if (args[0] === 'help' && args.length === 1) this.help(); + + // Note for future: we could return early if we found an action handler in parseArgs, as none of following code needed? + + // --help + if (args[0] === 'help') { + args[0] = args[1]; + args[1] = this._helpLongFlag; + } else { + // If calling through to executable subcommand we could check for help flags before failing, + // but a somewhat unlikely case since program options not passed to executable subcommands. + // Wait for reports to see if check needed and what usage pattern is. + this._checkForMissingMandatoryOptions(); + } + + // executable sub-commands + // (Debugging note for future: args[0] is not right if an action has been called) + var name = result.args[0]; + var subCommand = null; + + // Look for subcommand + if (name) { + subCommand = this.commands.find(function(command) { + return command._name === name; + }); + } + + // Look for alias + if (!subCommand && name) { + subCommand = this.commands.find(function(command) { + return command.alias() === name; + }); + if (subCommand) { + name = subCommand._name; + args[0] = name; + } + } + + // Look for default subcommand + if (!subCommand && this.defaultExecutable) { + name = this.defaultExecutable; + args.unshift(name); + subCommand = this.commands.find(function(command) { + return command._name === name; + }); + } + + if (this._execs.has(name)) { + return this.executeSubCommand(argv, args, parsed.unknown, subCommand ? subCommand._executableFile : undefined); + } + + return result; +}; + +/** + * Parse `argv`, setting options and invoking commands when defined. + * + * Use parseAsync instead of parse if any of your action handlers are async. Returns a Promise. + * + * @param {Array} argv + * @return {Promise} + * @api public + */ +Command.prototype.parseAsync = function(argv) { + this.parse(argv); + return Promise.all(this._actionResults); +}; + +/** + * Execute a sub-command executable. + * + * @param {Array} argv + * @param {Array} args + * @param {Array} unknown + * @param {String} executableFile + * @api private + */ + +Command.prototype.executeSubCommand = function(argv, args, unknown, executableFile) { + args = args.concat(unknown); + + if (!args.length) this.help(); + + var isExplicitJS = false; // Whether to use node to launch "executable" + + // executable + var pm = argv[1]; + // name of the subcommand, like `pm-install` + var bin = basename(pm, path.extname(pm)) + '-' + args[0]; + if (executableFile != null) { + bin = executableFile; + // Check for same extensions as we scan for below so get consistent launch behaviour. + var executableExt = path.extname(executableFile); + isExplicitJS = executableExt === '.js' || executableExt === '.ts' || executableExt === '.mjs'; + } + + // In case of globally installed, get the base dir where executable + // subcommand file should be located at + var baseDir; + + var resolvedLink = fs.realpathSync(pm); + + baseDir = dirname(resolvedLink); + + // prefer local `./` to bin in the $PATH + var localBin = path.join(baseDir, bin); + + // whether bin file is a js script with explicit `.js` or `.ts` extension + if (exists(localBin + '.js')) { + bin = localBin + '.js'; + isExplicitJS = true; + } else if (exists(localBin + '.ts')) { + bin = localBin + '.ts'; + isExplicitJS = true; + } else if (exists(localBin + '.mjs')) { + bin = localBin + '.mjs'; + isExplicitJS = true; + } else if (exists(localBin)) { + bin = localBin; + } + + args = args.slice(1); + + var proc; + if (process.platform !== 'win32') { + if (isExplicitJS) { + args.unshift(bin); + // add executable arguments to spawn + args = incrementNodeInspectorPort(process.execArgv).concat(args); + + proc = spawn(process.argv[0], args, { stdio: 'inherit' }); + } else { + proc = spawn(bin, args, { stdio: 'inherit' }); + } + } else { + args.unshift(bin); + // add executable arguments to spawn + args = incrementNodeInspectorPort(process.execArgv).concat(args); + proc = spawn(process.execPath, args, { stdio: 'inherit' }); + } + + var signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP']; + signals.forEach(function(signal) { + process.on(signal, function() { + if (proc.killed === false && proc.exitCode === null) { + proc.kill(signal); + } + }); + }); + + // By default terminate process when spawned process terminates. + // Suppressing the exit if exitCallback defined is a bit messy and of limited use, but does allow process to stay running! + const exitCallback = this._exitCallback; + if (!exitCallback) { + proc.on('close', process.exit.bind(process)); + } else { + proc.on('close', () => { + exitCallback(new CommanderError(process.exitCode || 0, 'commander.executeSubCommandAsync', '(close)')); + }); + } + proc.on('error', function(err) { + if (err.code === 'ENOENT') { + console.error('error: %s(1) does not exist, try --help', bin); + } else if (err.code === 'EACCES') { + console.error('error: %s(1) not executable. try chmod or run with root', bin); + } + if (!exitCallback) { + process.exit(1); + } else { + const wrappedError = new CommanderError(1, 'commander.executeSubCommandAsync', '(error)'); + wrappedError.nestedError = err; + exitCallback(wrappedError); + } + }); + + // Store the reference to the child process + this.runningCommand = proc; +}; + +/** + * Normalize `args`, splitting joined short flags. For example + * the arg "-abc" is equivalent to "-a -b -c". + * This also normalizes equal sign and splits "--abc=def" into "--abc def". + * + * @param {Array} args + * @return {Array} + * @api private + */ + +Command.prototype.normalize = function(args) { + var ret = [], + arg, + lastOpt, + index, + short, + opt; + + for (var i = 0, len = args.length; i < len; ++i) { + arg = args[i]; + if (i > 0) { + lastOpt = this.optionFor(args[i - 1]); + } + + if (arg === '--') { + // Honor option terminator + ret = ret.concat(args.slice(i)); + break; + } else if (lastOpt && lastOpt.required) { + ret.push(arg); + } else if (arg.length > 2 && arg[0] === '-' && arg[1] !== '-') { + short = arg.slice(0, 2); + opt = this.optionFor(short); + if (opt && (opt.required || opt.optional)) { + ret.push(short); + ret.push(arg.slice(2)); + } else { + arg.slice(1).split('').forEach(function(c) { + ret.push('-' + c); + }); + } + } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { + ret.push(arg.slice(0, index), arg.slice(index + 1)); + } else { + ret.push(arg); + } + } + + return ret; +}; + +/** + * Parse command `args`. + * + * When listener(s) are available those + * callbacks are invoked, otherwise the "*" + * event is emitted and those actions are invoked. + * + * @param {Array} args + * @return {Command} for chaining + * @api private + */ + +Command.prototype.parseArgs = function(args, unknown) { + var name; + + if (args.length) { + name = args[0]; + if (this.listeners('command:' + name).length) { + this.emit('command:' + args.shift(), args, unknown); + } else { + this.emit('command:*', args, unknown); + } + } else { + outputHelpIfRequested(this, unknown); + + // If there were no args and we have unknown options, + // then they are extraneous and we need to error. + if (unknown.length > 0 && !this.defaultExecutable) { + this.unknownOption(unknown[0]); + } + if (this.commands.length === 0 && + this._args.filter(function(a) { return a.required; }).length === 0) { + this.emit('command:*'); + } + } + + return this; +}; + +/** + * Return an option matching `arg` if any. + * + * @param {String} arg + * @return {Option} + * @api private + */ + +Command.prototype.optionFor = function(arg) { + for (var i = 0, len = this.options.length; i < len; ++i) { + if (this.options[i].is(arg)) { + return this.options[i]; + } + } +}; + +/** + * Display an error message if a mandatory option does not have a value. + * + * @api private + */ + +Command.prototype._checkForMissingMandatoryOptions = function() { + // Walk up hierarchy so can call from action handler after checking for displaying help. + for (var cmd = this; cmd; cmd = cmd.parent) { + cmd.options.forEach((anOption) => { + if (anOption.mandatory && (cmd._getOptionValue(anOption.attributeName()) === undefined)) { + cmd.missingMandatoryOptionValue(anOption); + } + }); + } +}; + +/** + * Parse options from `argv` returning `argv` + * void of these options. + * + * @param {Array} argv + * @return {{args: Array, unknown: Array}} + * @api public + */ + +Command.prototype.parseOptions = function(argv) { + var args = [], + len = argv.length, + literal, + option, + arg; + + var unknownOptions = []; + + // parse options + for (var i = 0; i < len; ++i) { + arg = argv[i]; + + // literal args after -- + if (literal) { + args.push(arg); + continue; + } + + if (arg === '--') { + literal = true; + continue; + } + + // find matching Option + option = this.optionFor(arg); + + // option is defined + if (option) { + // requires arg + if (option.required) { + arg = argv[++i]; + if (arg == null) return this.optionMissingArgument(option); + this.emit('option:' + option.name(), arg); + // optional arg + } else if (option.optional) { + arg = argv[i + 1]; + if (arg == null || (arg[0] === '-' && arg !== '-')) { + arg = null; + } else { + ++i; + } + this.emit('option:' + option.name(), arg); + // flag + } else { + this.emit('option:' + option.name()); + } + continue; + } + + // looks like an option + if (arg.length > 1 && arg[0] === '-') { + unknownOptions.push(arg); + + // If the next argument looks like it might be + // an argument for this option, we pass it on. + // If it isn't, then it'll simply be ignored + if ((i + 1) < argv.length && (argv[i + 1][0] !== '-' || argv[i + 1] === '-')) { + unknownOptions.push(argv[++i]); + } + continue; + } + + // arg + args.push(arg); + } + + return { args: args, unknown: unknownOptions }; +}; + +/** + * Return an object containing options as key-value pairs + * + * @return {Object} + * @api public + */ +Command.prototype.opts = function() { + if (this._storeOptionsAsProperties) { + // Preserve original behaviour so backwards compatible when still using properties + var result = {}, + len = this.options.length; + + for (var i = 0; i < len; i++) { + var key = this.options[i].attributeName(); + result[key] = key === this._versionOptionName ? this._version : this[key]; + } + return result; + } + + return this._optionValues; +}; + +/** + * Argument `name` is missing. + * + * @param {String} name + * @api private + */ + +Command.prototype.missingArgument = function(name) { + const message = `error: missing required argument '${name}'`; + console.error(message); + this._exit(1, 'commander.missingArgument', message); +}; + +/** + * `Option` is missing an argument, but received `flag` or nothing. + * + * @param {Option} option + * @param {String} [flag] + * @api private + */ + +Command.prototype.optionMissingArgument = function(option, flag) { + let message; + if (flag) { + message = `error: option '${option.flags}' argument missing, got '${flag}'`; + } else { + message = `error: option '${option.flags}' argument missing`; + } + console.error(message); + this._exit(1, 'commander.optionMissingArgument', message); +}; + +/** + * `Option` does not have a value, and is a mandatory option. + * + * @param {Option} option + * @api private + */ + +Command.prototype.missingMandatoryOptionValue = function(option) { + const message = `error: required option '${option.flags}' not specified`; + console.error(message); + this._exit(1, 'commander.missingMandatoryOptionValue', message); +}; + +/** + * Unknown option `flag`. + * + * @param {String} flag + * @api private + */ + +Command.prototype.unknownOption = function(flag) { + if (this._allowUnknownOption) return; + const message = `error: unknown option '${flag}'`; + console.error(message); + this._exit(1, 'commander.unknownOption', message); +}; + +/** + * Variadic argument with `name` is not the last argument as required. + * + * @param {String} name + * @api private + */ + +Command.prototype.variadicArgNotLast = function(name) { + const message = `error: variadic arguments must be last '${name}'`; + console.error(message); + this._exit(1, 'commander.variadicArgNotLast', message); +}; + +/** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * You can optionally supply the flags and description to override the defaults. + * + * @param {String} str + * @param {String} [flags] + * @param {String} [description] + * @return {Command} for chaining + * @api public + */ + +Command.prototype.version = function(str, flags, description) { + if (arguments.length === 0) return this._version; + this._version = str; + flags = flags || '-V, --version'; + description = description || 'output the version number'; + var versionOption = new Option(flags, description); + this._versionOptionName = versionOption.long.substr(2) || 'version'; + this.options.push(versionOption); + var self = this; + this.on('option:' + this._versionOptionName, function() { + process.stdout.write(str + '\n'); + self._exit(0, 'commander.version', str); + }); + return this; +}; + +/** + * Set the description to `str`. + * + * @param {String} str + * @param {Object} [argsDescription] + * @return {String|Command} + * @api public + */ + +Command.prototype.description = function(str, argsDescription) { + if (arguments.length === 0) return this._description; + this._description = str; + this._argsDescription = argsDescription; + return this; +}; + +/** + * Set an alias for the command + * + * @param {String} alias + * @return {String|Command} + * @api public + */ + +Command.prototype.alias = function(alias) { + var command = this; + if (this.commands.length !== 0) { + command = this.commands[this.commands.length - 1]; + } + + if (arguments.length === 0) return command._alias; + + if (alias === command._name) throw new Error('Command alias can\'t be the same as its name'); + + command._alias = alias; + return this; +}; + +/** + * Set / get the command usage `str`. + * + * @param {String} [str] + * @return {String|Command} + * @api public + */ + +Command.prototype.usage = function(str) { + var args = this._args.map(function(arg) { + return humanReadableArgName(arg); + }); + + var usage = '[options]' + + (this.commands.length ? ' [command]' : '') + + (this._args.length ? ' ' + args.join(' ') : ''); + + if (arguments.length === 0) return this._usage || usage; + this._usage = str; + + return this; +}; + +/** + * Get or set the name of the command + * + * @param {String} [str] + * @return {String|Command} + * @api public + */ + +Command.prototype.name = function(str) { + if (arguments.length === 0) return this._name; + this._name = str; + return this; +}; + +/** + * Return prepared commands. + * + * @return {Array} + * @api private + */ + +Command.prototype.prepareCommands = function() { + return this.commands.filter(function(cmd) { + return !cmd._noHelp; + }).map(function(cmd) { + var args = cmd._args.map(function(arg) { + return humanReadableArgName(arg); + }).join(' '); + + return [ + cmd._name + + (cmd._alias ? '|' + cmd._alias : '') + + (cmd.options.length ? ' [options]' : '') + + (args ? ' ' + args : ''), + cmd._description + ]; + }); +}; + +/** + * Return the largest command length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestCommandLength = function() { + var commands = this.prepareCommands(); + return commands.reduce(function(max, command) { + return Math.max(max, command[0].length); + }, 0); +}; + +/** + * Return the largest option length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestOptionLength = function() { + var options = [].slice.call(this.options); + options.push({ + flags: this._helpFlags + }); + + return options.reduce(function(max, option) { + return Math.max(max, option.flags.length); + }, 0); +}; + +/** + * Return the largest arg length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestArgLength = function() { + return this._args.reduce(function(max, arg) { + return Math.max(max, arg.name.length); + }, 0); +}; + +/** + * Return the pad width. + * + * @return {Number} + * @api private + */ + +Command.prototype.padWidth = function() { + var width = this.largestOptionLength(); + if (this._argsDescription && this._args.length) { + if (this.largestArgLength() > width) { + width = this.largestArgLength(); + } + } + + if (this.commands && this.commands.length) { + if (this.largestCommandLength() > width) { + width = this.largestCommandLength(); + } + } + + return width; +}; + +/** + * Return help for options. + * + * @return {String} + * @api private + */ + +Command.prototype.optionHelp = function() { + var width = this.padWidth(); + + var columns = process.stdout.columns || 80; + var descriptionWidth = columns - width - 4; + + // Append the help information + return this.options.map(function(option) { + const fullDesc = option.description + + ((!option.negate && option.defaultValue !== undefined) ? ' (default: ' + JSON.stringify(option.defaultValue) + ')' : ''); + return pad(option.flags, width) + ' ' + optionalWrap(fullDesc, descriptionWidth, width + 2); + }).concat([pad(this._helpFlags, width) + ' ' + optionalWrap(this._helpDescription, descriptionWidth, width + 2)]) + .join('\n'); +}; + +/** + * Return command help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.commandHelp = function() { + if (!this.commands.length) return ''; + + var commands = this.prepareCommands(); + var width = this.padWidth(); + + var columns = process.stdout.columns || 80; + var descriptionWidth = columns - width - 4; + + return [ + 'Commands:', + commands.map(function(cmd) { + var desc = cmd[1] ? ' ' + cmd[1] : ''; + return (desc ? pad(cmd[0], width) : cmd[0]) + optionalWrap(desc, descriptionWidth, width + 2); + }).join('\n').replace(/^/gm, ' '), + '' + ].join('\n'); +}; + +/** + * Return program help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.helpInformation = function() { + var desc = []; + if (this._description) { + desc = [ + this._description, + '' + ]; + + var argsDescription = this._argsDescription; + if (argsDescription && this._args.length) { + var width = this.padWidth(); + var columns = process.stdout.columns || 80; + var descriptionWidth = columns - width - 5; + desc.push('Arguments:'); + desc.push(''); + this._args.forEach(function(arg) { + desc.push(' ' + pad(arg.name, width) + ' ' + wrap(argsDescription[arg.name], descriptionWidth, width + 4)); + }); + desc.push(''); + } + } + + var cmdName = this._name; + if (this._alias) { + cmdName = cmdName + '|' + this._alias; + } + var parentCmdNames = ''; + for (var parentCmd = this.parent; parentCmd; parentCmd = parentCmd.parent) { + parentCmdNames = parentCmd.name() + ' ' + parentCmdNames; + } + var usage = [ + 'Usage: ' + parentCmdNames + cmdName + ' ' + this.usage(), + '' + ]; + + var cmds = []; + var commandHelp = this.commandHelp(); + if (commandHelp) cmds = [commandHelp]; + + var options = [ + 'Options:', + '' + this.optionHelp().replace(/^/gm, ' '), + '' + ]; + + return usage + .concat(desc) + .concat(options) + .concat(cmds) + .join('\n'); +}; + +/** + * Output help information for this command. + * + * When listener(s) are available for the helpLongFlag + * those callbacks are invoked. + * + * @api public + */ + +Command.prototype.outputHelp = function(cb) { + if (!cb) { + cb = function(passthru) { + return passthru; + }; + } + const cbOutput = cb(this.helpInformation()); + if (typeof cbOutput !== 'string' && !Buffer.isBuffer(cbOutput)) { + throw new Error('outputHelp callback must return a string or a Buffer'); + } + process.stdout.write(cbOutput); + this.emit(this._helpLongFlag); +}; + +/** + * You can pass in flags and a description to override the help + * flags and help description for your command. + * + * @param {String} [flags] + * @param {String} [description] + * @return {Command} + * @api public + */ + +Command.prototype.helpOption = function(flags, description) { + this._helpFlags = flags || this._helpFlags; + this._helpDescription = description || this._helpDescription; + + var splitFlags = this._helpFlags.split(/[ ,|]+/); + + if (splitFlags.length > 1) this._helpShortFlag = splitFlags.shift(); + + this._helpLongFlag = splitFlags.shift(); + + return this; +}; + +/** + * Output help information and exit. + * + * @param {Function} [cb] + * @api public + */ + +Command.prototype.help = function(cb) { + this.outputHelp(cb); + // exitCode: preserving original behaviour which was calling process.exit() + // message: do not have all displayed text available so only passing placeholder. + this._exit(process.exitCode || 0, 'commander.help', '(outputHelp)'); +}; + +/** + * Camel-case the given `flag` + * + * @param {String} flag + * @return {String} + * @api private + */ + +function camelcase(flag) { + return flag.split('-').reduce(function(str, word) { + return str + word[0].toUpperCase() + word.slice(1); + }); +} + +/** + * Pad `str` to `width`. + * + * @param {String} str + * @param {Number} width + * @return {String} + * @api private + */ + +function pad(str, width) { + var len = Math.max(0, width - str.length); + return str + Array(len + 1).join(' '); +} + +/** + * Wraps the given string with line breaks at the specified width while breaking + * words and indenting every but the first line on the left. + * + * @param {String} str + * @param {Number} width + * @param {Number} indent + * @return {String} + * @api private + */ +function wrap(str, width, indent) { + var regex = new RegExp('.{1,' + (width - 1) + '}([\\s\u200B]|$)|[^\\s\u200B]+?([\\s\u200B]|$)', 'g'); + var lines = str.match(regex) || []; + return lines.map(function(line, i) { + if (line.slice(-1) === '\n') { + line = line.slice(0, line.length - 1); + } + return ((i > 0 && indent) ? Array(indent + 1).join(' ') : '') + line.trimRight(); + }).join('\n'); +} + +/** + * Optionally wrap the given str to a max width of width characters per line + * while indenting with indent spaces. Do not wrap if insufficient width or + * string is manually formatted. + * + * @param {String} str + * @param {Number} width + * @param {Number} indent + * @return {String} + * @api private + */ +function optionalWrap(str, width, indent) { + // Detect manually wrapped and indented strings by searching for line breaks + // followed by multiple spaces/tabs. + if (str.match(/[\n]\s+/)) return str; + // Do not wrap to narrow columns (or can end up with a word per line). + const minWidth = 40; + if (width < minWidth) return str; + + return wrap(str, width, indent); +} + +/** + * Output help information if help flags specified + * + * @param {Command} cmd - command to output help for + * @param {Array} options - array of options to search for -h or --help + * @api private + */ + +function outputHelpIfRequested(cmd, options) { + options = options || []; + + for (var i = 0; i < options.length; i++) { + if (options[i] === cmd._helpLongFlag || options[i] === cmd._helpShortFlag) { + cmd.outputHelp(); + // (Do not have all displayed text available so only passing placeholder.) + cmd._exit(0, 'commander.helpDisplayed', '(outputHelp)'); + } + } +} + +/** + * Takes an argument and returns its human readable equivalent for help usage. + * + * @param {Object} arg + * @return {String} + * @api private + */ + +function humanReadableArgName(arg) { + var nameOutput = arg.name + (arg.variadic === true ? '...' : ''); + + return arg.required + ? '<' + nameOutput + '>' + : '[' + nameOutput + ']'; +} + +// for versions before node v0.8 when there weren't `fs.existsSync` +function exists(file) { + try { + if (fs.statSync(file).isFile()) { + return true; + } + } catch (e) { + return false; + } +} + +/** + * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command). + * + * @param {string[]} args - array of arguments from node.execArgv + * @returns {string[]} + * @api private + */ + +function incrementNodeInspectorPort(args) { + // Testing for these options: + // --inspect[=[host:]port] + // --inspect-brk[=[host:]port] + // --inspect-port=[host:]port + return args.map((arg) => { + var result = arg; + if (arg.indexOf('--inspect') === 0) { + var debugOption; + var debugHost = '127.0.0.1'; + var debugPort = '9229'; + var match; + if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) { + // e.g. --inspect + debugOption = match[1]; + } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null) { + debugOption = match[1]; + if (/^\d+$/.test(match[3])) { + // e.g. --inspect=1234 + debugPort = match[3]; + } else { + // e.g. --inspect=localhost + debugHost = match[3]; + } + } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/)) !== null) { + // e.g. --inspect=localhost:1234 + debugOption = match[1]; + debugHost = match[3]; + debugPort = match[4]; + } + + if (debugOption && debugPort !== '0') { + result = `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`; + } + } + return result; + }); +} diff --git a/node_modules/commander/package.json b/node_modules/commander/package.json new file mode 100644 index 0000000000000000000000000000000000000000..e4781e5b609b74c11a0b204fd78abc1f400a4a1d --- /dev/null +++ b/node_modules/commander/package.json @@ -0,0 +1,41 @@ +{ + "name": "commander", + "version": "4.1.1", + "description": "the complete solution for node.js command-line programs", + "keywords": [ + "commander", + "command", + "option", + "parser" + ], + "author": "TJ Holowaychuk ", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/tj/commander.js.git" + }, + "scripts": { + "lint": "eslint index.js \"tests/**/*.js\"", + "test": "jest && npm run test-typings", + "test-typings": "tsc -p tsconfig.json" + }, + "main": "index", + "files": [ + "index.js", + "typings/index.d.ts" + ], + "dependencies": {}, + "devDependencies": { + "@types/jest": "^24.0.23", + "@types/node": "^12.12.11", + "eslint": "^6.7.0", + "eslint-plugin-jest": "^22.21.0", + "jest": "^24.8.0", + "standard": "^14.3.1", + "typescript": "^3.7.2" + }, + "typings": "typings/index.d.ts", + "engines": { + "node": ">= 6" + } +} diff --git a/node_modules/commander/typings/index.d.ts b/node_modules/commander/typings/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..082a3a3c249f9bf03c2ae8080026304dda283cd5 --- /dev/null +++ b/node_modules/commander/typings/index.d.ts @@ -0,0 +1,311 @@ +// Type definitions for commander +// Original definitions by: Alan Agius , Marcelo Dezem , vvakame , Jules Randolph + +/// + +declare namespace commander { + + interface CommanderError extends Error { + code: string; + exitCode: number; + message: string; + nestedError?: string; + } + type CommanderErrorConstructor = { new (exitCode: number, code: string, message: string): CommanderError }; + + interface Option { + flags: string; + required: boolean; // A value must be supplied when the option is specified. + optional: boolean; // A value is optional when the option is specified. + mandatory: boolean; // The option must have a value after parsing, which usually means it must be specified on command line. + bool: boolean; + short?: string; + long: string; + description: string; + } + type OptionConstructor = { new (flags: string, description?: string): Option }; + + interface Command extends NodeJS.EventEmitter { + [key: string]: any; // options as properties + + args: string[]; + + /** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * You can optionally supply the flags and description to override the defaults. + */ + version(str: string, flags?: string, description?: string): Command; + + /** + * Define a command, implemented using an action handler. + * + * @remarks + * The command description is supplied using `.description`, not as a parameter to `.command`. + * + * @example + * ```ts + * program + * .command('clone [destination]') + * .description('clone a repository into a newly created directory') + * .action((source, destination) => { + * console.log('clone command called'); + * }); + * ``` + * + * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` + * @param opts - configuration options + * @returns new command + */ + command(nameAndArgs: string, opts?: CommandOptions): Command; + /** + * Define a command, implemented in a separate executable file. + * + * @remarks + * The command description is supplied as the second parameter to `.command`. + * + * @example + * ```ts + * program + * .command('start ', 'start named service') + * .command('stop [service]', 'stop named serice, or all if no name supplied'); + * ``` + * + * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` + * @param description - description of executable command + * @param opts - configuration options + * @returns top level command for chaining more command definitions + */ + command(nameAndArgs: string, description: string, opts?: commander.CommandOptions): Command; + + /** + * Define argument syntax for the top-level command. + * + * @returns Command for chaining + */ + arguments(desc: string): Command; + + /** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @returns Command for chaining + */ + parseExpectedArgs(args: string[]): Command; + + /** + * Register callback to use as replacement for calling process.exit. + */ + exitOverride(callback?: (err: CommanderError) => never|void): Command; + + /** + * Register callback `fn` for the command. + * + * @example + * program + * .command('help') + * .description('display verbose help') + * .action(function() { + * // output help here + * }); + * + * @returns Command for chaining + */ + action(fn: (...args: any[]) => void | Promise): Command; + + /** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * @example + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to true + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => false + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @returns Command for chaining + */ + option(flags: string, description?: string, fn?: ((arg1: any, arg2: any) => void) | RegExp, defaultValue?: any): Command; + option(flags: string, description?: string, defaultValue?: any): Command; + + /** + * Define a required option, which must have a value after parsing. This usually means + * the option must be specified on the command line. (Otherwise the same as .option().) + * + * The `flags` string should contain both the short and long flags, separated by comma, a pipe or space. + */ + requiredOption(flags: string, description?: string, fn?: ((arg1: any, arg2: any) => void) | RegExp, defaultValue?: any): Command; + requiredOption(flags: string, description?: string, defaultValue?: any): Command; + + + /** + * Whether to store option values as properties on command object, + * or store separately (specify false). In both cases the option values can be accessed using .opts(). + * + * @return Command for chaining + */ + storeOptionsAsProperties(value?: boolean): Command; + + /** + * Whether to pass command to action handler, + * or just the options (specify false). + * + * @return Command for chaining + */ + passCommandToAction(value?: boolean): Command; + + /** + * Allow unknown options on the command line. + * + * @param [arg] if `true` or omitted, no error will be thrown for unknown options. + * @returns Command for chaining + */ + allowUnknownOption(arg?: boolean): Command; + + /** + * Parse `argv`, setting options and invoking commands when defined. + * + * @returns Command for chaining + */ + parse(argv: string[]): Command; + + /** + * Parse `argv`, setting options and invoking commands when defined. + * + * Use parseAsync instead of parse if any of your action handlers are async. Returns a Promise. + * + * @returns Promise + */ + parseAsync(argv: string[]): Promise; + + /** + * Parse options from `argv` returning `argv` void of these options. + */ + parseOptions(argv: string[]): commander.ParseOptionsResult; + + /** + * Return an object containing options as key-value pairs + */ + opts(): { [key: string]: any }; + + /** + * Set the description. + * + * @returns Command for chaining + */ + description(str: string, argsDescription?: {[argName: string]: string}): Command; + /** + * Get the description. + */ + description(): string; + + /** + * Set an alias for the command. + * + * @returns Command for chaining + */ + alias(alias: string): Command; + /** + * Get alias for the command. + */ + alias(): string; + + /** + * Set the command usage. + * + * @returns Command for chaining + */ + usage(str: string): Command; + /** + * Get the command usage. + */ + usage(): string; + + /** + * Set the name of the command. + * + * @returns Command for chaining + */ + name(str: string): Command; + /** + * Get the name of the command. + */ + name(): string; + + /** + * Output help information for this command. + * + * When listener(s) are available for the helpLongFlag + * those callbacks are invoked. + */ + outputHelp(cb?: (str: string) => string): void; + + /** + * You can pass in flags and a description to override the help + * flags and help description for your command. + */ + helpOption(flags?: string, description?: string): Command; + + /** + * Output help information and exit. + */ + help(cb?: (str: string) => string): never; + } + type CommandConstructor = { new (name?: string): Command }; + + + interface CommandOptions { + noHelp?: boolean; + isDefault?: boolean; + executableFile?: string; + } + + interface ParseOptionsResult { + args: string[]; + unknown: string[]; + } + + interface CommanderStatic extends Command { + Command: CommandConstructor; + Option: OptionConstructor; + CommanderError:CommanderErrorConstructor; + } + +} + +declare const commander: commander.CommanderStatic; +export = commander; diff --git a/node_modules/concat-map/.travis.yml b/node_modules/concat-map/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..f1d0f13c8a54d0f8d78f86a1f9348f3c59750694 --- /dev/null +++ b/node_modules/concat-map/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/node_modules/concat-map/LICENSE b/node_modules/concat-map/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..ee27ba4b4412b0e4a05af5e3d8a005bc6681fdf3 --- /dev/null +++ b/node_modules/concat-map/LICENSE @@ -0,0 +1,18 @@ +This software is released under the 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/concat-map/README.markdown b/node_modules/concat-map/README.markdown new file mode 100644 index 0000000000000000000000000000000000000000..408f70a1be473c86e729fe8cc1d5fb4e0e364ce9 --- /dev/null +++ b/node_modules/concat-map/README.markdown @@ -0,0 +1,62 @@ +concat-map +========== + +Concatenative mapdashery. + +[![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map) + +[![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map) + +example +======= + +``` js +var concatMap = require('concat-map'); +var xs = [ 1, 2, 3, 4, 5, 6 ]; +var ys = concatMap(xs, function (x) { + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; +}); +console.dir(ys); +``` + +*** + +``` +[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ] +``` + +methods +======= + +``` js +var concatMap = require('concat-map') +``` + +concatMap(xs, fn) +----------------- + +Return an array of concatenated elements by calling `fn(x, i)` for each element +`x` and each index `i` in the array `xs`. + +When `fn(x, i)` returns an array, its result will be concatenated with the +result array. If `fn(x, i)` returns anything else, that value will be pushed +onto the end of the result array. + +install +======= + +With [npm](http://npmjs.org) do: + +``` +npm install concat-map +``` + +license +======= + +MIT + +notes +===== + +This module was written while sitting high above the ground in a tree. diff --git a/node_modules/concat-map/example/map.js b/node_modules/concat-map/example/map.js new file mode 100644 index 0000000000000000000000000000000000000000..33656217b61d8f06a55db4631ec95eea828495d2 --- /dev/null +++ b/node_modules/concat-map/example/map.js @@ -0,0 +1,6 @@ +var concatMap = require('../'); +var xs = [ 1, 2, 3, 4, 5, 6 ]; +var ys = concatMap(xs, function (x) { + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; +}); +console.dir(ys); diff --git a/node_modules/concat-map/index.js b/node_modules/concat-map/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b29a7812e5055ae915e771447e1380e01bf3bfdd --- /dev/null +++ b/node_modules/concat-map/index.js @@ -0,0 +1,13 @@ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; diff --git a/node_modules/concat-map/package.json b/node_modules/concat-map/package.json new file mode 100644 index 0000000000000000000000000000000000000000..d3640e6b027b9ea87afbfd361ca12fc05cca0e9c --- /dev/null +++ b/node_modules/concat-map/package.json @@ -0,0 +1,43 @@ +{ + "name" : "concat-map", + "description" : "concatenative mapdashery", + "version" : "0.0.1", + "repository" : { + "type" : "git", + "url" : "git://github.com/substack/node-concat-map.git" + }, + "main" : "index.js", + "keywords" : [ + "concat", + "concatMap", + "map", + "functional", + "higher-order" + ], + "directories" : { + "example" : "example", + "test" : "test" + }, + "scripts" : { + "test" : "tape test/*.js" + }, + "devDependencies" : { + "tape" : "~2.4.0" + }, + "license" : "MIT", + "author" : { + "name" : "James Halliday", + "email" : "mail@substack.net", + "url" : "http://substack.net" + }, + "testling" : { + "files" : "test/*.js", + "browsers" : { + "ie" : [ 6, 7, 8, 9 ], + "ff" : [ 3.5, 10, 15.0 ], + "chrome" : [ 10, 22 ], + "safari" : [ 5.1 ], + "opera" : [ 12 ] + } + } +} diff --git a/node_modules/concat-map/test/map.js b/node_modules/concat-map/test/map.js new file mode 100644 index 0000000000000000000000000000000000000000..fdbd7022f6da17600dad4d477734115bf28287e0 --- /dev/null +++ b/node_modules/concat-map/test/map.js @@ -0,0 +1,39 @@ +var concatMap = require('../'); +var test = require('tape'); + +test('empty or not', function (t) { + var xs = [ 1, 2, 3, 4, 5, 6 ]; + var ixes = []; + var ys = concatMap(xs, function (x, ix) { + ixes.push(ix); + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; + }); + t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]); + t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]); + t.end(); +}); + +test('always something', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function (x) { + return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ]; + }); + t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); + t.end(); +}); + +test('scalars', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function (x) { + return x === 'b' ? [ 'B', 'B', 'B' ] : x; + }); + t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); + t.end(); +}); + +test('undefs', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function () {}); + t.same(ys, [ undefined, undefined, undefined, undefined ]); + t.end(); +}); diff --git a/node_modules/cssesc/LICENSE-MIT.txt b/node_modules/cssesc/LICENSE-MIT.txt new file mode 100644 index 0000000000000000000000000000000000000000..a41e0a7ef970ecdd83d82cd99bda97b22077bc62 --- /dev/null +++ b/node_modules/cssesc/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/cssesc/README.md b/node_modules/cssesc/README.md new file mode 100644 index 0000000000000000000000000000000000000000..58fb8fe0b6b91f8d3ce0207f5c967f5d22c46eff --- /dev/null +++ b/node_modules/cssesc/README.md @@ -0,0 +1,201 @@ +# cssesc [![Build status](https://travis-ci.org/mathiasbynens/cssesc.svg?branch=master)](https://travis-ci.org/mathiasbynens/cssesc) [![Code coverage status](https://img.shields.io/codecov/c/github/mathiasbynens/cssesc.svg)](https://codecov.io/gh/mathiasbynens/cssesc) + +A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output. + +This is a JavaScript library for [escaping text for use in CSS strings or identifiers](https://mathiasbynens.be/notes/css-escapes) while generating the shortest possible valid ASCII-only output. [Here’s an online demo.](https://mothereff.in/css-escapes) + +[A polyfill for the CSSOM `CSS.escape()` method is available in a separate repository.](https://mths.be/cssescape) (In comparison, _cssesc_ is much more powerful.) + +Feel free to fork if you see possible improvements! + +## Installation + +Via [npm](https://www.npmjs.com/): + +```bash +npm install cssesc +``` + +In a browser: + +```html + +``` + +In [Node.js](https://nodejs.org/): + +```js +const cssesc = require('cssesc'); +``` + +In Ruby using [the `ruby-cssesc` wrapper gem](https://github.com/borodean/ruby-cssesc): + +```bash +gem install ruby-cssesc +``` + +```ruby +require 'ruby-cssesc' +CSSEsc.escape('I ♥ Ruby', is_identifier: true) +``` + +In Sass using [`sassy-escape`](https://github.com/borodean/sassy-escape): + +```bash +gem install sassy-escape +``` + +```scss +body { + content: escape('I ♥ Sass', $is-identifier: true); +} +``` + +## API + +### `cssesc(value, options)` + +This function takes a value and returns an escaped version of the value where any characters that are not printable ASCII symbols are escaped using the shortest possible (but valid) [escape sequences for use in CSS strings or identifiers](https://mathiasbynens.be/notes/css-escapes). + +```js +cssesc('Ich ♥ Bücher'); +// → 'Ich \\2665 B\\FC cher' + +cssesc('foo 𝌆 bar'); +// → 'foo \\1D306 bar' +``` + +By default, `cssesc` returns a string that can be used as part of a CSS string. If the target is a CSS identifier rather than a CSS string, use the `isIdentifier: true` setting (see below). + +The optional `options` argument accepts an object with the following options: + +#### `isIdentifier` + +The default value for the `isIdentifier` option is `false`. This means that the input text will be escaped for use in a CSS string literal. If you want to use the result as a CSS identifier instead (in a selector, for example), set this option to `true`. + +```js +cssesc('123a2b'); +// → '123a2b' + +cssesc('123a2b', { + 'isIdentifier': true +}); +// → '\\31 23a2b' +``` + +#### `quotes` + +The default value for the `quotes` option is `'single'`. This means that any occurences of `'` in the input text will be escaped as `\'`, so that the output can be used in a CSS string literal wrapped in single quotes. + +```js +cssesc('Lorem ipsum "dolor" sit \'amet\' etc.'); +// → 'Lorem ipsum "dolor" sit \\\'amet\\\' etc.' +// → "Lorem ipsum \"dolor\" sit \\'amet\\' etc." + +cssesc('Lorem ipsum "dolor" sit \'amet\' etc.', { + 'quotes': 'single' +}); +// → 'Lorem ipsum "dolor" sit \\\'amet\\\' etc.' +// → "Lorem ipsum \"dolor\" sit \\'amet\\' etc." +``` + +If you want to use the output as part of a CSS string literal wrapped in double quotes, set the `quotes` option to `'double'`. + +```js +cssesc('Lorem ipsum "dolor" sit \'amet\' etc.', { + 'quotes': 'double' +}); +// → 'Lorem ipsum \\"dolor\\" sit \'amet\' etc.' +// → "Lorem ipsum \\\"dolor\\\" sit 'amet' etc." +``` + +#### `wrap` + +The `wrap` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, the output will be a valid CSS string literal wrapped in quotes. The type of quotes can be specified through the `quotes` setting. + +```js +cssesc('Lorem ipsum "dolor" sit \'amet\' etc.', { + 'quotes': 'single', + 'wrap': true +}); +// → '\'Lorem ipsum "dolor" sit \\\'amet\\\' etc.\'' +// → "\'Lorem ipsum \"dolor\" sit \\\'amet\\\' etc.\'" + +cssesc('Lorem ipsum "dolor" sit \'amet\' etc.', { + 'quotes': 'double', + 'wrap': true +}); +// → '"Lorem ipsum \\"dolor\\" sit \'amet\' etc."' +// → "\"Lorem ipsum \\\"dolor\\\" sit \'amet\' etc.\"" +``` + +#### `escapeEverything` + +The `escapeEverything` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, all the symbols in the output will be escaped, even printable ASCII symbols. + +```js +cssesc('lolwat"foo\'bar', { + 'escapeEverything': true +}); +// → '\\6C\\6F\\6C\\77\\61\\74\\"\\66\\6F\\6F\\\'\\62\\61\\72' +// → "\\6C\\6F\\6C\\77\\61\\74\\\"\\66\\6F\\6F\\'\\62\\61\\72" +``` + +#### Overriding the default options globally + +The global default settings can be overridden by modifying the `css.options` object. This saves you from passing in an `options` object for every call to `encode` if you want to use the non-default setting. + +```js +// Read the global default setting for `escapeEverything`: +cssesc.options.escapeEverything; +// → `false` by default + +// Override the global default setting for `escapeEverything`: +cssesc.options.escapeEverything = true; + +// Using the global default setting for `escapeEverything`, which is now `true`: +cssesc('foo © bar ≠ baz 𝌆 qux'); +// → '\\66\\6F\\6F\\ \\A9\\ \\62\\61\\72\\ \\2260\\ \\62\\61\\7A\\ \\1D306\\ \\71\\75\\78' +``` + +### `cssesc.version` + +A string representing the semantic version number. + +### Using the `cssesc` binary + +To use the `cssesc` binary in your shell, simply install cssesc globally using npm: + +```bash +npm install -g cssesc +``` + +After that you will be able to escape text for use in CSS strings or identifiers from the command line: + +```bash +$ cssesc 'föo ♥ bår 𝌆 baz' +f\F6o \2665 b\E5r \1D306 baz +``` + +If the output needs to be a CSS identifier rather than part of a string literal, use the `-i`/`--identifier` option: + +```bash +$ cssesc --identifier 'föo ♥ bår 𝌆 baz' +f\F6o\ \2665\ b\E5r\ \1D306\ baz +``` + +See `cssesc --help` for the full list of options. + +## Support + +This library supports the Node.js and browser versions mentioned in [`.babelrc`](https://github.com/mathiasbynens/cssesc/blob/master/.babelrc). For a version that supports a wider variety of legacy browsers and environments out-of-the-box, [see v0.1.0](https://github.com/mathiasbynens/cssesc/releases/tag/v0.1.0). + +## Author + +| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | +|---| +| [Mathias Bynens](https://mathiasbynens.be/) | + +## License + +This library is available under the [MIT](https://mths.be/mit) license. diff --git a/node_modules/cssesc/bin/cssesc b/node_modules/cssesc/bin/cssesc new file mode 100755 index 0000000000000000000000000000000000000000..188c034ffe948300ab1a75496c2ea9e83c5a50bb --- /dev/null +++ b/node_modules/cssesc/bin/cssesc @@ -0,0 +1,116 @@ +#!/usr/bin/env node +const fs = require('fs'); +const cssesc = require('../cssesc.js'); +const strings = process.argv.splice(2); +const stdin = process.stdin; +const options = {}; +const log = console.log; + +const main = function() { + const option = strings[0]; + + if (/^(?:-h|--help|undefined)$/.test(option)) { + log( + 'cssesc v%s - https://mths.be/cssesc', + cssesc.version + ); + log([ + '\nUsage:\n', + '\tcssesc [string]', + '\tcssesc [-i | --identifier] [string]', + '\tcssesc [-s | --single-quotes] [string]', + '\tcssesc [-d | --double-quotes] [string]', + '\tcssesc [-w | --wrap] [string]', + '\tcssesc [-e | --escape-everything] [string]', + '\tcssesc [-v | --version]', + '\tcssesc [-h | --help]', + '\nExamples:\n', + '\tcssesc \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', + '\tcssesc --identifier \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', + '\tcssesc --escape-everything \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', + '\tcssesc --double-quotes --wrap \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'', + '\techo \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\' | cssesc' + ].join('\n')); + return process.exit(1); + } + + if (/^(?:-v|--version)$/.test(option)) { + log('v%s', cssesc.version); + return process.exit(1); + } + + strings.forEach(function(string) { + // Process options + if (/^(?:-i|--identifier)$/.test(string)) { + options.isIdentifier = true; + return; + } + if (/^(?:-s|--single-quotes)$/.test(string)) { + options.quotes = 'single'; + return; + } + if (/^(?:-d|--double-quotes)$/.test(string)) { + options.quotes = 'double'; + return; + } + if (/^(?:-w|--wrap)$/.test(string)) { + options.wrap = true; + return; + } + if (/^(?:-e|--escape-everything)$/.test(string)) { + options.escapeEverything = true; + return; + } + + // Process string(s) + let result; + try { + result = cssesc(string, options); + log(result); + } catch (exception) { + log(exception.message + '\n'); + log('Error: failed to escape.'); + log('If you think this is a bug in cssesc, please report it:'); + log('https://github.com/mathiasbynens/cssesc/issues/new'); + log( + '\nStack trace using cssesc@%s:\n', + cssesc.version + ); + log(exception.stack); + return process.exit(1); + } + }); + // Return with exit status 0 outside of the `forEach` loop, in case + // multiple strings were passed in. + return process.exit(0); + +}; + +if (stdin.isTTY) { + // handle shell arguments + main(); +} else { + let timeout; + // Either the script is called from within a non-TTY context, or `stdin` + // content is being piped in. + if (!process.stdout.isTTY) { + // The script was called from a non-TTY context. This is a rather uncommon + // use case we don’t actively support. However, we don’t want the script + // to wait forever in such cases, so… + timeout = setTimeout(function() { + // …if no piped data arrived after a whole minute, handle shell + // arguments instead. + main(); + }, 60000); + } + let data = ''; + stdin.on('data', function(chunk) { + clearTimeout(timeout); + data += chunk; + }); + stdin.on('end', function() { + strings.push(data.trim()); + main(); + }); + stdin.resume(); +} diff --git a/node_modules/cssesc/cssesc.js b/node_modules/cssesc/cssesc.js new file mode 100644 index 0000000000000000000000000000000000000000..1c0928e45667c8edbb565a62d0c613d830ab629a --- /dev/null +++ b/node_modules/cssesc/cssesc.js @@ -0,0 +1,110 @@ +/*! https://mths.be/cssesc v3.0.0 by @mathias */ +'use strict'; + +var object = {}; +var hasOwnProperty = object.hasOwnProperty; +var merge = function merge(options, defaults) { + if (!options) { + return defaults; + } + var result = {}; + for (var key in defaults) { + // `if (defaults.hasOwnProperty(key) { … }` is not needed here, since + // only recognized option names are used. + result[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key]; + } + return result; +}; + +var regexAnySingleEscape = /[ -,\.\/:-@\[-\^`\{-~]/; +var regexSingleEscape = /[ -,\.\/:-@\[\]\^`\{-~]/; +var regexAlwaysEscape = /['"\\]/; +var regexExcessiveSpaces = /(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g; + +// https://mathiasbynens.be/notes/css-escapes#css +var cssesc = function cssesc(string, options) { + options = merge(options, cssesc.options); + if (options.quotes != 'single' && options.quotes != 'double') { + options.quotes = 'single'; + } + var quote = options.quotes == 'double' ? '"' : '\''; + var isIdentifier = options.isIdentifier; + + var firstChar = string.charAt(0); + var output = ''; + var counter = 0; + var length = string.length; + while (counter < length) { + var character = string.charAt(counter++); + var codePoint = character.charCodeAt(); + var value = void 0; + // If it’s not a printable ASCII character… + if (codePoint < 0x20 || codePoint > 0x7E) { + if (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) { + // It’s a high surrogate, and there is a next character. + var extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { + // next character is low surrogate + codePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000; + } else { + // It’s an unmatched surrogate; only append this code unit, in case + // the next code unit is the high surrogate of a surrogate pair. + counter--; + } + } + value = '\\' + codePoint.toString(16).toUpperCase() + ' '; + } else { + if (options.escapeEverything) { + if (regexAnySingleEscape.test(character)) { + value = '\\' + character; + } else { + value = '\\' + codePoint.toString(16).toUpperCase() + ' '; + } + } else if (/[\t\n\f\r\x0B]/.test(character)) { + value = '\\' + codePoint.toString(16).toUpperCase() + ' '; + } else if (character == '\\' || !isIdentifier && (character == '"' && quote == character || character == '\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) { + value = '\\' + character; + } else { + value = character; + } + } + output += value; + } + + if (isIdentifier) { + if (/^-[-\d]/.test(output)) { + output = '\\-' + output.slice(1); + } else if (/\d/.test(firstChar)) { + output = '\\3' + firstChar + ' ' + output.slice(1); + } + } + + // Remove spaces after `\HEX` escapes that are not followed by a hex digit, + // since they’re redundant. Note that this is only possible if the escape + // sequence isn’t preceded by an odd number of backslashes. + output = output.replace(regexExcessiveSpaces, function ($0, $1, $2) { + if ($1 && $1.length % 2) { + // It’s not safe to remove the space, so don’t. + return $0; + } + // Strip the space. + return ($1 || '') + $2; + }); + + if (!isIdentifier && options.wrap) { + return quote + output + quote; + } + return output; +}; + +// Expose default options (so they can be overridden globally). +cssesc.options = { + 'escapeEverything': false, + 'isIdentifier': false, + 'quotes': 'single', + 'wrap': false +}; + +cssesc.version = '3.0.0'; + +module.exports = cssesc; diff --git a/node_modules/cssesc/man/cssesc.1 b/node_modules/cssesc/man/cssesc.1 new file mode 100644 index 0000000000000000000000000000000000000000..eee4996daf5436bca6676d404a8ae9c5969bd355 --- /dev/null +++ b/node_modules/cssesc/man/cssesc.1 @@ -0,0 +1,70 @@ +.Dd August 9, 2013 +.Dt cssesc 1 +.Sh NAME +.Nm cssesc +.Nd escape text for use in CSS string literals or identifiers +.Sh SYNOPSIS +.Nm +.Op Fl i | -identifier Ar string +.br +.Op Fl s | -single-quotes Ar string +.br +.Op Fl d | -double-quotes Ar string +.br +.Op Fl w | -wrap Ar string +.br +.Op Fl e | -escape-everything Ar string +.br +.Op Fl v | -version +.br +.Op Fl h | -help +.Sh DESCRIPTION +.Nm +escapes strings for use in CSS string literals or identifiers while generating the shortest possible valid ASCII-only output. +.Sh OPTIONS +.Bl -ohang -offset +.It Sy "-s, --single-quotes" +Escape any occurences of ' in the input string as \\', so that the output can be used in a CSS string literal wrapped in single quotes. +.It Sy "-d, --double-quotes" +Escape any occurences of " in the input string as \\", so that the output can be used in a CSS string literal wrapped in double quotes. +.It Sy "-w, --wrap" +Make sure the output is a valid CSS string literal wrapped in quotes. The type of quotes can be specified using the +.Ar -s | --single-quotes +or +.Ar -d | --double-quotes +settings. +.It Sy "-e, --escape-everything" +Escape all the symbols in the output, even printable ASCII symbols. +.It Sy "-v, --version" +Print cssesc's version. +.It Sy "-h, --help" +Show the help screen. +.El +.Sh EXIT STATUS +The +.Nm cssesc +utility exits with one of the following values: +.Pp +.Bl -tag -width flag -compact +.It Li 0 +.Nm +successfully escaped the given text and printed the result. +.It Li 1 +.Nm +wasn't instructed to escape anything (for example, the +.Ar --help +flag was set); or, an error occurred. +.El +.Sh EXAMPLES +.Bl -ohang -offset +.It Sy "cssesc 'foo bar baz'" +Print an escaped version of the given text. +.It Sy echo\ 'foo bar baz'\ |\ cssesc +Print an escaped version of the text that gets piped in. +.El +.Sh BUGS +cssesc's bug tracker is located at . +.Sh AUTHOR +Mathias Bynens +.Sh WWW + diff --git a/node_modules/cssesc/package.json b/node_modules/cssesc/package.json new file mode 100644 index 0000000000000000000000000000000000000000..076c84dc83018be705eb6bf03999f079968f04f4 --- /dev/null +++ b/node_modules/cssesc/package.json @@ -0,0 +1,51 @@ +{ + "name": "cssesc", + "version": "3.0.0", + "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.", + "homepage": "https://mths.be/cssesc", + "engines": { + "node": ">=4" + }, + "main": "cssesc.js", + "bin": "bin/cssesc", + "man": "man/cssesc.1", + "keywords": [ + "css", + "escape", + "identifier", + "string", + "tool" + ], + "license": "MIT", + "author": { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + "repository": { + "type": "git", + "url": "https://github.com/mathiasbynens/cssesc.git" + }, + "bugs": "https://github.com/mathiasbynens/cssesc/issues", + "files": [ + "LICENSE-MIT.txt", + "cssesc.js", + "bin/", + "man/" + ], + "scripts": { + "build": "grunt template && babel cssesc.js -o cssesc.js", + "test": "mocha tests", + "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec" + }, + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-preset-env": "^1.6.1", + "codecov": "^1.0.1", + "grunt": "^1.0.1", + "grunt-template": "^1.0.0", + "istanbul": "^0.4.4", + "mocha": "^2.5.3", + "regenerate": "^1.2.1", + "requirejs": "^2.1.16" + } +} diff --git a/node_modules/didyoumean/LICENSE b/node_modules/didyoumean/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..32c23dba282aca80228dc7176702d93b3c227b17 --- /dev/null +++ b/node_modules/didyoumean/LICENSE @@ -0,0 +1,14 @@ +## License + +didYouMean.js copyright (c) 2013 Dave Porter. + +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 +[here](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/didyoumean/README.md b/node_modules/didyoumean/README.md new file mode 100644 index 0000000000000000000000000000000000000000..cd16698ded74868c11a0003d3779e5e04aa21643 --- /dev/null +++ b/node_modules/didyoumean/README.md @@ -0,0 +1,134 @@ +didYouMean.js - A simple JavaScript matching engine +=================================================== + +[Available on GitHub](https://github.com/dcporter/didyoumean.js). + +A super-simple, highly optimized JS library for matching human-quality input to a list of potential +matches. You can use it to suggest a misspelled command-line utility option to a user, or to offer +links to nearby valid URLs on your 404 page. (The examples below are taken from a personal project, +my [HTML5 business card](http://dcporter.aws.af.cm/me), which uses didYouMean.js to suggest correct +URLs from misspelled ones, such as [dcporter.aws.af.cm/me/instagarm](http://dcporter.aws.af.cm/me/instagarm).) +Uses the [Levenshtein distance algorithm](https://en.wikipedia.org/wiki/Levenshtein_distance). + +didYouMean.js works in the browser as well as in node.js. To install it for use in node: + +``` +npm install didyoumean +``` + + +Examples +-------- + +Matching against a list of strings: +``` +var input = 'insargrm' +var list = ['facebook', 'twitter', 'instagram', 'linkedin']; +console.log(didYouMean(input, list)); +> 'instagram' +// The method matches 'insargrm' to 'instagram'. + +input = 'google plus'; +console.log(didYouMean(input, list)); +> null +// The method was unable to find 'google plus' in the list of options. +``` + +Matching against a list of objects: +``` +var input = 'insargrm'; +var list = [ { id: 'facebook' }, { id: 'twitter' }, { id: 'instagram' }, { id: 'linkedin' } ]; +var key = 'id'; +console.log(didYouMean(input, list, key)); +> 'instagram' +// The method returns the matching value. + +didYouMean.returnWinningObject = true; +console.log(didYouMean(input, list, key)); +> { id: 'instagram' } +// The method returns the matching object. +``` + + +didYouMean(str, list, [key]) +---------------------------- + +- str: The string input to match. +- list: An array of strings or objects to match against. +- key (OPTIONAL): If your list array contains objects, you must specify the key which contains the string + to match against. + +Returns: the closest matching string, or null if no strings exceed the threshold. + + +Options +------- + +Options are set on the didYouMean function object. You may change them at any time. + +### threshold + + By default, the method will only return strings whose edit distance is less than 40% (0.4x) of their length. + For example, if a ten-letter string is five edits away from its nearest match, the method will return null. + + You can control this by setting the "threshold" value on the didYouMean function. For example, to set the + edit distance threshold to 50% of the input string's length: + + ``` + didYouMean.threshold = 0.5; + ``` + + To return the nearest match no matter the threshold, set this value to null. + +### thresholdAbsolute + + This option behaves the same as threshold, but instead takes an integer number of edit steps. For example, + if thresholdAbsolute is set to 20 (the default), then the method will only return strings whose edit distance + is less than 20. Both options apply. + +### caseSensitive + + By default, the method will perform case-insensitive comparisons. If you wish to force case sensitivity, set + the "caseSensitive" value to true: + + ``` + didYouMean.caseSensitive = true; + ``` + +### nullResultValue + + By default, the method will return null if there is no sufficiently close match. You can change this value here. + +### returnWinningObject + + By default, the method will return the winning string value (if any). If your list contains objects rather + than strings, you may set returnWinningObject to true. + + ``` + didYouMean.returnWinningObject = true; + ``` + + This option has no effect on lists of strings. + +### returnFirstMatch + + By default, the method will search all values and return the closest match. If you're simply looking for a "good- + enough" match, you can set your thresholds appropriately and set returnFirstMatch to true to substantially speed + things up. + + +License +------- + +didYouMean copyright (c) 2013-2014 Dave Porter. + +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 +[here](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/didyoumean/didYouMean-1.2.1.js b/node_modules/didyoumean/didYouMean-1.2.1.js new file mode 100644 index 0000000000000000000000000000000000000000..febb30e8dda83226b82009c89a79850f1fc2c840 --- /dev/null +++ b/node_modules/didyoumean/didYouMean-1.2.1.js @@ -0,0 +1,274 @@ +/* + +didYouMean.js - A simple JavaScript matching engine +=================================================== + +[Available on GitHub](https://github.com/dcporter/didyoumean.js). + +A super-simple, highly optimized JS library for matching human-quality input to a list of potential +matches. You can use it to suggest a misspelled command-line utility option to a user, or to offer +links to nearby valid URLs on your 404 page. (The examples below are taken from a personal project, +my [HTML5 business card](http://dcporter.aws.af.cm/me), which uses didYouMean.js to suggest correct +URLs from misspelled ones, such as [dcporter.aws.af.cm/me/instagarm](http://dcporter.aws.af.cm/me/instagarm).) +Uses the [Levenshtein distance algorithm](https://en.wikipedia.org/wiki/Levenshtein_distance). + +didYouMean.js works in the browser as well as in node.js. To install it for use in node: + +``` +npm install didyoumean +``` + + +Examples +-------- + +Matching against a list of strings: +``` +var input = 'insargrm' +var list = ['facebook', 'twitter', 'instagram', 'linkedin']; +console.log(didYouMean(input, list)); +> 'instagram' +// The method matches 'insargrm' to 'instagram'. + +input = 'google plus'; +console.log(didYouMean(input, list)); +> null +// The method was unable to find 'google plus' in the list of options. +``` + +Matching against a list of objects: +``` +var input = 'insargrm'; +var list = [ { id: 'facebook' }, { id: 'twitter' }, { id: 'instagram' }, { id: 'linkedin' } ]; +var key = 'id'; +console.log(didYouMean(input, list, key)); +> 'instagram' +// The method returns the matching value. + +didYouMean.returnWinningObject = true; +console.log(didYouMean(input, list, key)); +> { id: 'instagram' } +// The method returns the matching object. +``` + + +didYouMean(str, list, [key]) +---------------------------- + +- str: The string input to match. +- list: An array of strings or objects to match against. +- key (OPTIONAL): If your list array contains objects, you must specify the key which contains the string + to match against. + +Returns: the closest matching string, or null if no strings exceed the threshold. + + +Options +------- + +Options are set on the didYouMean function object. You may change them at any time. + +### threshold + + By default, the method will only return strings whose edit distance is less than 40% (0.4x) of their length. + For example, if a ten-letter string is five edits away from its nearest match, the method will return null. + + You can control this by setting the "threshold" value on the didYouMean function. For example, to set the + edit distance threshold to 50% of the input string's length: + + ``` + didYouMean.threshold = 0.5; + ``` + + To return the nearest match no matter the threshold, set this value to null. + +### thresholdAbsolute + + This option behaves the same as threshold, but instead takes an integer number of edit steps. For example, + if thresholdAbsolute is set to 20 (the default), then the method will only return strings whose edit distance + is less than 20. Both options apply. + +### caseSensitive + + By default, the method will perform case-insensitive comparisons. If you wish to force case sensitivity, set + the "caseSensitive" value to true: + + ``` + didYouMean.caseSensitive = true; + ``` + +### nullResultValue + + By default, the method will return null if there is no sufficiently close match. You can change this value here. + +### returnWinningObject + + By default, the method will return the winning string value (if any). If your list contains objects rather + than strings, you may set returnWinningObject to true. + + ``` + didYouMean.returnWinningObject = true; + ``` + + This option has no effect on lists of strings. + +### returnFirstMatch + + By default, the method will search all values and return the closest match. If you're simply looking for a "good- + enough" match, you can set your thresholds appropriately and set returnFirstMatch to true to substantially speed + things up. + + +License +------- + +didYouMean copyright (c) 2013-2014 Dave Porter. + +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 +[here](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. + +*/ +(function() { + "use strict"; + + // The didYouMean method. + function didYouMean(str, list, key) { + if (!str) return null; + + // If we're running a case-insensitive search, smallify str. + if (!didYouMean.caseSensitive) { str = str.toLowerCase(); } + + // Calculate the initial value (the threshold) if present. + var thresholdRelative = didYouMean.threshold === null ? null : didYouMean.threshold * str.length, + thresholdAbsolute = didYouMean.thresholdAbsolute, + winningVal; + if (thresholdRelative !== null && thresholdAbsolute !== null) winningVal = Math.min(thresholdRelative, thresholdAbsolute); + else if (thresholdRelative !== null) winningVal = thresholdRelative; + else if (thresholdAbsolute !== null) winningVal = thresholdAbsolute; + else winningVal = null; + + // Get the edit distance to each option. If the closest one is less than 40% (by default) of str's length, + // then return it. + var winner, candidate, testCandidate, val, + i, len = list.length; + for (i = 0; i < len; i++) { + // Get item. + candidate = list[i]; + // If there's a key, get the candidate value out of the object. + if (key) { candidate = candidate[key]; } + // Gatekeep. + if (!candidate) { continue; } + // If we're running a case-insensitive search, smallify the candidate. + if (!didYouMean.caseSensitive) { testCandidate = candidate.toLowerCase(); } + else { testCandidate = candidate; } + // Get and compare edit distance. + val = getEditDistance(str, testCandidate, winningVal); + // If this value is smaller than our current winning value, OR if we have no winning val yet (i.e. the + // threshold option is set to null, meaning the caller wants a match back no matter how bad it is), then + // this is our new winner. + if (winningVal === null || val < winningVal) { + winningVal = val; + // Set the winner to either the value or its object, depending on the returnWinningObject option. + if (key && didYouMean.returnWinningObject) winner = list[i]; + else winner = candidate; + // If we're returning the first match, return it now. + if (didYouMean.returnFirstMatch) return winner; + } + } + + // If we have a winner, return it. + return winner || didYouMean.nullResultValue; + } + + // Set default options. + didYouMean.threshold = 0.4; + didYouMean.thresholdAbsolute = 20; + didYouMean.caseSensitive = false; + didYouMean.nullResultValue = null; + didYouMean.returnWinningObject = null; + didYouMean.returnFirstMatch = false; + + // Expose. + // In node... + if (typeof module !== 'undefined' && module.exports) { + module.exports = didYouMean; + } + // Otherwise... + else { + window.didYouMean = didYouMean; + } + + var MAX_INT = Math.pow(2,32) - 1; // We could probably go higher than this, but for practical reasons let's not. + function getEditDistance(a, b, max) { + // Handle null or undefined max. + max = max || max === 0 ? max : MAX_INT; + + var lena = a.length; + var lenb = b.length; + + // Fast path - no A or B. + if (lena === 0) return Math.min(max + 1, lenb); + if (lenb === 0) return Math.min(max + 1, lena); + + // Fast path - length diff larger than max. + if (Math.abs(lena - lenb) > max) return max + 1; + + // Slow path. + var matrix = [], + i, j, colMin, minJ, maxJ; + + // Set up the first row ([0, 1, 2, 3, etc]). + for (i = 0; i <= lenb; i++) { matrix[i] = [i]; } + + // Set up the first column (same). + for (j = 0; j <= lena; j++) { matrix[0][j] = j; } + + // Loop over the rest of the columns. + for (i = 1; i <= lenb; i++) { + colMin = MAX_INT; + minJ = 1; + if (i > max) minJ = i - max; + maxJ = lenb + 1; + if (maxJ > max + i) maxJ = max + i; + // Loop over the rest of the rows. + for (j = 1; j <= lena; j++) { + // If j is out of bounds, just put a large value in the slot. + if (j < minJ || j > maxJ) { + matrix[i][j] = max + 1; + } + + // Otherwise do the normal Levenshtein thing. + else { + // If the characters are the same, there's no change in edit distance. + if (b.charAt(i - 1) === a.charAt(j - 1)) { + matrix[i][j] = matrix[i - 1][j - 1]; + } + // Otherwise, see if we're substituting, inserting or deleting. + else { + matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // Substitute + Math.min(matrix[i][j - 1] + 1, // Insert + matrix[i - 1][j] + 1)); // Delete + } + } + + // Either way, update colMin. + if (matrix[i][j] < colMin) colMin = matrix[i][j]; + } + + // If this column's minimum is greater than the allowed maximum, there's no point + // in going on with life. + if (colMin > max) return max + 1; + } + // If we made it this far without running into the max, then return the final matrix value. + return matrix[lenb][lena]; + } + +})(); diff --git a/node_modules/didyoumean/didYouMean-1.2.1.min.js b/node_modules/didyoumean/didYouMean-1.2.1.min.js new file mode 100644 index 0000000000000000000000000000000000000000..c41abd8e1a7c5f46954338e95fe6c80169bc1e36 --- /dev/null +++ b/node_modules/didyoumean/didYouMean-1.2.1.min.js @@ -0,0 +1,17 @@ +/* + didYouMean.js copyright (c) 2013-2014 Dave Porter. + + [Available on GitHub](https://github.com/dcporter/didyoumean.js). + + 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 + [here](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. +*/ +(function(){"use strict";function e(t,r,i){if(!t)return null;if(!e.caseSensitive){t=t.toLowerCase()}var s=e.threshold===null?null:e.threshold*t.length,o=e.thresholdAbsolute,u;if(s!==null&&o!==null)u=Math.min(s,o);else if(s!==null)u=s;else if(o!==null)u=o;else u=null;var a,f,l,c,h,p=r.length;for(h=0;hr)return r+1;var o=[],u,a,f,l,c;for(u=0;u<=s;u++){o[u]=[u]}for(a=0;a<=i;a++){o[0][a]=a}for(u=1;u<=s;u++){f=t;l=1;if(u>r)l=u-r;c=s+1;if(c>r+u)c=r+u;for(a=1;a<=i;a++){if(ac){o[u][a]=r+1}else{if(n.charAt(u-1)===e.charAt(a-1)){o[u][a]=o[u-1][a-1]}else{o[u][a]=Math.min(o[u-1][a-1]+1,Math.min(o[u][a-1]+1,o[u-1][a]+1))}}if(o[u][a]r)return r+1}return o[s][i]}e.threshold=.4;e.thresholdAbsolute=20;e.caseSensitive=false;e.nullResultValue=null;e.returnWinningObject=null;e.returnFirstMatch=false;if(typeof module!=="undefined"&&module.exports){module.exports=e}else{window.didYouMean=e}var t=Math.pow(2,32)-1})(); \ No newline at end of file diff --git a/node_modules/didyoumean/package.json b/node_modules/didyoumean/package.json new file mode 100755 index 0000000000000000000000000000000000000000..1301d03872d861b244052167cb82c54e146d2b73 --- /dev/null +++ b/node_modules/didyoumean/package.json @@ -0,0 +1,27 @@ +{ + "name": "didyoumean", + "version": "1.2.2", + "description": "Match human-quality input to potential matches by edit distance.", + "homepage": "https://github.com/dcporter/didyoumean.js", + "author": { + "name": "Dave Porter", + "email": "dcporter@gmail.com", + "url": "http://dcporter.net/" + }, + "keywords": [ + "didyoumean", + "mean", + "edit", + "distance", + "levenshtein" + ], + "main": "./didYouMean-1.2.1.js", + "repository": { + "type": "git", + "url": "https://github.com/dcporter/didyoumean.js.git" + }, + "bugs": { + "url": "https://github.com/dcporter/didyoumean.js/issues" + }, + "license": "Apache-2.0" +} diff --git a/node_modules/dlv/README.md b/node_modules/dlv/README.md new file mode 100644 index 0000000000000000000000000000000000000000..6a8429d367f7b954a184d571dc24a22b63b792cd --- /dev/null +++ b/node_modules/dlv/README.md @@ -0,0 +1,76 @@ +# `dlv(obj, keypath)` [![NPM](https://img.shields.io/npm/v/dlv.svg)](https://npmjs.com/package/dlv) [![Build](https://travis-ci.org/developit/dlv.svg?branch=master)](https://travis-ci.org/developit/dlv) + +> Safely get a dot-notated path within a nested object, with ability to return a default if the full key path does not exist or the value is undefined + + +### Why? + +Smallest possible implementation: only **130 bytes.** + +You could write this yourself, but then you'd have to write [tests]. + +Supports ES Modules, CommonJS and globals. + + +### Installation + +`npm install --save dlv` + + +### Usage + +`delve(object, keypath, [default])` + +```js +import delve from 'dlv'; + +let obj = { + a: { + b: { + c: 1, + d: undefined, + e: null + } + } +}; + +//use string dot notation for keys +delve(obj, 'a.b.c') === 1; + +//or use an array key +delve(obj, ['a', 'b', 'c']) === 1; + +delve(obj, 'a.b') === obj.a.b; + +//returns undefined if the full key path does not exist and no default is specified +delve(obj, 'a.b.f') === undefined; + +//optional third parameter for default if the full key in path is missing +delve(obj, 'a.b.f', 'foo') === 'foo'; + +//or if the key exists but the value is undefined +delve(obj, 'a.b.d', 'foo') === 'foo'; + +//Non-truthy defined values are still returned if they exist at the full keypath +delve(obj, 'a.b.e', 'foo') === null; + +//undefined obj or key returns undefined, unless a default is supplied +delve(undefined, 'a.b.c') === undefined; +delve(undefined, 'a.b.c', 'foo') === 'foo'; +delve(obj, undefined, 'foo') === 'foo'; +``` + + +### Setter Counterparts + +- [dset](https://github.com/lukeed/dset) by [@lukeed](https://github.com/lukeed) is the spiritual "set" counterpart of `dlv` and very fast. +- [bury](https://github.com/kalmbach/bury) by [@kalmbach](https://github.com/kalmbach) does the opposite of `dlv` and is implemented in a very similar manner. + + +### License + +[MIT](https://oss.ninja/mit/developit/) + + +[preact]: https://github.com/developit/preact +[tests]: https://github.com/developit/dlv/blob/master/test.js diff --git a/node_modules/dlv/index.js b/node_modules/dlv/index.js new file mode 100644 index 0000000000000000000000000000000000000000..5d21277dcffe64fd03566ba802eb5a7c26e270a5 --- /dev/null +++ b/node_modules/dlv/index.js @@ -0,0 +1,7 @@ +export default function dlv(obj, key, def, p, undef) { + key = key.split ? key.split('.') : key; + for (p = 0; p < key.length; p++) { + obj = obj ? obj[key[p]] : undef; + } + return obj === undef ? def : obj; +} diff --git a/node_modules/dlv/package.json b/node_modules/dlv/package.json new file mode 100644 index 0000000000000000000000000000000000000000..0aaeb6ffd14a966d3b17299f9d85e2fa24deac30 --- /dev/null +++ b/node_modules/dlv/package.json @@ -0,0 +1,30 @@ +{ + "name": "dlv", + "version": "1.1.3", + "description": "Safely get a dot-notated property within an object.", + "main": "dist/dlv.js", + "browser": "dist/dlv.umd.js", + "module": "dist/dlv.es.js", + "scripts": { + "dev": "microbundle watch", + "build": "microbundle", + "prepublish": "npm run build", + "test": "node test", + "release": "npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish" + }, + "keywords": [ + "delve", + "dot notation", + "dot" + ], + "files": [ + "index.js", + "dist" + ], + "author": "Jason Miller (http://jasonformat.com)", + "repository": "developit/dlv", + "license": "MIT", + "devDependencies": { + "microbundle": "^0.11.0" + } +} diff --git a/node_modules/fast-glob/LICENSE b/node_modules/fast-glob/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..65a999460170355f6383b8f122da09e66e485165 --- /dev/null +++ b/node_modules/fast-glob/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/fast-glob/README.md b/node_modules/fast-glob/README.md new file mode 100644 index 0000000000000000000000000000000000000000..393f4fef180f3d13b692fc356748bbfbdff7cf55 --- /dev/null +++ b/node_modules/fast-glob/README.md @@ -0,0 +1,795 @@ +# fast-glob + +> It's a very fast and efficient [glob][glob_definition] library for [Node.js][node_js]. + +This package provides methods for traversing the file system and returning pathnames that matched a defined set of a specified pattern according to the rules used by the Unix Bash shell with some simplifications, meanwhile results are returned in **arbitrary order**. Quick, simple, effective. + +## Table of Contents + +
+Details + +* [Highlights](#highlights) +* [Donation](#donation) +* [Old and modern mode](#old-and-modern-mode) +* [Pattern syntax](#pattern-syntax) + * [Basic syntax](#basic-syntax) + * [Advanced syntax](#advanced-syntax) +* [Installation](#installation) +* [API](#api) + * [Asynchronous](#asynchronous) + * [Synchronous](#synchronous) + * [Stream](#stream) + * [patterns](#patterns) + * [[options]](#options) + * [Helpers](#helpers) + * [generateTasks](#generatetaskspatterns-options) + * [isDynamicPattern](#isdynamicpatternpattern-options) + * [escapePath](#escapepathpattern) +* [Options](#options-3) + * [Common](#common) + * [concurrency](#concurrency) + * [cwd](#cwd) + * [deep](#deep) + * [followSymbolicLinks](#followsymboliclinks) + * [fs](#fs) + * [ignore](#ignore) + * [suppressErrors](#suppresserrors) + * [throwErrorOnBrokenSymbolicLink](#throwerroronbrokensymboliclink) + * [Output control](#output-control) + * [absolute](#absolute) + * [markDirectories](#markdirectories) + * [objectMode](#objectmode) + * [onlyDirectories](#onlydirectories) + * [onlyFiles](#onlyfiles) + * [stats](#stats) + * [unique](#unique) + * [Matching control](#matching-control) + * [braceExpansion](#braceexpansion) + * [caseSensitiveMatch](#casesensitivematch) + * [dot](#dot) + * [extglob](#extglob) + * [globstar](#globstar) + * [baseNameMatch](#basenamematch) +* [FAQ](#faq) + * [What is a static or dynamic pattern?](#what-is-a-static-or-dynamic-pattern) + * [How to write patterns on Windows?](#how-to-write-patterns-on-windows) + * [Why are parentheses match wrong?](#why-are-parentheses-match-wrong) + * [How to exclude directory from reading?](#how-to-exclude-directory-from-reading) + * [How to use UNC path?](#how-to-use-unc-path) + * [Compatible with `node-glob`?](#compatible-with-node-glob) +* [Benchmarks](#benchmarks) + * [Server](#server) + * [Nettop](#nettop) +* [Changelog](#changelog) +* [License](#license) + +
+ +## Highlights + +* Fast. Probably the fastest. +* Supports multiple and negative patterns. +* Synchronous, Promise and Stream API. +* Object mode. Can return more than just strings. +* Error-tolerant. + +## Donation + +Do you like this project? Support it by donating, creating an issue or pull request. + +[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)][paypal_mrmlnc] + +## Old and modern mode + +This package works in two modes, depending on the environment in which it is used. + +* **Old mode**. Node.js below 10.10 or when the [`stats`](#stats) option is *enabled*. +* **Modern mode**. Node.js 10.10+ and the [`stats`](#stats) option is *disabled*. + +The modern mode is faster. Learn more about the [internal mechanism][nodelib_fs_scandir_old_and_modern_modern]. + +## Pattern syntax + +> :warning: Always use forward-slashes in glob expressions (patterns and [`ignore`](#ignore) option). Use backslashes for escaping characters. + +There is more than one form of syntax: basic and advanced. Below is a brief overview of the supported features. Also pay attention to our [FAQ](#faq). + +> :book: This package uses a [`micromatch`][micromatch] as a library for pattern matching. + +### Basic syntax + +* An asterisk (`*`) — matches everything except slashes (path separators), hidden files (names starting with `.`). +* A double star or globstar (`**`) — matches zero or more directories. +* Question mark (`?`) – matches any single character except slashes (path separators). +* Sequence (`[seq]`) — matches any character in sequence. + +> :book: A few additional words about the [basic matching behavior][picomatch_matching_behavior]. + +Some examples: + +* `src/**/*.js` — matches all files in the `src` directory (any level of nesting) that have the `.js` extension. +* `src/*.??` — matches all files in the `src` directory (only first level of nesting) that have a two-character extension. +* `file-[01].js` — matches files: `file-0.js`, `file-1.js`. + +### Advanced syntax + +* [Escapes characters][micromatch_backslashes] (`\\`) — matching special characters (`$^*+?()[]`) as literals. +* [POSIX character classes][picomatch_posix_brackets] (`[[:digit:]]`). +* [Extended globs][micromatch_extglobs] (`?(pattern-list)`). +* [Bash style brace expansions][micromatch_braces] (`{}`). +* [Regexp character classes][micromatch_regex_character_classes] (`[1-5]`). +* [Regex groups][regular_expressions_brackets] (`(a|b)`). + +> :book: A few additional words about the [advanced matching behavior][micromatch_extended_globbing]. + +Some examples: + +* `src/**/*.{css,scss}` — matches all files in the `src` directory (any level of nesting) that have the `.css` or `.scss` extension. +* `file-[[:digit:]].js` — matches files: `file-0.js`, `file-1.js`, …, `file-9.js`. +* `file-{1..3}.js` — matches files: `file-1.js`, `file-2.js`, `file-3.js`. +* `file-(1|2)` — matches files: `file-1.js`, `file-2.js`. + +## Installation + +```console +npm install fast-glob +``` + +## API + +### Asynchronous + +```js +fg(patterns, [options]) +``` + +Returns a `Promise` with an array of matching entries. + +```js +const fg = require('fast-glob'); + +const entries = await fg(['.editorconfig', '**/index.js'], { dot: true }); + +// ['.editorconfig', 'services/index.js'] +``` + +### Synchronous + +```js +fg.sync(patterns, [options]) +``` + +Returns an array of matching entries. + +```js +const fg = require('fast-glob'); + +const entries = fg.sync(['.editorconfig', '**/index.js'], { dot: true }); + +// ['.editorconfig', 'services/index.js'] +``` + +### Stream + +```js +fg.stream(patterns, [options]) +``` + +Returns a [`ReadableStream`][node_js_stream_readable_streams] when the `data` event will be emitted with matching entry. + +```js +const fg = require('fast-glob'); + +const stream = fg.stream(['.editorconfig', '**/index.js'], { dot: true }); + +for await (const entry of stream) { + // .editorconfig + // services/index.js +} +``` + +#### patterns + +* Required: `true` +* Type: `string | string[]` + +Any correct pattern(s). + +> :1234: [Pattern syntax](#pattern-syntax) +> +> :warning: This package does not respect the order of patterns. First, all the negative patterns are applied, and only then the positive patterns. If you want to get a certain order of records, use sorting or split calls. + +#### [options] + +* Required: `false` +* Type: [`Options`](#options-3) + +See [Options](#options-3) section. + +### Helpers + +#### `generateTasks(patterns, [options])` + +Returns the internal representation of patterns ([`Task`](./src/managers/tasks.ts) is a combining patterns by base directory). + +```js +fg.generateTasks('*'); + +[{ + base: '.', // Parent directory for all patterns inside this task + dynamic: true, // Dynamic or static patterns are in this task + patterns: ['*'], + positive: ['*'], + negative: [] +}] +``` + +##### patterns + +* Required: `true` +* Type: `string | string[]` + +Any correct pattern(s). + +##### [options] + +* Required: `false` +* Type: [`Options`](#options-3) + +See [Options](#options-3) section. + +#### `isDynamicPattern(pattern, [options])` + +Returns `true` if the passed pattern is a dynamic pattern. + +> :1234: [What is a static or dynamic pattern?](#what-is-a-static-or-dynamic-pattern) + +```js +fg.isDynamicPattern('*'); // true +fg.isDynamicPattern('abc'); // false +``` + +##### pattern + +* Required: `true` +* Type: `string` + +Any correct pattern. + +##### [options] + +* Required: `false` +* Type: [`Options`](#options-3) + +See [Options](#options-3) section. + +#### `escapePath(pattern)` + +Returns a path with escaped special characters (`*?|(){}[]`, `!` at the beginning of line, `@+!` before the opening parenthesis). + +```js +fg.escapePath('!abc'); // \\!abc +fg.escapePath('C:/Program Files (x86)'); // C:/Program Files \\(x86\\) +``` + +##### pattern + +* Required: `true` +* Type: `string` + +Any string, for example, a path to a file. + +## Options + +### Common options + +#### concurrency + +* Type: `number` +* Default: `os.cpus().length` + +Specifies the maximum number of concurrent requests from a reader to read directories. + +> :book: The higher the number, the higher the performance and load on the file system. If you want to read in quiet mode, set the value to a comfortable number or `1`. + +#### cwd + +* Type: `string` +* Default: `process.cwd()` + +The current working directory in which to search. + +#### deep + +* Type: `number` +* Default: `Infinity` + +Specifies the maximum depth of a read directory relative to the start directory. + +For example, you have the following tree: + +```js +dir/ +└── one/ // 1 + └── two/ // 2 + └── file.js // 3 +``` + +```js +// With base directory +fg.sync('dir/**', { onlyFiles: false, deep: 1 }); // ['dir/one'] +fg.sync('dir/**', { onlyFiles: false, deep: 2 }); // ['dir/one', 'dir/one/two'] + +// With cwd option +fg.sync('**', { onlyFiles: false, cwd: 'dir', deep: 1 }); // ['one'] +fg.sync('**', { onlyFiles: false, cwd: 'dir', deep: 2 }); // ['one', 'one/two'] +``` + +> :book: If you specify a pattern with some base directory, this directory will not participate in the calculation of the depth of the found directories. Think of it as a [`cwd`](#cwd) option. + +#### followSymbolicLinks + +* Type: `boolean` +* Default: `true` + +Indicates whether to traverse descendants of symbolic link directories when expanding `**` patterns. + +> :book: Note that this option does not affect the base directory of the pattern. For example, if `./a` is a symlink to directory `./b` and you specified `['./a**', './b/**']` patterns, then directory `./a` will still be read. + +> :book: If the [`stats`](#stats) option is specified, the information about the symbolic link (`fs.lstat`) will be replaced with information about the entry (`fs.stat`) behind it. + +#### fs + +* Type: `FileSystemAdapter` +* Default: `fs.*` + +Custom implementation of methods for working with the file system. + +```ts +export 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; +} +``` + +#### ignore + +* Type: `string[]` +* Default: `[]` + +An array of glob patterns to exclude matches. This is an alternative way to use negative patterns. + +```js +dir/ +├── package-lock.json +└── package.json +``` + +```js +fg.sync(['*.json', '!package-lock.json']); // ['package.json'] +fg.sync('*.json', { ignore: ['package-lock.json'] }); // ['package.json'] +``` + +#### suppressErrors + +* Type: `boolean` +* Default: `false` + +By default this package suppress only `ENOENT` errors. Set to `true` to suppress any error. + +> :book: Can be useful when the directory has entries with a special level of access. + +#### throwErrorOnBrokenSymbolicLink + +* Type: `boolean` +* Default: `false` + +Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`. + +> :book: This option has no effect on errors when reading the symbolic link directory. + +### Output control + +#### absolute + +* Type: `boolean` +* Default: `false` + +Return the absolute path for entries. + +```js +fg.sync('*.js', { absolute: false }); // ['index.js'] +fg.sync('*.js', { absolute: true }); // ['/home/user/index.js'] +``` + +> :book: This option is required if you want to use negative patterns with absolute path, for example, `!${__dirname}/*.js`. + +#### markDirectories + +* Type: `boolean` +* Default: `false` + +Mark the directory path with the final slash. + +```js +fg.sync('*', { onlyFiles: false, markDirectories: false }); // ['index.js', 'controllers'] +fg.sync('*', { onlyFiles: false, markDirectories: true }); // ['index.js', 'controllers/'] +``` + +#### objectMode + +* Type: `boolean` +* Default: `false` + +Returns objects (instead of strings) describing entries. + +```js +fg.sync('*', { objectMode: false }); // ['src/index.js'] +fg.sync('*', { objectMode: true }); // [{ name: 'index.js', path: 'src/index.js', dirent: }] +``` + +The object has the following fields: + +* name (`string`) — the last part of the path (basename) +* path (`string`) — full path relative to the pattern base directory +* dirent ([`fs.Dirent`][node_js_fs_class_fs_dirent]) — instance of `fs.Dirent` + +> :book: An object is an internal representation of entry, so getting it does not affect performance. + +#### onlyDirectories + +* Type: `boolean` +* Default: `false` + +Return only directories. + +```js +fg.sync('*', { onlyDirectories: false }); // ['index.js', 'src'] +fg.sync('*', { onlyDirectories: true }); // ['src'] +``` + +> :book: If `true`, the [`onlyFiles`](#onlyfiles) option is automatically `false`. + +#### onlyFiles + +* Type: `boolean` +* Default: `true` + +Return only files. + +```js +fg.sync('*', { onlyFiles: false }); // ['index.js', 'src'] +fg.sync('*', { onlyFiles: true }); // ['index.js'] +``` + +#### stats + +* Type: `boolean` +* Default: `false` + +Enables an [object mode](#objectmode) with an additional field: + +* stats ([`fs.Stats`][node_js_fs_class_fs_stats]) — instance of `fs.Stats` + +```js +fg.sync('*', { stats: false }); // ['src/index.js'] +fg.sync('*', { stats: true }); // [{ name: 'index.js', path: 'src/index.js', dirent: , stats: }] +``` + +> :book: Returns `fs.stat` instead of `fs.lstat` for symbolic links when the [`followSymbolicLinks`](#followsymboliclinks) option is specified. +> +> :warning: Unlike [object mode](#objectmode) this mode requires additional calls to the file system. On average, this mode is slower at least twice. See [old and modern mode](#old-and-modern-mode) for more details. + +#### unique + +* Type: `boolean` +* Default: `true` + +Ensures that the returned entries are unique. + +```js +fg.sync(['*.json', 'package.json'], { unique: false }); // ['package.json', 'package.json'] +fg.sync(['*.json', 'package.json'], { unique: true }); // ['package.json'] +``` + +If `true` and similar entries are found, the result is the first found. + +### Matching control + +#### braceExpansion + +* Type: `boolean` +* Default: `true` + +Enables Bash-like brace expansion. + +> :1234: [Syntax description][bash_hackers_syntax_expansion_brace] or more [detailed description][micromatch_braces]. + +```js +dir/ +├── abd +├── acd +└── a{b,c}d +``` + +```js +fg.sync('a{b,c}d', { braceExpansion: false }); // ['a{b,c}d'] +fg.sync('a{b,c}d', { braceExpansion: true }); // ['abd', 'acd'] +``` + +#### caseSensitiveMatch + +* Type: `boolean` +* Default: `true` + +Enables a [case-sensitive][wikipedia_case_sensitivity] mode for matching files. + +```js +dir/ +├── file.txt +└── File.txt +``` + +```js +fg.sync('file.txt', { caseSensitiveMatch: false }); // ['file.txt', 'File.txt'] +fg.sync('file.txt', { caseSensitiveMatch: true }); // ['file.txt'] +``` + +#### dot + +* Type: `boolean` +* Default: `false` + +Allow patterns to match entries that begin with a period (`.`). + +> :book: Note that an explicit dot in a portion of the pattern will always match dot files. + +```js +dir/ +├── .editorconfig +└── package.json +``` + +```js +fg.sync('*', { dot: false }); // ['package.json'] +fg.sync('*', { dot: true }); // ['.editorconfig', 'package.json'] +``` + +#### extglob + +* Type: `boolean` +* Default: `true` + +Enables Bash-like `extglob` functionality. + +> :1234: [Syntax description][micromatch_extglobs]. + +```js +dir/ +├── README.md +└── package.json +``` + +```js +fg.sync('*.+(json|md)', { extglob: false }); // [] +fg.sync('*.+(json|md)', { extglob: true }); // ['README.md', 'package.json'] +``` + +#### globstar + +* Type: `boolean` +* Default: `true` + +Enables recursively repeats a pattern containing `**`. If `false`, `**` behaves exactly like `*`. + +```js +dir/ +└── a + └── b +``` + +```js +fg.sync('**', { onlyFiles: false, globstar: false }); // ['a'] +fg.sync('**', { onlyFiles: false, globstar: true }); // ['a', 'a/b'] +``` + +#### baseNameMatch + +* Type: `boolean` +* Default: `false` + +If set to `true`, then patterns without slashes will be matched against the basename of the path if it contains slashes. + +```js +dir/ +└── one/ + └── file.md +``` + +```js +fg.sync('*.md', { baseNameMatch: false }); // [] +fg.sync('*.md', { baseNameMatch: true }); // ['one/file.md'] +``` + +## FAQ + +## What is a static or dynamic pattern? + +All patterns can be divided into two types: + +* **static**. A pattern is considered static if it can be used to get an entry on the file system without using matching mechanisms. For example, the `file.js` pattern is a static pattern because we can just verify that it exists on the file system. +* **dynamic**. A pattern is considered dynamic if it cannot be used directly to find occurrences without using a matching mechanisms. For example, the `*` pattern is a dynamic pattern because we cannot use this pattern directly. + +A pattern is considered dynamic if it contains the following characters (`…` — any characters or their absence) or options: + +* The [`caseSensitiveMatch`](#casesensitivematch) option is disabled +* `\\` (the escape character) +* `*`, `?`, `!` (at the beginning of line) +* `[…]` +* `(…|…)` +* `@(…)`, `!(…)`, `*(…)`, `?(…)`, `+(…)` (respects the [`extglob`](#extglob) option) +* `{…,…}`, `{…..…}` (respects the [`braceExpansion`](#braceexpansion) option) + +## How to write patterns on Windows? + +Always use forward-slashes in glob expressions (patterns and [`ignore`](#ignore) option). Use backslashes for escaping characters. With the [`cwd`](#cwd) option use a convenient format. + +**Bad** + +```ts +[ + 'directory\\*', + path.join(process.cwd(), '**') +] +``` + +**Good** + +```ts +[ + 'directory/*', + path.join(process.cwd(), '**').replace(/\\/g, '/') +] +``` + +> :book: Use the [`normalize-path`][npm_normalize_path] or the [`unixify`][npm_unixify] package to convert Windows-style path to a Unix-style path. + +Read more about [matching with backslashes][micromatch_backslashes]. + +## Why are parentheses match wrong? + +```js +dir/ +└── (special-*file).txt +``` + +```js +fg.sync(['(special-*file).txt']) // [] +``` + +Refers to Bash. You need to escape special characters: + +```js +fg.sync(['\\(special-*file\\).txt']) // ['(special-*file).txt'] +``` + +Read more about [matching special characters as literals][picomatch_matching_special_characters_as_literals]. + +## How to exclude directory from reading? + +You can use a negative pattern like this: `!**/node_modules` or `!**/node_modules/**`. Also you can use [`ignore`](#ignore) option. Just look at the example below. + +```js +first/ +├── file.md +└── second/ + └── file.txt +``` + +If you don't want to read the `second` directory, you must write the following pattern: `!**/second` or `!**/second/**`. + +```js +fg.sync(['**/*.md', '!**/second']); // ['first/file.md'] +fg.sync(['**/*.md'], { ignore: ['**/second/**'] }); // ['first/file.md'] +``` + +> :warning: When you write `!**/second/**/*` it means that the directory will be **read**, but all the entries will not be included in the results. + +You have to understand that if you write the pattern to exclude directories, then the directory will not be read under any circumstances. + +## How to use UNC path? + +You cannot use [Uniform Naming Convention (UNC)][unc_path] paths as patterns (due to syntax), but you can use them as [`cwd`](#cwd) directory. + +```ts +fg.sync('*', { cwd: '\\\\?\\C:\\Python27' /* or //?/C:/Python27 */ }); +fg.sync('Python27/*', { cwd: '\\\\?\\C:\\' /* or //?/C:/ */ }); +``` + +## Compatible with `node-glob`? + +| node-glob | fast-glob | +| :----------: | :-------: | +| `cwd` | [`cwd`](#cwd) | +| `root` | – | +| `dot` | [`dot`](#dot) | +| `nomount` | – | +| `mark` | [`markDirectories`](#markdirectories) | +| `nosort` | – | +| `nounique` | [`unique`](#unique) | +| `nobrace` | [`braceExpansion`](#braceexpansion) | +| `noglobstar` | [`globstar`](#globstar) | +| `noext` | [`extglob`](#extglob) | +| `nocase` | [`caseSensitiveMatch`](#casesensitivematch) | +| `matchBase` | [`baseNameMatch`](#basenamematch) | +| `nodir` | [`onlyFiles`](#onlyfiles) | +| `ignore` | [`ignore`](#ignore) | +| `follow` | [`followSymbolicLinks`](#followsymboliclinks) | +| `realpath` | – | +| `absolute` | [`absolute`](#absolute) | + +## Benchmarks + +### Server + +Link: [Vultr Bare Metal][vultr_pricing_baremetal] + +* Processor: E3-1270v6 (8 CPU) +* RAM: 32GB +* Disk: SSD ([Intel DC S3520 SSDSC2BB240G7][intel_ssd]) + +You can see results [here][github_gist_benchmark_server] for latest release. + +### Nettop + +Link: [Zotac bi323][zotac_bi323] + +* Processor: Intel N3150 (4 CPU) +* RAM: 8GB +* Disk: SSD ([Silicon Power SP060GBSS3S55S25][silicon_power_ssd]) + +You can see results [here][github_gist_benchmark_nettop] for latest release. + +## Changelog + +See the [Releases section of our GitHub project][github_releases] for changelog for each release version. + +## License + +This software is released under the terms of the MIT license. + +[bash_hackers_syntax_expansion_brace]: https://wiki.bash-hackers.org/syntax/expansion/brace +[github_gist_benchmark_nettop]: https://gist.github.com/mrmlnc/f06246b197f53c356895fa35355a367c#file-fg-benchmark-nettop-product-txt +[github_gist_benchmark_server]: https://gist.github.com/mrmlnc/f06246b197f53c356895fa35355a367c#file-fg-benchmark-server-product-txt +[github_releases]: https://github.com/mrmlnc/fast-glob/releases +[glob_definition]: https://en.wikipedia.org/wiki/Glob_(programming) +[glob_linux_man]: http://man7.org/linux/man-pages/man3/glob.3.html +[intel_ssd]: https://ark.intel.com/content/www/us/en/ark/products/93012/intel-ssd-dc-s3520-series-240gb-2-5in-sata-6gb-s-3d1-mlc.html +[micromatch_backslashes]: https://github.com/micromatch/micromatch#backslashes +[micromatch_braces]: https://github.com/micromatch/braces +[micromatch_extended_globbing]: https://github.com/micromatch/micromatch#extended-globbing +[micromatch_extglobs]: https://github.com/micromatch/micromatch#extglobs +[micromatch_regex_character_classes]: https://github.com/micromatch/micromatch#regex-character-classes +[micromatch]: https://github.com/micromatch/micromatch +[node_js_fs_class_fs_dirent]: https://nodejs.org/api/fs.html#fs_class_fs_dirent +[node_js_fs_class_fs_stats]: https://nodejs.org/api/fs.html#fs_class_fs_stats +[node_js_stream_readable_streams]: https://nodejs.org/api/stream.html#stream_readable_streams +[node_js]: https://nodejs.org/en +[nodelib_fs_scandir_old_and_modern_modern]: https://github.com/nodelib/nodelib/blob/master/packages/fs/fs.scandir/README.md#old-and-modern-mode +[npm_normalize_path]: https://www.npmjs.com/package/normalize-path +[npm_unixify]: https://www.npmjs.com/package/unixify +[paypal_mrmlnc]:https://paypal.me/mrmlnc +[picomatch_matching_behavior]: https://github.com/micromatch/picomatch#matching-behavior-vs-bash +[picomatch_matching_special_characters_as_literals]: https://github.com/micromatch/picomatch#matching-special-characters-as-literals +[picomatch_posix_brackets]: https://github.com/micromatch/picomatch#posix-brackets +[regular_expressions_brackets]: https://www.regular-expressions.info/brackets.html +[silicon_power_ssd]: https://www.silicon-power.com/web/product-1 +[unc_path]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/62e862f4-2a51-452e-8eeb-dc4ff5ee33cc +[vultr_pricing_baremetal]: https://www.vultr.com/pricing/baremetal +[wikipedia_case_sensitivity]: https://en.wikipedia.org/wiki/Case_sensitivity +[zotac_bi323]: https://www.zotac.com/ee/product/mini_pcs/zbox-bi323 diff --git a/node_modules/fast-glob/node_modules/glob-parent/CHANGELOG.md b/node_modules/fast-glob/node_modules/glob-parent/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..fb9de9618b9dd9a7e239c148fc60a55197ab8f6a --- /dev/null +++ b/node_modules/fast-glob/node_modules/glob-parent/CHANGELOG.md @@ -0,0 +1,110 @@ +### [5.1.2](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2) (2021-03-06) + + +### Bug Fixes + +* eliminate ReDoS ([#36](https://github.com/gulpjs/glob-parent/issues/36)) ([f923116](https://github.com/gulpjs/glob-parent/commit/f9231168b0041fea3f8f954b3cceb56269fc6366)) + +### [5.1.1](https://github.com/gulpjs/glob-parent/compare/v5.1.0...v5.1.1) (2021-01-27) + + +### Bug Fixes + +* unescape exclamation mark ([#26](https://github.com/gulpjs/glob-parent/issues/26)) ([a98874f](https://github.com/gulpjs/glob-parent/commit/a98874f1a59e407f4fb1beb0db4efa8392da60bb)) + +## [5.1.0](https://github.com/gulpjs/glob-parent/compare/v5.0.0...v5.1.0) (2021-01-27) + + +### Features + +* add `flipBackslashes` option to disable auto conversion of slashes (closes [#24](https://github.com/gulpjs/glob-parent/issues/24)) ([#25](https://github.com/gulpjs/glob-parent/issues/25)) ([eecf91d](https://github.com/gulpjs/glob-parent/commit/eecf91d5e3834ed78aee39c4eaaae654d76b87b3)) + +## [5.0.0](https://github.com/gulpjs/glob-parent/compare/v4.0.0...v5.0.0) (2021-01-27) + + +### ⚠ BREAKING CHANGES + +* Drop support for node <6 & bump dependencies + +### Miscellaneous Chores + +* Drop support for node <6 & bump dependencies ([896c0c0](https://github.com/gulpjs/glob-parent/commit/896c0c00b4e7362f60b96e7fc295ae929245255a)) + +## [4.0.0](https://github.com/gulpjs/glob-parent/compare/v3.1.0...v4.0.0) (2021-01-27) + + +### ⚠ BREAKING CHANGES + +* question marks are valid path characters on Windows so avoid flagging as a glob when alone +* Update is-glob dependency + +### Features + +* hoist regexps and strings for performance gains ([4a80667](https://github.com/gulpjs/glob-parent/commit/4a80667c69355c76a572a5892b0f133c8e1f457e)) +* question marks are valid path characters on Windows so avoid flagging as a glob when alone ([2a551dd](https://github.com/gulpjs/glob-parent/commit/2a551dd0dc3235e78bf3c94843d4107072d17841)) +* Update is-glob dependency ([e41fcd8](https://github.com/gulpjs/glob-parent/commit/e41fcd895d1f7bc617dba45c9d935a7949b9c281)) + +## [3.1.0](https://github.com/gulpjs/glob-parent/compare/v3.0.1...v3.1.0) (2021-01-27) + + +### Features + +* allow basic win32 backslash use ([272afa5](https://github.com/gulpjs/glob-parent/commit/272afa5fd070fc0f796386a5993d4ee4a846988b)) +* handle extglobs (parentheses) containing separators ([7db1bdb](https://github.com/gulpjs/glob-parent/commit/7db1bdb0756e55fd14619e8ce31aa31b17b117fd)) +* new approach to braces/brackets handling ([8269bd8](https://github.com/gulpjs/glob-parent/commit/8269bd89290d99fac9395a354fb56fdcdb80f0be)) +* pre-process braces/brackets sections ([9ef8a87](https://github.com/gulpjs/glob-parent/commit/9ef8a87f66b1a43d0591e7a8e4fc5a18415ee388)) +* preserve escaped brace/bracket at end of string ([8cfb0ba](https://github.com/gulpjs/glob-parent/commit/8cfb0ba84202d51571340dcbaf61b79d16a26c76)) + + +### Bug Fixes + +* trailing escaped square brackets ([99ec9fe](https://github.com/gulpjs/glob-parent/commit/99ec9fecc60ee488ded20a94dd4f18b4f55c4ccf)) + +### [3.0.1](https://github.com/gulpjs/glob-parent/compare/v3.0.0...v3.0.1) (2021-01-27) + + +### Features + +* use path-dirname ponyfill ([cdbea5f](https://github.com/gulpjs/glob-parent/commit/cdbea5f32a58a54e001a75ddd7c0fccd4776aacc)) + + +### Bug Fixes + +* unescape glob-escaped dirnames on output ([598c533](https://github.com/gulpjs/glob-parent/commit/598c533bdf49c1428bc063aa9b8db40c5a86b030)) + +## [3.0.0](https://github.com/gulpjs/glob-parent/compare/v2.0.0...v3.0.0) (2021-01-27) + + +### ⚠ BREAKING CHANGES + +* update is-glob dependency + +### Features + +* update is-glob dependency ([5c5f8ef](https://github.com/gulpjs/glob-parent/commit/5c5f8efcee362a8e7638cf8220666acd8784f6bd)) + +## [2.0.0](https://github.com/gulpjs/glob-parent/compare/v1.3.0...v2.0.0) (2021-01-27) + + +### Features + +* move up to dirname regardless of glob characters ([f97fb83](https://github.com/gulpjs/glob-parent/commit/f97fb83be2e0a9fc8d3b760e789d2ecadd6aa0c2)) + +## [1.3.0](https://github.com/gulpjs/glob-parent/compare/v1.2.0...v1.3.0) (2021-01-27) + +## [1.2.0](https://github.com/gulpjs/glob-parent/compare/v1.1.0...v1.2.0) (2021-01-27) + + +### Reverts + +* feat: make regex test strings smaller ([dc80fa9](https://github.com/gulpjs/glob-parent/commit/dc80fa9658dca20549cfeba44bbd37d5246fcce0)) + +## [1.1.0](https://github.com/gulpjs/glob-parent/compare/v1.0.0...v1.1.0) (2021-01-27) + + +### Features + +* make regex test strings smaller ([cd83220](https://github.com/gulpjs/glob-parent/commit/cd832208638f45169f986d80fcf66e401f35d233)) + +## 1.0.0 (2021-01-27) + diff --git a/node_modules/fast-glob/node_modules/glob-parent/LICENSE b/node_modules/fast-glob/node_modules/glob-parent/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..63222d7a8f9f5cd8bf912764cc10b6b51a5940ae --- /dev/null +++ b/node_modules/fast-glob/node_modules/glob-parent/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) 2015, 2019 Elan Shanker + +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/fast-glob/node_modules/glob-parent/README.md b/node_modules/fast-glob/node_modules/glob-parent/README.md new file mode 100644 index 0000000000000000000000000000000000000000..36a279384b14a8ea5b723b1d952c283a109f690e --- /dev/null +++ b/node_modules/fast-glob/node_modules/glob-parent/README.md @@ -0,0 +1,137 @@ +

+ + + +

+ +# glob-parent + +[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Azure Pipelines Build Status][azure-pipelines-image]][azure-pipelines-url] [![Travis Build Status][travis-image]][travis-url] [![AppVeyor Build Status][appveyor-image]][appveyor-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url] + +Extract the non-magic parent path from a glob string. + +## Usage + +```js +var globParent = require('glob-parent'); + +globParent('path/to/*.js'); // 'path/to' +globParent('/root/path/to/*.js'); // '/root/path/to' +globParent('/*.js'); // '/' +globParent('*.js'); // '.' +globParent('**/*.js'); // '.' +globParent('path/{to,from}'); // 'path' +globParent('path/!(to|from)'); // 'path' +globParent('path/?(to|from)'); // 'path' +globParent('path/+(to|from)'); // 'path' +globParent('path/*(to|from)'); // 'path' +globParent('path/@(to|from)'); // 'path' +globParent('path/**/*'); // 'path' + +// if provided a non-glob path, returns the nearest dir +globParent('path/foo/bar.js'); // 'path/foo' +globParent('path/foo/'); // 'path/foo' +globParent('path/foo'); // 'path' (see issue #3 for details) +``` + +## API + +### `globParent(maybeGlobString, [options])` + +Takes a string and returns the part of the path before the glob begins. Be aware of Escaping rules and Limitations below. + +#### options + +```js +{ + // Disables the automatic conversion of slashes for Windows + flipBackslashes: true +} +``` + +## Escaping + +The following characters have special significance in glob patterns and must be escaped if you want them to be treated as regular path characters: + +- `?` (question mark) unless used as a path segment alone +- `*` (asterisk) +- `|` (pipe) +- `(` (opening parenthesis) +- `)` (closing parenthesis) +- `{` (opening curly brace) +- `}` (closing curly brace) +- `[` (opening bracket) +- `]` (closing bracket) + +**Example** + +```js +globParent('foo/[bar]/') // 'foo' +globParent('foo/\\[bar]/') // 'foo/[bar]' +``` + +## Limitations + +### Braces & Brackets +This library attempts a quick and imperfect method of determining which path +parts have glob magic without fully parsing/lexing the pattern. There are some +advanced use cases that can trip it up, such as nested braces where the outer +pair is escaped and the inner one contains a path separator. If you find +yourself in the unlikely circumstance of being affected by this or need to +ensure higher-fidelity glob handling in your library, it is recommended that you +pre-process your input with [expand-braces] and/or [expand-brackets]. + +### Windows +Backslashes are not valid path separators for globs. If a path with backslashes +is provided anyway, for simple cases, glob-parent will replace the path +separator for you and return the non-glob parent path (now with +forward-slashes, which are still valid as Windows path separators). + +This cannot be used in conjunction with escape characters. + +```js +// BAD +globParent('C:\\Program Files \\(x86\\)\\*.ext') // 'C:/Program Files /(x86/)' + +// GOOD +globParent('C:/Program Files\\(x86\\)/*.ext') // 'C:/Program Files (x86)' +``` + +If you are using escape characters for a pattern without path parts (i.e. +relative to `cwd`), prefix with `./` to avoid confusing glob-parent. + +```js +// BAD +globParent('foo \\[bar]') // 'foo ' +globParent('foo \\[bar]*') // 'foo ' + +// GOOD +globParent('./foo \\[bar]') // 'foo [bar]' +globParent('./foo \\[bar]*') // '.' +``` + +## License + +ISC + +[expand-braces]: https://github.com/jonschlinkert/expand-braces +[expand-brackets]: https://github.com/jonschlinkert/expand-brackets + +[downloads-image]: https://img.shields.io/npm/dm/glob-parent.svg +[npm-url]: https://www.npmjs.com/package/glob-parent +[npm-image]: https://img.shields.io/npm/v/glob-parent.svg + +[azure-pipelines-url]: https://dev.azure.com/gulpjs/gulp/_build/latest?definitionId=2&branchName=master +[azure-pipelines-image]: https://dev.azure.com/gulpjs/gulp/_apis/build/status/glob-parent?branchName=master + +[travis-url]: https://travis-ci.org/gulpjs/glob-parent +[travis-image]: https://img.shields.io/travis/gulpjs/glob-parent.svg?label=travis-ci + +[appveyor-url]: https://ci.appveyor.com/project/gulpjs/glob-parent +[appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/glob-parent.svg?label=appveyor + +[coveralls-url]: https://coveralls.io/r/gulpjs/glob-parent +[coveralls-image]: https://img.shields.io/coveralls/gulpjs/glob-parent/master.svg + +[gitter-url]: https://gitter.im/gulpjs/gulp +[gitter-image]: https://badges.gitter.im/gulpjs/gulp.svg diff --git a/node_modules/fast-glob/node_modules/glob-parent/index.js b/node_modules/fast-glob/node_modules/glob-parent/index.js new file mode 100644 index 0000000000000000000000000000000000000000..09e257ea306cd41c63cc1a59a86653d098bda0f9 --- /dev/null +++ b/node_modules/fast-glob/node_modules/glob-parent/index.js @@ -0,0 +1,42 @@ +'use strict'; + +var isGlob = require('is-glob'); +var pathPosixDirname = require('path').posix.dirname; +var isWin32 = require('os').platform() === 'win32'; + +var slash = '/'; +var backslash = /\\/g; +var enclosure = /[\{\[].*[\}\]]$/; +var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; +var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; + +/** + * @param {string} str + * @param {Object} opts + * @param {boolean} [opts.flipBackslashes=true] + * @returns {string} + */ +module.exports = function globParent(str, opts) { + var options = Object.assign({ flipBackslashes: true }, opts); + + // flip windows path separators + if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { + str = str.replace(backslash, slash); + } + + // special case for strings ending in enclosure containing path separator + if (enclosure.test(str)) { + str += slash; + } + + // preserves full path in case of trailing path separator + str += 'a'; + + // remove path parts that are globby + do { + str = pathPosixDirname(str); + } while (isGlob(str) || globby.test(str)); + + // remove escape chars and return result + return str.replace(escaped, '$1'); +}; diff --git a/node_modules/fast-glob/node_modules/glob-parent/package.json b/node_modules/fast-glob/node_modules/glob-parent/package.json new file mode 100644 index 0000000000000000000000000000000000000000..125c971c2701983e5569b097af23dc98a29525ff --- /dev/null +++ b/node_modules/fast-glob/node_modules/glob-parent/package.json @@ -0,0 +1,48 @@ +{ + "name": "glob-parent", + "version": "5.1.2", + "description": "Extract the non-magic parent path from a glob string.", + "author": "Gulp Team (https://gulpjs.com/)", + "contributors": [ + "Elan Shanker (https://github.com/es128)", + "Blaine Bublitz " + ], + "repository": "gulpjs/glob-parent", + "license": "ISC", + "engines": { + "node": ">= 6" + }, + "main": "index.js", + "files": [ + "LICENSE", + "index.js" + ], + "scripts": { + "lint": "eslint .", + "pretest": "npm run lint", + "test": "nyc mocha --async-only", + "azure-pipelines": "nyc mocha --async-only --reporter xunit -O output=test.xunit", + "coveralls": "nyc report --reporter=text-lcov | coveralls" + }, + "dependencies": { + "is-glob": "^4.0.1" + }, + "devDependencies": { + "coveralls": "^3.0.11", + "eslint": "^2.13.1", + "eslint-config-gulp": "^3.0.1", + "expect": "^1.20.2", + "mocha": "^6.0.2", + "nyc": "^13.3.0" + }, + "keywords": [ + "glob", + "parent", + "strip", + "path", + "dirname", + "directory", + "base", + "wildcard" + ] +} diff --git a/node_modules/fast-glob/out/index.d.ts b/node_modules/fast-glob/out/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..54daa45a107d3af0d8308c5aba0981e457c8c380 --- /dev/null +++ b/node_modules/fast-glob/out/index.d.ts @@ -0,0 +1,27 @@ +/// +import * as taskManager from './managers/tasks'; +import { Options as OptionsInternal } from './settings'; +import { Entry as EntryInternal, FileSystemAdapter as FileSystemAdapterInternal, Pattern as PatternInternal } from './types'; +declare type EntryObjectModePredicate = { + [TKey in keyof Pick]-?: true; +}; +declare type EntryStatsPredicate = { + [TKey in keyof Pick]-?: true; +}; +declare type EntryObjectPredicate = EntryObjectModePredicate | EntryStatsPredicate; +declare function FastGlob(source: PatternInternal | PatternInternal[], options: OptionsInternal & EntryObjectPredicate): Promise; +declare function FastGlob(source: PatternInternal | PatternInternal[], options?: OptionsInternal): Promise; +declare namespace FastGlob { + type Options = OptionsInternal; + type Entry = EntryInternal; + type Task = taskManager.Task; + type Pattern = PatternInternal; + type FileSystemAdapter = FileSystemAdapterInternal; + function sync(source: PatternInternal | PatternInternal[], options: OptionsInternal & EntryObjectPredicate): EntryInternal[]; + function sync(source: PatternInternal | PatternInternal[], options?: OptionsInternal): string[]; + function stream(source: PatternInternal | PatternInternal[], options?: OptionsInternal): NodeJS.ReadableStream; + function generateTasks(source: PatternInternal | PatternInternal[], options?: OptionsInternal): Task[]; + function isDynamicPattern(source: PatternInternal, options?: OptionsInternal): boolean; + function escapePath(source: PatternInternal): PatternInternal; +} +export = FastGlob; diff --git a/node_modules/fast-glob/out/index.js b/node_modules/fast-glob/out/index.js new file mode 100644 index 0000000000000000000000000000000000000000..53978522955d98d2ba4d1018af6f308cb6981c28 --- /dev/null +++ b/node_modules/fast-glob/out/index.js @@ -0,0 +1,68 @@ +"use strict"; +const taskManager = require("./managers/tasks"); +const patternManager = require("./managers/patterns"); +const async_1 = require("./providers/async"); +const stream_1 = require("./providers/stream"); +const sync_1 = require("./providers/sync"); +const settings_1 = require("./settings"); +const utils = require("./utils"); +async function FastGlob(source, options) { + assertPatternsInput(source); + const works = getWorks(source, async_1.default, options); + const result = await Promise.all(works); + return utils.array.flatten(result); +} +// https://github.com/typescript-eslint/typescript-eslint/issues/60 +// eslint-disable-next-line no-redeclare +(function (FastGlob) { + function sync(source, options) { + assertPatternsInput(source); + const works = getWorks(source, sync_1.default, options); + return utils.array.flatten(works); + } + FastGlob.sync = sync; + function stream(source, options) { + assertPatternsInput(source); + const works = getWorks(source, stream_1.default, options); + /** + * The stream returned by the provider cannot work with an asynchronous iterator. + * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams. + * This affects performance (+25%). I don't see best solution right now. + */ + return utils.stream.merge(works); + } + FastGlob.stream = stream; + function generateTasks(source, options) { + assertPatternsInput(source); + const patterns = patternManager.transform([].concat(source)); + const settings = new settings_1.default(options); + return taskManager.generate(patterns, settings); + } + FastGlob.generateTasks = generateTasks; + function isDynamicPattern(source, options) { + assertPatternsInput(source); + const settings = new settings_1.default(options); + return utils.pattern.isDynamicPattern(source, settings); + } + FastGlob.isDynamicPattern = isDynamicPattern; + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escape(source); + } + FastGlob.escapePath = escapePath; +})(FastGlob || (FastGlob = {})); +function getWorks(source, _Provider, options) { + const patterns = patternManager.transform([].concat(source)); + const settings = new settings_1.default(options); + const tasks = taskManager.generate(patterns, settings); + const provider = new _Provider(settings); + return tasks.map(provider.read, provider); +} +function assertPatternsInput(input) { + const source = [].concat(input); + const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); + if (!isValidSource) { + throw new TypeError('Patterns must be a string (non empty) or an array of strings'); + } +} +module.exports = FastGlob; diff --git a/node_modules/fast-glob/out/managers/patterns.d.ts b/node_modules/fast-glob/out/managers/patterns.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2a7d7aef4439e425f6a75de96bd117869a4d6100 --- /dev/null +++ b/node_modules/fast-glob/out/managers/patterns.d.ts @@ -0,0 +1,6 @@ +export declare function transform(patterns: string[]): string[]; +/** + * This package only works with forward slashes as a path separator. + * Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes. + */ +export declare function removeDuplicateSlashes(pattern: string): string; diff --git a/node_modules/fast-glob/out/managers/patterns.js b/node_modules/fast-glob/out/managers/patterns.js new file mode 100644 index 0000000000000000000000000000000000000000..a2f0593dfc5deffedfe928869a99ca0f7147e623 --- /dev/null +++ b/node_modules/fast-glob/out/managers/patterns.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.removeDuplicateSlashes = exports.transform = void 0; +/** + * Matches a sequence of two or more consecutive slashes, excluding the first two slashes at the beginning of the string. + * The latter is due to the presence of the device path at the beginning of the UNC path. + * @todo rewrite to negative lookbehind with the next major release. + */ +const DOUBLE_SLASH_RE = /(?!^)\/{2,}/g; +function transform(patterns) { + return patterns.map((pattern) => removeDuplicateSlashes(pattern)); +} +exports.transform = transform; +/** + * This package only works with forward slashes as a path separator. + * Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes. + */ +function removeDuplicateSlashes(pattern) { + return pattern.replace(DOUBLE_SLASH_RE, '/'); +} +exports.removeDuplicateSlashes = removeDuplicateSlashes; diff --git a/node_modules/fast-glob/out/managers/tasks.d.ts b/node_modules/fast-glob/out/managers/tasks.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..aa746a8e94d0a0bda22d9fc6ed147fcf717137a2 --- /dev/null +++ b/node_modules/fast-glob/out/managers/tasks.d.ts @@ -0,0 +1,22 @@ +import Settings from '../settings'; +import { Pattern, PatternsGroup } from '../types'; +export declare type Task = { + base: string; + dynamic: boolean; + patterns: Pattern[]; + positive: Pattern[]; + negative: Pattern[]; +}; +export declare function generate(patterns: Pattern[], settings: Settings): Task[]; +/** + * Returns tasks grouped by basic pattern directories. + * + * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately. + * This is necessary because directory traversal starts at the base directory and goes deeper. + */ +export declare function convertPatternsToTasks(positive: Pattern[], negative: Pattern[], dynamic: boolean): Task[]; +export declare function getPositivePatterns(patterns: Pattern[]): Pattern[]; +export declare function getNegativePatternsAsPositive(patterns: Pattern[], ignore: Pattern[]): Pattern[]; +export declare function groupPatternsByBaseDirectory(patterns: Pattern[]): PatternsGroup; +export declare function convertPatternGroupsToTasks(positive: PatternsGroup, negative: Pattern[], dynamic: boolean): Task[]; +export declare function convertPatternGroupToTask(base: string, positive: Pattern[], negative: Pattern[], dynamic: boolean): Task; diff --git a/node_modules/fast-glob/out/managers/tasks.js b/node_modules/fast-glob/out/managers/tasks.js new file mode 100644 index 0000000000000000000000000000000000000000..b69ce871f50be96c141d9ed676fcc956f1cc431d --- /dev/null +++ b/node_modules/fast-glob/out/managers/tasks.js @@ -0,0 +1,80 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; +const utils = require("../utils"); +function generate(patterns, settings) { + const positivePatterns = getPositivePatterns(patterns); + const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); + const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); + const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); + const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false); + const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true); + return staticTasks.concat(dynamicTasks); +} +exports.generate = generate; +/** + * Returns tasks grouped by basic pattern directories. + * + * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately. + * This is necessary because directory traversal starts at the base directory and goes deeper. + */ +function convertPatternsToTasks(positive, negative, dynamic) { + const tasks = []; + const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); + const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); + const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); + const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); + tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); + /* + * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory + * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest. + */ + if ('.' in insideCurrentDirectoryGroup) { + tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic)); + } + else { + tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); + } + return tasks; +} +exports.convertPatternsToTasks = convertPatternsToTasks; +function getPositivePatterns(patterns) { + return utils.pattern.getPositivePatterns(patterns); +} +exports.getPositivePatterns = getPositivePatterns; +function getNegativePatternsAsPositive(patterns, ignore) { + const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); + const positive = negative.map(utils.pattern.convertToPositivePattern); + return positive; +} +exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; +function groupPatternsByBaseDirectory(patterns) { + const group = {}; + return patterns.reduce((collection, pattern) => { + const base = utils.pattern.getBaseDirectory(pattern); + if (base in collection) { + collection[base].push(pattern); + } + else { + collection[base] = [pattern]; + } + return collection; + }, group); +} +exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; +function convertPatternGroupsToTasks(positive, negative, dynamic) { + return Object.keys(positive).map((base) => { + return convertPatternGroupToTask(base, positive[base], negative, dynamic); + }); +} +exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; +function convertPatternGroupToTask(base, positive, negative, dynamic) { + return { + dynamic, + positive, + negative, + base, + patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) + }; +} +exports.convertPatternGroupToTask = convertPatternGroupToTask; diff --git a/node_modules/fast-glob/out/providers/async.d.ts b/node_modules/fast-glob/out/providers/async.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..14665b1a869ac90c5f87f11672f419413f10a61f --- /dev/null +++ b/node_modules/fast-glob/out/providers/async.d.ts @@ -0,0 +1,9 @@ +import { Task } from '../managers/tasks'; +import { Entry, EntryItem, ReaderOptions } from '../types'; +import ReaderAsync from '../readers/async'; +import Provider from './provider'; +export default class ProviderAsync extends Provider> { + protected _reader: ReaderAsync; + read(task: Task): Promise; + api(root: string, task: Task, options: ReaderOptions): Promise; +} diff --git a/node_modules/fast-glob/out/providers/async.js b/node_modules/fast-glob/out/providers/async.js new file mode 100644 index 0000000000000000000000000000000000000000..c8732e050e8d4baf3294cda583e81b57d379b6ac --- /dev/null +++ b/node_modules/fast-glob/out/providers/async.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const async_1 = require("../readers/async"); +const provider_1 = require("./provider"); +class ProviderAsync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new async_1.default(this._settings); + } + async read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = await this.api(root, task, options); + return entries.map((entry) => options.transform(entry)); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } +} +exports.default = ProviderAsync; diff --git a/node_modules/fast-glob/out/providers/filters/deep.d.ts b/node_modules/fast-glob/out/providers/filters/deep.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..22586a901e1608842458259fe19de6b623316911 --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/deep.d.ts @@ -0,0 +1,16 @@ +import { MicromatchOptions, EntryFilterFunction, Pattern } from '../../types'; +import Settings from '../../settings'; +export default class DeepFilter { + private readonly _settings; + private readonly _micromatchOptions; + constructor(_settings: Settings, _micromatchOptions: MicromatchOptions); + getFilter(basePath: string, positive: Pattern[], negative: Pattern[]): EntryFilterFunction; + private _getMatcher; + private _getNegativePatternsRe; + private _filter; + private _isSkippedByDeep; + private _getEntryLevel; + private _isSkippedSymbolicLink; + private _isSkippedByPositivePatterns; + private _isSkippedByNegativePatterns; +} diff --git a/node_modules/fast-glob/out/providers/filters/deep.js b/node_modules/fast-glob/out/providers/filters/deep.js new file mode 100644 index 0000000000000000000000000000000000000000..819c26039f03c95afcc3a87cc37d071b552b6be0 --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/deep.js @@ -0,0 +1,62 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = require("../../utils"); +const partial_1 = require("../matchers/partial"); +class DeepFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + } + getFilter(basePath, positive, negative) { + const matcher = this._getMatcher(positive); + const negativeRe = this._getNegativePatternsRe(negative); + return (entry) => this._filter(basePath, entry, matcher, negativeRe); + } + _getMatcher(patterns) { + return new partial_1.default(patterns, this._settings, this._micromatchOptions); + } + _getNegativePatternsRe(patterns) { + const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); + return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); + } + _filter(basePath, entry, matcher, negativeRe) { + if (this._isSkippedByDeep(basePath, entry.path)) { + return false; + } + if (this._isSkippedSymbolicLink(entry)) { + return false; + } + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._isSkippedByPositivePatterns(filepath, matcher)) { + return false; + } + return this._isSkippedByNegativePatterns(filepath, negativeRe); + } + _isSkippedByDeep(basePath, entryPath) { + /** + * Avoid unnecessary depth calculations when it doesn't matter. + */ + if (this._settings.deep === Infinity) { + return false; + } + return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; + } + _getEntryLevel(basePath, entryPath) { + const entryPathDepth = entryPath.split('/').length; + if (basePath === '') { + return entryPathDepth; + } + const basePathDepth = basePath.split('/').length; + return entryPathDepth - basePathDepth; + } + _isSkippedSymbolicLink(entry) { + return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); + } + _isSkippedByPositivePatterns(entryPath, matcher) { + return !this._settings.baseNameMatch && !matcher.match(entryPath); + } + _isSkippedByNegativePatterns(entryPath, patternsRe) { + return !utils.pattern.matchAny(entryPath, patternsRe); + } +} +exports.default = DeepFilter; diff --git a/node_modules/fast-glob/out/providers/filters/entry.d.ts b/node_modules/fast-glob/out/providers/filters/entry.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2f21c4345a1437cb183cb371e7537ca9e864efa2 --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/entry.d.ts @@ -0,0 +1,16 @@ +import Settings from '../../settings'; +import { EntryFilterFunction, MicromatchOptions, Pattern } from '../../types'; +export default class EntryFilter { + private readonly _settings; + private readonly _micromatchOptions; + readonly index: Map; + constructor(_settings: Settings, _micromatchOptions: MicromatchOptions); + getFilter(positive: Pattern[], negative: Pattern[]): EntryFilterFunction; + private _filter; + private _isDuplicateEntry; + private _createIndexRecord; + private _onlyFileFilter; + private _onlyDirectoryFilter; + private _isSkippedByAbsoluteNegativePatterns; + private _isMatchToPatterns; +} diff --git a/node_modules/fast-glob/out/providers/filters/entry.js b/node_modules/fast-glob/out/providers/filters/entry.js new file mode 100644 index 0000000000000000000000000000000000000000..bf113206278397e355fc66527531d19d6985a13a --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/entry.js @@ -0,0 +1,64 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = require("../../utils"); +class EntryFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this.index = new Map(); + } + getFilter(positive, negative) { + const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); + const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions); + return (entry) => this._filter(entry, positiveRe, negativeRe); + } + _filter(entry, positiveRe, negativeRe) { + if (this._settings.unique && this._isDuplicateEntry(entry)) { + return false; + } + if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { + return false; + } + if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) { + return false; + } + const filepath = this._settings.baseNameMatch ? entry.name : entry.path; + const isDirectory = entry.dirent.isDirectory(); + const isMatched = this._isMatchToPatterns(filepath, positiveRe, isDirectory) && !this._isMatchToPatterns(entry.path, negativeRe, isDirectory); + if (this._settings.unique && isMatched) { + this._createIndexRecord(entry); + } + return isMatched; + } + _isDuplicateEntry(entry) { + return this.index.has(entry.path); + } + _createIndexRecord(entry) { + this.index.set(entry.path, undefined); + } + _onlyFileFilter(entry) { + return this._settings.onlyFiles && !entry.dirent.isFile(); + } + _onlyDirectoryFilter(entry) { + return this._settings.onlyDirectories && !entry.dirent.isDirectory(); + } + _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { + if (!this._settings.absolute) { + return false; + } + const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); + return utils.pattern.matchAny(fullpath, patternsRe); + } + _isMatchToPatterns(entryPath, patternsRe, isDirectory) { + const filepath = utils.path.removeLeadingDotSegment(entryPath); + // Trying to match files and directories by patterns. + const isMatched = utils.pattern.matchAny(filepath, patternsRe); + // A pattern with a trailling slash can be used for directory matching. + // To apply such pattern, we need to add a tralling slash to the path. + if (!isMatched && isDirectory) { + return utils.pattern.matchAny(filepath + '/', patternsRe); + } + return isMatched; + } +} +exports.default = EntryFilter; diff --git a/node_modules/fast-glob/out/providers/filters/error.d.ts b/node_modules/fast-glob/out/providers/filters/error.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1e9d738f7624b7971b0baecf1efc9b3dd171298a --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/error.d.ts @@ -0,0 +1,8 @@ +import Settings from '../../settings'; +import { ErrorFilterFunction } from '../../types'; +export default class ErrorFilter { + private readonly _settings; + constructor(_settings: Settings); + getFilter(): ErrorFilterFunction; + private _isNonFatalError; +} diff --git a/node_modules/fast-glob/out/providers/filters/error.js b/node_modules/fast-glob/out/providers/filters/error.js new file mode 100644 index 0000000000000000000000000000000000000000..f93bdc0c752be93d22dca044719561dad87c9eba --- /dev/null +++ b/node_modules/fast-glob/out/providers/filters/error.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = require("../../utils"); +class ErrorFilter { + constructor(_settings) { + this._settings = _settings; + } + getFilter() { + return (error) => this._isNonFatalError(error); + } + _isNonFatalError(error) { + return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors; + } +} +exports.default = ErrorFilter; diff --git a/node_modules/fast-glob/out/providers/matchers/matcher.d.ts b/node_modules/fast-glob/out/providers/matchers/matcher.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..fde0bd50022387589f253d0ec850cf689b1369e0 --- /dev/null +++ b/node_modules/fast-glob/out/providers/matchers/matcher.d.ts @@ -0,0 +1,33 @@ +import { Pattern, MicromatchOptions, PatternRe } from '../../types'; +import Settings from '../../settings'; +export declare type PatternSegment = StaticPatternSegment | DynamicPatternSegment; +declare type StaticPatternSegment = { + dynamic: false; + pattern: Pattern; +}; +declare type DynamicPatternSegment = { + dynamic: true; + pattern: Pattern; + patternRe: PatternRe; +}; +export declare type PatternSection = PatternSegment[]; +export declare type PatternInfo = { + /** + * Indicates that the pattern has a globstar (more than a single section). + */ + complete: boolean; + pattern: Pattern; + segments: PatternSegment[]; + sections: PatternSection[]; +}; +export default abstract class Matcher { + private readonly _patterns; + private readonly _settings; + private readonly _micromatchOptions; + protected readonly _storage: PatternInfo[]; + constructor(_patterns: Pattern[], _settings: Settings, _micromatchOptions: MicromatchOptions); + private _fillStorage; + private _getPatternSegments; + private _splitSegmentsIntoSections; +} +export {}; diff --git a/node_modules/fast-glob/out/providers/matchers/matcher.js b/node_modules/fast-glob/out/providers/matchers/matcher.js new file mode 100644 index 0000000000000000000000000000000000000000..44b2cc78cafa5ccaf39afc769cf462abf4741e01 --- /dev/null +++ b/node_modules/fast-glob/out/providers/matchers/matcher.js @@ -0,0 +1,50 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = require("../../utils"); +class Matcher { + constructor(_patterns, _settings, _micromatchOptions) { + this._patterns = _patterns; + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this._storage = []; + this._fillStorage(); + } + _fillStorage() { + /** + * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level). + * So, before expand patterns with brace expansion into separated patterns. + */ + const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns); + for (const pattern of patterns) { + const segments = this._getPatternSegments(pattern); + const sections = this._splitSegmentsIntoSections(segments); + this._storage.push({ + complete: sections.length <= 1, + pattern, + segments, + sections + }); + } + } + _getPatternSegments(pattern) { + const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); + return parts.map((part) => { + const dynamic = utils.pattern.isDynamicPattern(part, this._settings); + if (!dynamic) { + return { + dynamic: false, + pattern: part + }; + } + return { + dynamic: true, + pattern: part, + patternRe: utils.pattern.makeRe(part, this._micromatchOptions) + }; + }); + } + _splitSegmentsIntoSections(segments) { + return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); + } +} +exports.default = Matcher; diff --git a/node_modules/fast-glob/out/providers/matchers/partial.d.ts b/node_modules/fast-glob/out/providers/matchers/partial.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a5c93ba0f6d442f28efcb3a69add6cd43f344be5 --- /dev/null +++ b/node_modules/fast-glob/out/providers/matchers/partial.d.ts @@ -0,0 +1,4 @@ +import Matcher from './matcher'; +export default class PartialMatcher extends Matcher { + match(filepath: string): boolean; +} diff --git a/node_modules/fast-glob/out/providers/matchers/partial.js b/node_modules/fast-glob/out/providers/matchers/partial.js new file mode 100644 index 0000000000000000000000000000000000000000..f6a77e0190c1a3d65c55b7cebaa8941bf400c2dd --- /dev/null +++ b/node_modules/fast-glob/out/providers/matchers/partial.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const matcher_1 = require("./matcher"); +class PartialMatcher extends matcher_1.default { + match(filepath) { + const parts = filepath.split('/'); + const levels = parts.length; + const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels); + for (const pattern of patterns) { + const section = pattern.sections[0]; + /** + * In this case, the pattern has a globstar and we must read all directories unconditionally, + * but only if the level has reached the end of the first group. + * + * fixtures/{a,b}/** + * ^ true/false ^ always true + */ + if (!pattern.complete && levels > section.length) { + return true; + } + const match = parts.every((part, index) => { + const segment = pattern.segments[index]; + if (segment.dynamic && segment.patternRe.test(part)) { + return true; + } + if (!segment.dynamic && segment.pattern === part) { + return true; + } + return false; + }); + if (match) { + return true; + } + } + return false; + } +} +exports.default = PartialMatcher; diff --git a/node_modules/fast-glob/out/providers/provider.d.ts b/node_modules/fast-glob/out/providers/provider.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ccafd17604a1368b662ce31a0f2f90e9365d76f6 --- /dev/null +++ b/node_modules/fast-glob/out/providers/provider.d.ts @@ -0,0 +1,19 @@ +import { Task } from '../managers/tasks'; +import Settings from '../settings'; +import { MicromatchOptions, ReaderOptions } from '../types'; +import DeepFilter from './filters/deep'; +import EntryFilter from './filters/entry'; +import ErrorFilter from './filters/error'; +import EntryTransformer from './transformers/entry'; +export default abstract class Provider { + protected readonly _settings: Settings; + readonly errorFilter: ErrorFilter; + readonly entryFilter: EntryFilter; + readonly deepFilter: DeepFilter; + readonly entryTransformer: EntryTransformer; + constructor(_settings: Settings); + abstract read(_task: Task): T; + protected _getRootDirectory(task: Task): string; + protected _getReaderOptions(task: Task): ReaderOptions; + protected _getMicromatchOptions(): MicromatchOptions; +} diff --git a/node_modules/fast-glob/out/providers/provider.js b/node_modules/fast-glob/out/providers/provider.js new file mode 100644 index 0000000000000000000000000000000000000000..5afb389369c07c4e7b5b94ce1257b54a74ee2c2c --- /dev/null +++ b/node_modules/fast-glob/out/providers/provider.js @@ -0,0 +1,48 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const deep_1 = require("./filters/deep"); +const entry_1 = require("./filters/entry"); +const error_1 = require("./filters/error"); +const entry_2 = require("./transformers/entry"); +class Provider { + constructor(_settings) { + this._settings = _settings; + this.errorFilter = new error_1.default(this._settings); + this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); + this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); + this.entryTransformer = new entry_2.default(this._settings); + } + _getRootDirectory(task) { + return path.resolve(this._settings.cwd, task.base); + } + _getReaderOptions(task) { + const basePath = task.base === '.' ? '' : task.base; + return { + basePath, + pathSegmentSeparator: '/', + concurrency: this._settings.concurrency, + deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), + entryFilter: this.entryFilter.getFilter(task.positive, task.negative), + errorFilter: this.errorFilter.getFilter(), + followSymbolicLinks: this._settings.followSymbolicLinks, + fs: this._settings.fs, + stats: this._settings.stats, + throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, + transform: this.entryTransformer.getTransformer() + }; + } + _getMicromatchOptions() { + return { + dot: this._settings.dot, + matchBase: this._settings.baseNameMatch, + nobrace: !this._settings.braceExpansion, + nocase: !this._settings.caseSensitiveMatch, + noext: !this._settings.extglob, + noglobstar: !this._settings.globstar, + posix: true, + strictSlashes: false + }; + } +} +exports.default = Provider; diff --git a/node_modules/fast-glob/out/providers/stream.d.ts b/node_modules/fast-glob/out/providers/stream.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..bfa9201c8a918dd1128b22ec66195aa17d9ebf34 --- /dev/null +++ b/node_modules/fast-glob/out/providers/stream.d.ts @@ -0,0 +1,11 @@ +/// +import { Readable } from 'stream'; +import { Task } from '../managers/tasks'; +import ReaderStream from '../readers/stream'; +import { ReaderOptions } from '../types'; +import Provider from './provider'; +export default class ProviderStream extends Provider { + protected _reader: ReaderStream; + read(task: Task): Readable; + api(root: string, task: Task, options: ReaderOptions): Readable; +} diff --git a/node_modules/fast-glob/out/providers/stream.js b/node_modules/fast-glob/out/providers/stream.js new file mode 100644 index 0000000000000000000000000000000000000000..9e81c21f371e12eb0b34f762fd5b7a16ffc0faa0 --- /dev/null +++ b/node_modules/fast-glob/out/providers/stream.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = require("stream"); +const stream_2 = require("../readers/stream"); +const provider_1 = require("./provider"); +class ProviderStream extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new stream_2.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const source = this.api(root, task, options); + const destination = new stream_1.Readable({ objectMode: true, read: () => { } }); + source + .once('error', (error) => destination.emit('error', error)) + .on('data', (entry) => destination.emit('data', options.transform(entry))) + .once('end', () => destination.emit('end')); + destination + .once('close', () => source.destroy()); + return destination; + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } +} +exports.default = ProviderStream; diff --git a/node_modules/fast-glob/out/providers/sync.d.ts b/node_modules/fast-glob/out/providers/sync.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..5861db4cfc2b5cbe6b5d95a560545af5dc37d100 --- /dev/null +++ b/node_modules/fast-glob/out/providers/sync.d.ts @@ -0,0 +1,9 @@ +import { Task } from '../managers/tasks'; +import ReaderSync from '../readers/sync'; +import { Entry, EntryItem, ReaderOptions } from '../types'; +import Provider from './provider'; +export default class ProviderSync extends Provider { + protected _reader: ReaderSync; + read(task: Task): EntryItem[]; + api(root: string, task: Task, options: ReaderOptions): Entry[]; +} diff --git a/node_modules/fast-glob/out/providers/sync.js b/node_modules/fast-glob/out/providers/sync.js new file mode 100644 index 0000000000000000000000000000000000000000..9ed8f7cd4bd56aab699f19adfaf508860a5ce122 --- /dev/null +++ b/node_modules/fast-glob/out/providers/sync.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const sync_1 = require("../readers/sync"); +const provider_1 = require("./provider"); +class ProviderSync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new sync_1.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = this.api(root, task, options); + return entries.map(options.transform); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } +} +exports.default = ProviderSync; diff --git a/node_modules/fast-glob/out/providers/transformers/entry.d.ts b/node_modules/fast-glob/out/providers/transformers/entry.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1874a380ca0788779dba061ee0672467f4ed0155 --- /dev/null +++ b/node_modules/fast-glob/out/providers/transformers/entry.d.ts @@ -0,0 +1,8 @@ +import Settings from '../../settings'; +import { EntryTransformerFunction } from '../../types'; +export default class EntryTransformer { + private readonly _settings; + constructor(_settings: Settings); + getTransformer(): EntryTransformerFunction; + private _transform; +} diff --git a/node_modules/fast-glob/out/providers/transformers/entry.js b/node_modules/fast-glob/out/providers/transformers/entry.js new file mode 100644 index 0000000000000000000000000000000000000000..3bef80380e5d08f0ef0455b1a41ac9ad3a0f8ac1 --- /dev/null +++ b/node_modules/fast-glob/out/providers/transformers/entry.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = require("../../utils"); +class EntryTransformer { + constructor(_settings) { + this._settings = _settings; + } + getTransformer() { + return (entry) => this._transform(entry); + } + _transform(entry) { + let filepath = entry.path; + if (this._settings.absolute) { + filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); + filepath = utils.path.unixify(filepath); + } + if (this._settings.markDirectories && entry.dirent.isDirectory()) { + filepath += '/'; + } + if (!this._settings.objectMode) { + return filepath; + } + return Object.assign(Object.assign({}, entry), { path: filepath }); + } +} +exports.default = EntryTransformer; diff --git a/node_modules/fast-glob/out/readers/async.d.ts b/node_modules/fast-glob/out/readers/async.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4bfa296fc73acf7023a2bc1df5499d2241d36c1b --- /dev/null +++ b/node_modules/fast-glob/out/readers/async.d.ts @@ -0,0 +1,10 @@ +import * as fsWalk from '@nodelib/fs.walk'; +import { Entry, ReaderOptions, Pattern } from '../types'; +import Reader from './reader'; +import ReaderStream from './stream'; +export default class ReaderAsync extends Reader> { + protected _walkAsync: typeof fsWalk.walk; + protected _readerStream: ReaderStream; + dynamic(root: string, options: ReaderOptions): Promise; + static(patterns: Pattern[], options: ReaderOptions): Promise; +} diff --git a/node_modules/fast-glob/out/readers/async.js b/node_modules/fast-glob/out/readers/async.js new file mode 100644 index 0000000000000000000000000000000000000000..c43e34a24f90040937a61d2e4db0884b17326768 --- /dev/null +++ b/node_modules/fast-glob/out/readers/async.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fsWalk = require("@nodelib/fs.walk"); +const reader_1 = require("./reader"); +const stream_1 = require("./stream"); +class ReaderAsync extends reader_1.default { + constructor() { + super(...arguments); + this._walkAsync = fsWalk.walk; + this._readerStream = new stream_1.default(this._settings); + } + dynamic(root, options) { + return new Promise((resolve, reject) => { + this._walkAsync(root, options, (error, entries) => { + if (error === null) { + resolve(entries); + } + else { + reject(error); + } + }); + }); + } + async static(patterns, options) { + const entries = []; + const stream = this._readerStream.static(patterns, options); + // After #235, replace it with an asynchronous iterator. + return new Promise((resolve, reject) => { + stream.once('error', reject); + stream.on('data', (entry) => entries.push(entry)); + stream.once('end', () => resolve(entries)); + }); + } +} +exports.default = ReaderAsync; diff --git a/node_modules/fast-glob/out/readers/reader.d.ts b/node_modules/fast-glob/out/readers/reader.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..293b58898e25bc5cfa8646f3ce84686b82b7e9f1 --- /dev/null +++ b/node_modules/fast-glob/out/readers/reader.d.ts @@ -0,0 +1,15 @@ +/// +import * as fs from 'fs'; +import * as fsStat from '@nodelib/fs.stat'; +import Settings from '../settings'; +import { Entry, ErrnoException, Pattern, ReaderOptions } from '../types'; +export default abstract class Reader { + protected readonly _settings: Settings; + protected readonly _fsStatSettings: fsStat.Settings; + constructor(_settings: Settings); + abstract dynamic(root: string, options: ReaderOptions): T; + abstract static(patterns: Pattern[], options: ReaderOptions): T; + protected _getFullEntryPath(filepath: string): string; + protected _makeEntry(stats: fs.Stats, pattern: Pattern): Entry; + protected _isFatalError(error: ErrnoException): boolean; +} diff --git a/node_modules/fast-glob/out/readers/reader.js b/node_modules/fast-glob/out/readers/reader.js new file mode 100644 index 0000000000000000000000000000000000000000..9e9469ce74119e5acd908a63b270d0cfaaaa67f6 --- /dev/null +++ b/node_modules/fast-glob/out/readers/reader.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const fsStat = require("@nodelib/fs.stat"); +const utils = require("../utils"); +class Reader { + constructor(_settings) { + this._settings = _settings; + this._fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this._settings.followSymbolicLinks, + fs: this._settings.fs, + throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks + }); + } + _getFullEntryPath(filepath) { + return path.resolve(this._settings.cwd, filepath); + } + _makeEntry(stats, pattern) { + const entry = { + name: pattern, + path: pattern, + dirent: utils.fs.createDirentFromStats(pattern, stats) + }; + if (this._settings.stats) { + entry.stats = stats; + } + return entry; + } + _isFatalError(error) { + return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors; + } +} +exports.default = Reader; diff --git a/node_modules/fast-glob/out/readers/stream.d.ts b/node_modules/fast-glob/out/readers/stream.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b0c7018cba5fc2514213fd5151d21caaa5c09cf7 --- /dev/null +++ b/node_modules/fast-glob/out/readers/stream.d.ts @@ -0,0 +1,14 @@ +/// +import { Readable } from 'stream'; +import * as fsStat from '@nodelib/fs.stat'; +import * as fsWalk from '@nodelib/fs.walk'; +import { Pattern, ReaderOptions } from '../types'; +import Reader from './reader'; +export default class ReaderStream extends Reader { + protected _walkStream: typeof fsWalk.walkStream; + protected _stat: typeof fsStat.stat; + dynamic(root: string, options: ReaderOptions): Readable; + static(patterns: Pattern[], options: ReaderOptions): Readable; + private _getEntry; + private _getStat; +} diff --git a/node_modules/fast-glob/out/readers/stream.js b/node_modules/fast-glob/out/readers/stream.js new file mode 100644 index 0000000000000000000000000000000000000000..33b96f50eaacf95154d8fd28d14336d9993e26cb --- /dev/null +++ b/node_modules/fast-glob/out/readers/stream.js @@ -0,0 +1,55 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = require("stream"); +const fsStat = require("@nodelib/fs.stat"); +const fsWalk = require("@nodelib/fs.walk"); +const reader_1 = require("./reader"); +class ReaderStream extends reader_1.default { + constructor() { + super(...arguments); + this._walkStream = fsWalk.walkStream; + this._stat = fsStat.stat; + } + dynamic(root, options) { + return this._walkStream(root, options); + } + static(patterns, options) { + const filepaths = patterns.map(this._getFullEntryPath, this); + const stream = new stream_1.PassThrough({ objectMode: true }); + stream._write = (index, _enc, done) => { + return this._getEntry(filepaths[index], patterns[index], options) + .then((entry) => { + if (entry !== null && options.entryFilter(entry)) { + stream.push(entry); + } + if (index === filepaths.length - 1) { + stream.end(); + } + done(); + }) + .catch(done); + }; + for (let i = 0; i < filepaths.length; i++) { + stream.write(i); + } + return stream; + } + _getEntry(filepath, pattern, options) { + return this._getStat(filepath) + .then((stats) => this._makeEntry(stats, pattern)) + .catch((error) => { + if (options.errorFilter(error)) { + return null; + } + throw error; + }); + } + _getStat(filepath) { + return new Promise((resolve, reject) => { + this._stat(filepath, this._fsStatSettings, (error, stats) => { + return error === null ? resolve(stats) : reject(error); + }); + }); + } +} +exports.default = ReaderStream; diff --git a/node_modules/fast-glob/out/readers/sync.d.ts b/node_modules/fast-glob/out/readers/sync.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1943ac604cd88a1acd778763cfa05dd408925a79 --- /dev/null +++ b/node_modules/fast-glob/out/readers/sync.d.ts @@ -0,0 +1,12 @@ +import * as fsStat from '@nodelib/fs.stat'; +import * as fsWalk from '@nodelib/fs.walk'; +import { Entry, Pattern, ReaderOptions } from '../types'; +import Reader from './reader'; +export default class ReaderSync extends Reader { + protected _walkSync: typeof fsWalk.walkSync; + protected _statSync: typeof fsStat.statSync; + dynamic(root: string, options: ReaderOptions): Entry[]; + static(patterns: Pattern[], options: ReaderOptions): Entry[]; + private _getEntry; + private _getStat; +} diff --git a/node_modules/fast-glob/out/readers/sync.js b/node_modules/fast-glob/out/readers/sync.js new file mode 100644 index 0000000000000000000000000000000000000000..c4e4a01d85367e2f7c3089fe8bf58ae668c9f3ee --- /dev/null +++ b/node_modules/fast-glob/out/readers/sync.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fsStat = require("@nodelib/fs.stat"); +const fsWalk = require("@nodelib/fs.walk"); +const reader_1 = require("./reader"); +class ReaderSync extends reader_1.default { + constructor() { + super(...arguments); + this._walkSync = fsWalk.walkSync; + this._statSync = fsStat.statSync; + } + dynamic(root, options) { + return this._walkSync(root, options); + } + static(patterns, options) { + const entries = []; + for (const pattern of patterns) { + const filepath = this._getFullEntryPath(pattern); + const entry = this._getEntry(filepath, pattern, options); + if (entry === null || !options.entryFilter(entry)) { + continue; + } + entries.push(entry); + } + return entries; + } + _getEntry(filepath, pattern, options) { + try { + const stats = this._getStat(filepath); + return this._makeEntry(stats, pattern); + } + catch (error) { + if (options.errorFilter(error)) { + return null; + } + throw error; + } + } + _getStat(filepath) { + return this._statSync(filepath, this._fsStatSettings); + } +} +exports.default = ReaderSync; diff --git a/node_modules/fast-glob/out/settings.d.ts b/node_modules/fast-glob/out/settings.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4e97c9b073e0668c9eb9c79156cbe44a9bb4f73e --- /dev/null +++ b/node_modules/fast-glob/out/settings.d.ts @@ -0,0 +1,164 @@ +import { FileSystemAdapter, Pattern } from './types'; +export declare const DEFAULT_FILE_SYSTEM_ADAPTER: FileSystemAdapter; +export declare type Options = { + /** + * Return the absolute path for entries. + * + * @default false + */ + absolute?: boolean; + /** + * If set to `true`, then patterns without slashes will be matched against + * the basename of the path if it contains slashes. + * + * @default false + */ + baseNameMatch?: boolean; + /** + * Enables Bash-like brace expansion. + * + * @default true + */ + braceExpansion?: boolean; + /** + * Enables a case-sensitive mode for matching files. + * + * @default true + */ + caseSensitiveMatch?: boolean; + /** + * Specifies the maximum number of concurrent requests from a reader to read + * directories. + * + * @default os.cpus().length + */ + concurrency?: number; + /** + * The current working directory in which to search. + * + * @default process.cwd() + */ + cwd?: string; + /** + * Specifies the maximum depth of a read directory relative to the start + * directory. + * + * @default Infinity + */ + deep?: number; + /** + * Allow patterns to match entries that begin with a period (`.`). + * + * @default false + */ + dot?: boolean; + /** + * Enables Bash-like `extglob` functionality. + * + * @default true + */ + extglob?: boolean; + /** + * Indicates whether to traverse descendants of symbolic link directories. + * + * @default true + */ + followSymbolicLinks?: boolean; + /** + * Custom implementation of methods for working with the file system. + * + * @default fs.* + */ + fs?: Partial; + /** + * Enables recursively repeats a pattern containing `**`. + * If `false`, `**` behaves exactly like `*`. + * + * @default true + */ + globstar?: boolean; + /** + * An array of glob patterns to exclude matches. + * This is an alternative way to use negative patterns. + * + * @default [] + */ + ignore?: Pattern[]; + /** + * Mark the directory path with the final slash. + * + * @default false + */ + markDirectories?: boolean; + /** + * Returns objects (instead of strings) describing entries. + * + * @default false + */ + objectMode?: boolean; + /** + * Return only directories. + * + * @default false + */ + onlyDirectories?: boolean; + /** + * Return only files. + * + * @default true + */ + onlyFiles?: boolean; + /** + * Enables an object mode (`objectMode`) with an additional `stats` field. + * + * @default false + */ + stats?: boolean; + /** + * By default this package suppress only `ENOENT` errors. + * Set to `true` to suppress any error. + * + * @default false + */ + suppressErrors?: boolean; + /** + * Throw an error when symbolic link is broken if `true` or safely + * return `lstat` call if `false`. + * + * @default false + */ + throwErrorOnBrokenSymbolicLink?: boolean; + /** + * Ensures that the returned entries are unique. + * + * @default true + */ + unique?: boolean; +}; +export default class Settings { + private readonly _options; + readonly absolute: boolean; + readonly baseNameMatch: boolean; + readonly braceExpansion: boolean; + readonly caseSensitiveMatch: boolean; + readonly concurrency: number; + readonly cwd: string; + readonly deep: number; + readonly dot: boolean; + readonly extglob: boolean; + readonly followSymbolicLinks: boolean; + readonly fs: FileSystemAdapter; + readonly globstar: boolean; + readonly ignore: Pattern[]; + readonly markDirectories: boolean; + readonly objectMode: boolean; + readonly onlyDirectories: boolean; + readonly onlyFiles: boolean; + readonly stats: boolean; + readonly suppressErrors: boolean; + readonly throwErrorOnBrokenSymbolicLink: boolean; + readonly unique: boolean; + constructor(_options?: Options); + private _getValue; + private _getFileSystemMethods; +} diff --git a/node_modules/fast-glob/out/settings.js b/node_modules/fast-glob/out/settings.js new file mode 100644 index 0000000000000000000000000000000000000000..f95ac8ff4c27f3dacf47e1dd80d6eae3547dd5c7 --- /dev/null +++ b/node_modules/fast-glob/out/settings.js @@ -0,0 +1,57 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; +const fs = require("fs"); +const os = require("os"); +/** + * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero. + * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107 + */ +const CPU_COUNT = Math.max(os.cpus().length, 1); +exports.DEFAULT_FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + lstatSync: fs.lstatSync, + stat: fs.stat, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync +}; +class Settings { + constructor(_options = {}) { + this._options = _options; + this.absolute = this._getValue(this._options.absolute, false); + this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); + this.braceExpansion = this._getValue(this._options.braceExpansion, true); + this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); + this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); + this.cwd = this._getValue(this._options.cwd, process.cwd()); + this.deep = this._getValue(this._options.deep, Infinity); + this.dot = this._getValue(this._options.dot, false); + this.extglob = this._getValue(this._options.extglob, true); + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); + this.fs = this._getFileSystemMethods(this._options.fs); + this.globstar = this._getValue(this._options.globstar, true); + this.ignore = this._getValue(this._options.ignore, []); + this.markDirectories = this._getValue(this._options.markDirectories, false); + this.objectMode = this._getValue(this._options.objectMode, false); + this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); + this.onlyFiles = this._getValue(this._options.onlyFiles, true); + this.stats = this._getValue(this._options.stats, false); + this.suppressErrors = this._getValue(this._options.suppressErrors, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); + this.unique = this._getValue(this._options.unique, true); + if (this.onlyDirectories) { + this.onlyFiles = false; + } + if (this.stats) { + this.objectMode = true; + } + } + _getValue(option, value) { + return option === undefined ? value : option; + } + _getFileSystemMethods(methods = {}) { + return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); + } +} +exports.default = Settings; diff --git a/node_modules/fast-glob/out/types/index.d.ts b/node_modules/fast-glob/out/types/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e8286893043f43b2b0a61e45e67794f0916a5bd6 --- /dev/null +++ b/node_modules/fast-glob/out/types/index.d.ts @@ -0,0 +1,31 @@ +/// +import * as fsWalk from '@nodelib/fs.walk'; +export declare type ErrnoException = NodeJS.ErrnoException; +export declare type Entry = fsWalk.Entry; +export declare type EntryItem = string | Entry; +export declare type Pattern = string; +export declare type PatternRe = RegExp; +export declare type PatternsGroup = Record; +export declare type ReaderOptions = fsWalk.Options & { + transform(entry: Entry): EntryItem; + deepFilter: DeepFilterFunction; + entryFilter: EntryFilterFunction; + errorFilter: ErrorFilterFunction; + fs: FileSystemAdapter; + stats: boolean; +}; +export declare type ErrorFilterFunction = fsWalk.ErrorFilterFunction; +export declare type EntryFilterFunction = fsWalk.EntryFilterFunction; +export declare type DeepFilterFunction = fsWalk.DeepFilterFunction; +export declare type EntryTransformerFunction = (entry: Entry) => EntryItem; +export declare type MicromatchOptions = { + dot?: boolean; + matchBase?: boolean; + nobrace?: boolean; + nocase?: boolean; + noext?: boolean; + noglobstar?: boolean; + posix?: boolean; + strictSlashes?: boolean; +}; +export declare type FileSystemAdapter = fsWalk.FileSystemAdapter; diff --git a/node_modules/fast-glob/out/types/index.js b/node_modules/fast-glob/out/types/index.js new file mode 100644 index 0000000000000000000000000000000000000000..ce03781e221944df94f81c1abe468aadc42e2599 --- /dev/null +++ b/node_modules/fast-glob/out/types/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/fast-glob/out/utils/array.d.ts b/node_modules/fast-glob/out/utils/array.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7e585bc10616300a4276b84b5158c83325e5ec8c --- /dev/null +++ b/node_modules/fast-glob/out/utils/array.d.ts @@ -0,0 +1,2 @@ +export declare function flatten(items: T[][]): T[]; +export declare function splitWhen(items: T[], predicate: (item: T) => boolean): T[][]; diff --git a/node_modules/fast-glob/out/utils/array.js b/node_modules/fast-glob/out/utils/array.js new file mode 100644 index 0000000000000000000000000000000000000000..f43f114582fe71cedeed5b2cfb78c88fa7f792d9 --- /dev/null +++ b/node_modules/fast-glob/out/utils/array.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.splitWhen = exports.flatten = void 0; +function flatten(items) { + return items.reduce((collection, item) => [].concat(collection, item), []); +} +exports.flatten = flatten; +function splitWhen(items, predicate) { + const result = [[]]; + let groupIndex = 0; + for (const item of items) { + if (predicate(item)) { + groupIndex++; + result[groupIndex] = []; + } + else { + result[groupIndex].push(item); + } + } + return result; +} +exports.splitWhen = splitWhen; diff --git a/node_modules/fast-glob/out/utils/errno.d.ts b/node_modules/fast-glob/out/utils/errno.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0e52c0dc04207985eb0ad803b71c22da24d1bed5 --- /dev/null +++ b/node_modules/fast-glob/out/utils/errno.d.ts @@ -0,0 +1,2 @@ +import { ErrnoException } from '../types'; +export declare function isEnoentCodeError(error: ErrnoException): boolean; diff --git a/node_modules/fast-glob/out/utils/errno.js b/node_modules/fast-glob/out/utils/errno.js new file mode 100644 index 0000000000000000000000000000000000000000..178ace606cb04a6e208cc0197138be74c530cb15 --- /dev/null +++ b/node_modules/fast-glob/out/utils/errno.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEnoentCodeError = void 0; +function isEnoentCodeError(error) { + return error.code === 'ENOENT'; +} +exports.isEnoentCodeError = isEnoentCodeError; diff --git a/node_modules/fast-glob/out/utils/fs.d.ts b/node_modules/fast-glob/out/utils/fs.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..926c5ae929ea5cd4ebc3d01c15fbb9777cac324e --- /dev/null +++ b/node_modules/fast-glob/out/utils/fs.d.ts @@ -0,0 +1,4 @@ +/// +import * as fs from 'fs'; +import { Dirent } from '@nodelib/fs.walk'; +export declare function createDirentFromStats(name: string, stats: fs.Stats): Dirent; diff --git a/node_modules/fast-glob/out/utils/fs.js b/node_modules/fast-glob/out/utils/fs.js new file mode 100644 index 0000000000000000000000000000000000000000..f15b8cf24d0b8334ad286ed738f734b8f6e42aa4 --- /dev/null +++ b/node_modules/fast-glob/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/fast-glob/out/utils/index.d.ts b/node_modules/fast-glob/out/utils/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d3e4f8f7dec2fa52d5c4f5955f8ccea45b0cd0a9 --- /dev/null +++ b/node_modules/fast-glob/out/utils/index.d.ts @@ -0,0 +1,8 @@ +import * as array from './array'; +import * as errno from './errno'; +import * as fs from './fs'; +import * as path from './path'; +import * as pattern from './pattern'; +import * as stream from './stream'; +import * as string from './string'; +export { array, errno, fs, path, pattern, stream, string }; diff --git a/node_modules/fast-glob/out/utils/index.js b/node_modules/fast-glob/out/utils/index.js new file mode 100644 index 0000000000000000000000000000000000000000..8fc6703a3dc20a700f5a612350e4d85a5e655076 --- /dev/null +++ b/node_modules/fast-glob/out/utils/index.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; +const array = require("./array"); +exports.array = array; +const errno = require("./errno"); +exports.errno = errno; +const fs = require("./fs"); +exports.fs = fs; +const path = require("./path"); +exports.path = path; +const pattern = require("./pattern"); +exports.pattern = pattern; +const stream = require("./stream"); +exports.stream = stream; +const string = require("./string"); +exports.string = string; diff --git a/node_modules/fast-glob/out/utils/path.d.ts b/node_modules/fast-glob/out/utils/path.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f90dc54d175957aa3259603ab3c995e36c34037d --- /dev/null +++ b/node_modules/fast-glob/out/utils/path.d.ts @@ -0,0 +1,8 @@ +import { Pattern } from '../types'; +/** + * Designed to work only with simple paths: `dir\\file`. + */ +export declare function unixify(filepath: string): string; +export declare function makeAbsolute(cwd: string, filepath: string): string; +export declare function escape(pattern: Pattern): Pattern; +export declare function removeLeadingDotSegment(entry: string): string; diff --git a/node_modules/fast-glob/out/utils/path.js b/node_modules/fast-glob/out/utils/path.js new file mode 100644 index 0000000000000000000000000000000000000000..966fcc904a8f4a09ff4e1ce8a8d35c3b38bf4a2c --- /dev/null +++ b/node_modules/fast-glob/out/utils/path.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0; +const path = require("path"); +const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\ +const UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g; +/** + * Designed to work only with simple paths: `dir\\file`. + */ +function unixify(filepath) { + return filepath.replace(/\\/g, '/'); +} +exports.unixify = unixify; +function makeAbsolute(cwd, filepath) { + return path.resolve(cwd, filepath); +} +exports.makeAbsolute = makeAbsolute; +function escape(pattern) { + return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\$2'); +} +exports.escape = escape; +function removeLeadingDotSegment(entry) { + // We do not use `startsWith` because this is 10x slower than current implementation for some cases. + // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with + if (entry.charAt(0) === '.') { + const secondCharactery = entry.charAt(1); + if (secondCharactery === '/' || secondCharactery === '\\') { + return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); + } + } + return entry; +} +exports.removeLeadingDotSegment = removeLeadingDotSegment; diff --git a/node_modules/fast-glob/out/utils/pattern.d.ts b/node_modules/fast-glob/out/utils/pattern.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..23b1eedda636070d96b8d28e58db5d20e80be917 --- /dev/null +++ b/node_modules/fast-glob/out/utils/pattern.d.ts @@ -0,0 +1,42 @@ +import { MicromatchOptions, Pattern, PatternRe } from '../types'; +declare type PatternTypeOptions = { + braceExpansion?: boolean; + caseSensitiveMatch?: boolean; + extglob?: boolean; +}; +export declare function isStaticPattern(pattern: Pattern, options?: PatternTypeOptions): boolean; +export declare function isDynamicPattern(pattern: Pattern, options?: PatternTypeOptions): boolean; +export declare function convertToPositivePattern(pattern: Pattern): Pattern; +export declare function convertToNegativePattern(pattern: Pattern): Pattern; +export declare function isNegativePattern(pattern: Pattern): boolean; +export declare function isPositivePattern(pattern: Pattern): boolean; +export declare function getNegativePatterns(patterns: Pattern[]): Pattern[]; +export declare function getPositivePatterns(patterns: Pattern[]): Pattern[]; +/** + * Returns patterns that can be applied inside the current directory. + * + * @example + * // ['./*', '*', 'a/*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) + */ +export declare function getPatternsInsideCurrentDirectory(patterns: Pattern[]): Pattern[]; +/** + * Returns patterns to be expanded relative to (outside) the current directory. + * + * @example + * // ['../*', './../*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) + */ +export declare function getPatternsOutsideCurrentDirectory(patterns: Pattern[]): Pattern[]; +export declare function isPatternRelatedToParentDirectory(pattern: Pattern): boolean; +export declare function getBaseDirectory(pattern: Pattern): string; +export declare function hasGlobStar(pattern: Pattern): boolean; +export declare function endsWithSlashGlobStar(pattern: Pattern): boolean; +export declare function isAffectDepthOfReadingPattern(pattern: Pattern): boolean; +export declare function expandPatternsWithBraceExpansion(patterns: Pattern[]): Pattern[]; +export declare function expandBraceExpansion(pattern: Pattern): Pattern[]; +export declare function getPatternParts(pattern: Pattern, options: MicromatchOptions): Pattern[]; +export declare function makeRe(pattern: Pattern, options: MicromatchOptions): PatternRe; +export declare function convertPatternsToRe(patterns: Pattern[], options: MicromatchOptions): PatternRe[]; +export declare function matchAny(entry: string, patternsRe: PatternRe[]): boolean; +export {}; diff --git a/node_modules/fast-glob/out/utils/pattern.js b/node_modules/fast-glob/out/utils/pattern.js new file mode 100644 index 0000000000000000000000000000000000000000..0eafc75499fbe505dcf833162e8344e346197df7 --- /dev/null +++ b/node_modules/fast-glob/out/utils/pattern.js @@ -0,0 +1,169 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; +const path = require("path"); +const globParent = require("glob-parent"); +const micromatch = require("micromatch"); +const GLOBSTAR = '**'; +const ESCAPE_SYMBOL = '\\'; +const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; +const REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/; +const REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/; +const GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/; +const BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./; +function isStaticPattern(pattern, options = {}) { + return !isDynamicPattern(pattern, options); +} +exports.isStaticPattern = isStaticPattern; +function isDynamicPattern(pattern, options = {}) { + /** + * A special case with an empty string is necessary for matching patterns that start with a forward slash. + * An empty string cannot be a dynamic pattern. + * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'. + */ + if (pattern === '') { + return false; + } + /** + * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check + * filepath directly (without read directory). + */ + if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { + return true; + } + if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.braceExpansion !== false && hasBraceExpansion(pattern)) { + return true; + } + return false; +} +exports.isDynamicPattern = isDynamicPattern; +function hasBraceExpansion(pattern) { + const openingBraceIndex = pattern.indexOf('{'); + if (openingBraceIndex === -1) { + return false; + } + const closingBraceIndex = pattern.indexOf('}', openingBraceIndex + 1); + if (closingBraceIndex === -1) { + return false; + } + const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex); + return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent); +} +function convertToPositivePattern(pattern) { + return isNegativePattern(pattern) ? pattern.slice(1) : pattern; +} +exports.convertToPositivePattern = convertToPositivePattern; +function convertToNegativePattern(pattern) { + return '!' + pattern; +} +exports.convertToNegativePattern = convertToNegativePattern; +function isNegativePattern(pattern) { + return pattern.startsWith('!') && pattern[1] !== '('; +} +exports.isNegativePattern = isNegativePattern; +function isPositivePattern(pattern) { + return !isNegativePattern(pattern); +} +exports.isPositivePattern = isPositivePattern; +function getNegativePatterns(patterns) { + return patterns.filter(isNegativePattern); +} +exports.getNegativePatterns = getNegativePatterns; +function getPositivePatterns(patterns) { + return patterns.filter(isPositivePattern); +} +exports.getPositivePatterns = getPositivePatterns; +/** + * Returns patterns that can be applied inside the current directory. + * + * @example + * // ['./*', '*', 'a/*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) + */ +function getPatternsInsideCurrentDirectory(patterns) { + return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); +} +exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; +/** + * Returns patterns to be expanded relative to (outside) the current directory. + * + * @example + * // ['../*', './../*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) + */ +function getPatternsOutsideCurrentDirectory(patterns) { + return patterns.filter(isPatternRelatedToParentDirectory); +} +exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; +function isPatternRelatedToParentDirectory(pattern) { + return pattern.startsWith('..') || pattern.startsWith('./..'); +} +exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; +function getBaseDirectory(pattern) { + return globParent(pattern, { flipBackslashes: false }); +} +exports.getBaseDirectory = getBaseDirectory; +function hasGlobStar(pattern) { + return pattern.includes(GLOBSTAR); +} +exports.hasGlobStar = hasGlobStar; +function endsWithSlashGlobStar(pattern) { + return pattern.endsWith('/' + GLOBSTAR); +} +exports.endsWithSlashGlobStar = endsWithSlashGlobStar; +function isAffectDepthOfReadingPattern(pattern) { + const basename = path.basename(pattern); + return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); +} +exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; +function expandPatternsWithBraceExpansion(patterns) { + return patterns.reduce((collection, pattern) => { + return collection.concat(expandBraceExpansion(pattern)); + }, []); +} +exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; +function expandBraceExpansion(pattern) { + return micromatch.braces(pattern, { + expand: true, + nodupes: true + }); +} +exports.expandBraceExpansion = expandBraceExpansion; +function getPatternParts(pattern, options) { + let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); + /** + * The scan method returns an empty array in some cases. + * See micromatch/picomatch#58 for more details. + */ + if (parts.length === 0) { + parts = [pattern]; + } + /** + * The scan method does not return an empty part for the pattern with a forward slash. + * This is another part of micromatch/picomatch#58. + */ + if (parts[0].startsWith('/')) { + parts[0] = parts[0].slice(1); + parts.unshift(''); + } + return parts; +} +exports.getPatternParts = getPatternParts; +function makeRe(pattern, options) { + return micromatch.makeRe(pattern, options); +} +exports.makeRe = makeRe; +function convertPatternsToRe(patterns, options) { + return patterns.map((pattern) => makeRe(pattern, options)); +} +exports.convertPatternsToRe = convertPatternsToRe; +function matchAny(entry, patternsRe) { + return patternsRe.some((patternRe) => patternRe.test(entry)); +} +exports.matchAny = matchAny; diff --git a/node_modules/fast-glob/out/utils/stream.d.ts b/node_modules/fast-glob/out/utils/stream.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..167fab0aaf1a2ac6671d3217c44a46fe7e4728c9 --- /dev/null +++ b/node_modules/fast-glob/out/utils/stream.d.ts @@ -0,0 +1,3 @@ +/// +import { Readable } from 'stream'; +export declare function merge(streams: Readable[]): NodeJS.ReadableStream; diff --git a/node_modules/fast-glob/out/utils/stream.js b/node_modules/fast-glob/out/utils/stream.js new file mode 100644 index 0000000000000000000000000000000000000000..f1ab1f5b4d179b03bda17193b6f40327c3888933 --- /dev/null +++ b/node_modules/fast-glob/out/utils/stream.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.merge = void 0; +const merge2 = require("merge2"); +function merge(streams) { + const mergedStream = merge2(streams); + streams.forEach((stream) => { + stream.once('error', (error) => mergedStream.emit('error', error)); + }); + mergedStream.once('close', () => propagateCloseEventToSources(streams)); + mergedStream.once('end', () => propagateCloseEventToSources(streams)); + return mergedStream; +} +exports.merge = merge; +function propagateCloseEventToSources(streams) { + streams.forEach((stream) => stream.emit('close')); +} diff --git a/node_modules/fast-glob/out/utils/string.d.ts b/node_modules/fast-glob/out/utils/string.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d306bc9e4b38e69aec24b6a713541f0a40dad07a --- /dev/null +++ b/node_modules/fast-glob/out/utils/string.d.ts @@ -0,0 +1,2 @@ +export declare function isString(input: unknown): input is string; +export declare function isEmpty(input: string): boolean; diff --git a/node_modules/fast-glob/out/utils/string.js b/node_modules/fast-glob/out/utils/string.js new file mode 100644 index 0000000000000000000000000000000000000000..738c2270095bd112ea34b6d11cfeb56a6e5505d2 --- /dev/null +++ b/node_modules/fast-glob/out/utils/string.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEmpty = exports.isString = void 0; +function isString(input) { + return typeof input === 'string'; +} +exports.isString = isString; +function isEmpty(input) { + return input === ''; +} +exports.isEmpty = isEmpty; diff --git a/node_modules/fast-glob/package.json b/node_modules/fast-glob/package.json new file mode 100644 index 0000000000000000000000000000000000000000..d74e403ab901bb4b528ffaf97ea524be7a40fa06 --- /dev/null +++ b/node_modules/fast-glob/package.json @@ -0,0 +1,94 @@ +{ + "name": "fast-glob", + "version": "3.2.12", + "description": "It's a very fast and efficient glob library for Node.js", + "license": "MIT", + "repository": "mrmlnc/fast-glob", + "author": { + "name": "Denis Malinochkin", + "url": "https://mrmlnc.com" + }, + "engines": { + "node": ">=8.6.0" + }, + "main": "out/index.js", + "typings": "out/index.d.ts", + "files": [ + "out", + "!out/{benchmark,tests}", + "!out/**/*.map", + "!out/**/*.spec.*" + ], + "keywords": [ + "glob", + "patterns", + "fast", + "implementation" + ], + "devDependencies": { + "@nodelib/fs.macchiato": "^1.0.1", + "@types/compute-stdev": "^1.0.0", + "@types/easy-table": "^0.0.32", + "@types/glob": "^7.1.1", + "@types/glob-parent": "^5.1.0", + "@types/is-ci": "^2.0.0", + "@types/merge2": "^1.1.4", + "@types/micromatch": "^4.0.0", + "@types/minimist": "^1.2.0", + "@types/mocha": "^5.2.7", + "@types/node": "^12.7.8", + "@types/rimraf": "^2.0.2", + "@types/sinon": "^7.5.0", + "compute-stdev": "^1.0.0", + "easy-table": "^1.1.1", + "eslint": "^6.5.1", + "eslint-config-mrmlnc": "^1.1.0", + "execa": "^2.0.4", + "fast-glob": "^3.0.4", + "fdir": "^5.1.0", + "glob": "^7.1.4", + "is-ci": "^2.0.0", + "log-update": "^4.0.0", + "minimist": "^1.2.0", + "mocha": "^6.2.1", + "rimraf": "^3.0.0", + "sinon": "^7.5.0", + "tiny-glob": "^0.2.6", + "typescript": "^3.6.3" + }, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "scripts": { + "clean": "rimraf out", + "lint": "eslint \"src/**/*.ts\" --cache", + "compile": "tsc", + "test": "mocha \"out/**/*.spec.js\" -s 0", + "smoke": "mocha \"out/**/*.smoke.js\" -s 0", + "smoke:sync": "mocha \"out/**/*.smoke.js\" -s 0 --grep \"\\(sync\\)\"", + "smoke:async": "mocha \"out/**/*.smoke.js\" -s 0 --grep \"\\(async\\)\"", + "smoke:stream": "mocha \"out/**/*.smoke.js\" -s 0 --grep \"\\(stream\\)\"", + "build": "npm run clean && npm run compile && npm run lint && npm test", + "watch": "npm run clean && npm run compile -- --sourceMap --watch", + "bench": "npm run bench-async && npm run bench-stream && npm run bench-sync", + "bench-async": "npm run bench-async-flatten && npm run bench-async-deep && npm run bench-async-partial-flatten && npm run bench-async-partial-deep", + "bench-stream": "npm run bench-stream-flatten && npm run bench-stream-deep && npm run bench-stream-partial-flatten && npm run bench-stream-partial-deep", + "bench-sync": "npm run bench-sync-flatten && npm run bench-sync-deep && npm run bench-sync-partial-flatten && npm run bench-sync-partial-deep", + "bench-async-flatten": "node ./out/benchmark --mode async --pattern \"*\"", + "bench-async-deep": "node ./out/benchmark --mode async --pattern \"**\"", + "bench-async-partial-flatten": "node ./out/benchmark --mode async --pattern \"{fixtures,out}/{first,second}/*\"", + "bench-async-partial-deep": "node ./out/benchmark --mode async --pattern \"{fixtures,out}/**\"", + "bench-stream-flatten": "node ./out/benchmark --mode stream --pattern \"*\"", + "bench-stream-deep": "node ./out/benchmark --mode stream --pattern \"**\"", + "bench-stream-partial-flatten": "node ./out/benchmark --mode stream --pattern \"{fixtures,out}/{first,second}/*\"", + "bench-stream-partial-deep": "node ./out/benchmark --mode stream --pattern \"{fixtures,out}/**\"", + "bench-sync-flatten": "node ./out/benchmark --mode sync --pattern \"*\"", + "bench-sync-deep": "node ./out/benchmark --mode sync --pattern \"**\"", + "bench-sync-partial-flatten": "node ./out/benchmark --mode sync --pattern \"{fixtures,out}/{first,second}/*\"", + "bench-sync-partial-deep": "node ./out/benchmark --mode sync --pattern \"{fixtures,out}/**\"" + } +} diff --git a/node_modules/fastq/.github/dependabot.yml b/node_modules/fastq/.github/dependabot.yml new file mode 100644 index 0000000000000000000000000000000000000000..7e7cbe1b005feb6f6ee72daa05087393b47cad1a --- /dev/null +++ b/node_modules/fastq/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: +- package-ecosystem: npm + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 + ignore: + - dependency-name: standard + versions: + - 16.0.3 diff --git a/node_modules/fastq/.github/workflows/ci.yml b/node_modules/fastq/.github/workflows/ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..50e66b5e572393b0a88ebdd6880d25e6acb36b47 --- /dev/null +++ b/node_modules/fastq/.github/workflows/ci.yml @@ -0,0 +1,50 @@ +name: ci + +on: [push, pull_request] + +jobs: + legacy: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: ['0.10', '0.12', 4.x, 6.x, 8.x] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Install + run: | + npm install --production && npm install tape + + - name: Run tests + run: | + npm run legacy + + test: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [10.x, 12.x, 13.x, 14.x, 15.x, 16.x] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Install + run: | + npm install + + - name: Run tests + run: | + npm run test diff --git a/node_modules/fastq/LICENSE b/node_modules/fastq/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..27c7bb46236e43d5217e02c1b1af452d860ff1e6 --- /dev/null +++ b/node_modules/fastq/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2015-2020, Matteo Collina + +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/fastq/README.md b/node_modules/fastq/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8a25fef838c282b3073e550ba3242679733968a0 --- /dev/null +++ b/node_modules/fastq/README.md @@ -0,0 +1,309 @@ +# fastq + +![ci][ci-url] +[![npm version][npm-badge]][npm-url] +[![Dependency Status][david-badge]][david-url] + +Fast, in memory work queue. + +Benchmarks (1 million tasks): + +* setImmediate: 812ms +* fastq: 854ms +* async.queue: 1298ms +* neoAsync.queue: 1249ms + +Obtained on node 12.16.1, on a dedicated server. + +If you need zero-overhead series function call, check out +[fastseries](http://npm.im/fastseries). For zero-overhead parallel +function call, check out [fastparallel](http://npm.im/fastparallel). + +[![js-standard-style](https://raw.githubusercontent.com/feross/standard/master/badge.png)](https://github.com/feross/standard) + + * Installation + * Usage + * API + * Licence & copyright + +## Install + +`npm i fastq --save` + +## Usage (callback API) + +```js +'use strict' + +const queue = require('fastq')(worker, 1) + +queue.push(42, function (err, result) { + if (err) { throw err } + console.log('the result is', result) +}) + +function worker (arg, cb) { + cb(null, arg * 2) +} +``` + +## Usage (promise API) + +```js +const queue = require('fastq').promise(worker, 1) + +async function worker (arg) { + return arg * 2 +} + +async function run () { + const result = await queue.push(42) + console.log('the result is', result) +} + +run() +``` + +### Setting "this" + +```js +'use strict' + +const that = { hello: 'world' } +const queue = require('fastq')(that, worker, 1) + +queue.push(42, function (err, result) { + if (err) { throw err } + console.log(this) + console.log('the result is', result) +}) + +function worker (arg, cb) { + console.log(this) + cb(null, arg * 2) +} +``` + +### Using with TypeScript (callback API) + +```ts +'use strict' + +import * as fastq from "fastq"; +import type { queue, done } from "fastq"; + +type Task = { + id: number +} + +const q: queue = fastq(worker, 1) + +q.push({ id: 42}) + +function worker (arg: Task, cb: done) { + console.log(arg.id) + cb(null) +} +``` + +### Using with TypeScript (promise API) + +```ts +'use strict' + +import * as fastq from "fastq"; +import type { queueAsPromised } from "fastq"; + +type Task = { + id: number +} + +const q: queueAsPromised = fastq.promise(asyncWorker, 1) + +q.push({ id: 42}).catch((err) => console.error(err)) + +async function asyncWorker (arg: Task): Promise { + // No need for a try-catch block, fastq handles errors automatically + console.log(arg.id) +} +``` + +## API + +* fastqueue() +* queue#push() +* queue#unshift() +* queue#pause() +* queue#resume() +* queue#idle() +* queue#length() +* queue#getQueue() +* queue#kill() +* queue#killAndDrain() +* queue#error() +* queue#concurrency +* queue#drain +* queue#empty +* queue#saturated +* fastqueue.promise() + +------------------------------------------------------- + +### fastqueue([that], worker, concurrency) + +Creates a new queue. + +Arguments: + +* `that`, optional context of the `worker` function. +* `worker`, worker function, it would be called with `that` as `this`, + if that is specified. +* `concurrency`, number of concurrent tasks that could be executed in + parallel. + +------------------------------------------------------- + +### queue.push(task, done) + +Add a task at the end of the queue. `done(err, result)` will be called +when the task was processed. + +------------------------------------------------------- + +### queue.unshift(task, done) + +Add a task at the beginning of the queue. `done(err, result)` will be called +when the task was processed. + +------------------------------------------------------- + +### queue.pause() + +Pause the processing of tasks. Currently worked tasks are not +stopped. + +------------------------------------------------------- + +### queue.resume() + +Resume the processing of tasks. + +------------------------------------------------------- + +### queue.idle() + +Returns `false` if there are tasks being processed or waiting to be processed. +`true` otherwise. + +------------------------------------------------------- + +### queue.length() + +Returns the number of tasks waiting to be processed (in the queue). + +------------------------------------------------------- + +### queue.getQueue() + +Returns all the tasks be processed (in the queue). Returns empty array when there are no tasks + +------------------------------------------------------- + +### queue.kill() + +Removes all tasks waiting to be processed, and reset `drain` to an empty +function. + +------------------------------------------------------- + +### queue.killAndDrain() + +Same than `kill` but the `drain` function will be called before reset to empty. + +------------------------------------------------------- + +### queue.error(handler) + +Set a global error handler. `handler(err, task)` will be called +each time a task is completed, `err` will be not null if the task has thrown an error. + +------------------------------------------------------- + +### queue.concurrency + +Property that returns the number of concurrent tasks that could be executed in +parallel. It can be altered at runtime. + +------------------------------------------------------- + +### queue.drain + +Function that will be called when the last +item from the queue has been processed by a worker. +It can be altered at runtime. + +------------------------------------------------------- + +### queue.empty + +Function that will be called when the last +item from the queue has been assigned to a worker. +It can be altered at runtime. + +------------------------------------------------------- + +### queue.saturated + +Function that will be called when the queue hits the concurrency +limit. +It can be altered at runtime. + +------------------------------------------------------- + +### fastqueue.promise([that], worker(arg), concurrency) + +Creates a new queue with `Promise` apis. It also offers all the methods +and properties of the object returned by [`fastqueue`](#fastqueue) with the modified +[`push`](#pushPromise) and [`unshift`](#unshiftPromise) methods. + +Node v10+ is required to use the promisified version. + +Arguments: +* `that`, optional context of the `worker` function. +* `worker`, worker function, it would be called with `that` as `this`, + if that is specified. It MUST return a `Promise`. +* `concurrency`, number of concurrent tasks that could be executed in + parallel. + + +#### queue.push(task) => Promise + +Add a task at the end of the queue. The returned `Promise` will be fulfilled (rejected) +when the task is completed successfully (unsuccessfully). + +This promise could be ignored as it will not lead to a `'unhandledRejection'`. + + +#### queue.unshift(task) => Promise + +Add a task at the beginning of the queue. The returned `Promise` will be fulfilled (rejected) +when the task is completed successfully (unsuccessfully). + +This promise could be ignored as it will not lead to a `'unhandledRejection'`. + + +#### queue.drained() => Promise + +Wait for the queue to be drained. The returned `Promise` will be resolved when all tasks in the queue have been processed by a worker. + +This promise could be ignored as it will not lead to a `'unhandledRejection'`. + +## License + +ISC + +[ci-url]: https://github.com/mcollina/fastq/workflows/ci/badge.svg +[npm-badge]: https://badge.fury.io/js/fastq.svg +[npm-url]: https://badge.fury.io/js/fastq +[david-badge]: https://david-dm.org/mcollina/fastq.svg +[david-url]: https://david-dm.org/mcollina/fastq diff --git a/node_modules/fastq/bench.js b/node_modules/fastq/bench.js new file mode 100644 index 0000000000000000000000000000000000000000..4eaa829f329690fa6cfafa0641a34e58b4ebc832 --- /dev/null +++ b/node_modules/fastq/bench.js @@ -0,0 +1,66 @@ +'use strict' + +const max = 1000000 +const fastqueue = require('./')(worker, 1) +const { promisify } = require('util') +const immediate = promisify(setImmediate) +const qPromise = require('./').promise(immediate, 1) +const async = require('async') +const neo = require('neo-async') +const asyncqueue = async.queue(worker, 1) +const neoqueue = neo.queue(worker, 1) + +function bench (func, done) { + const key = max + '*' + func.name + let count = -1 + + console.time(key) + end() + + function end () { + if (++count < max) { + func(end) + } else { + console.timeEnd(key) + if (done) { + done() + } + } + } +} + +function benchFastQ (done) { + fastqueue.push(42, done) +} + +function benchAsyncQueue (done) { + asyncqueue.push(42, done) +} + +function benchNeoQueue (done) { + neoqueue.push(42, done) +} + +function worker (arg, cb) { + setImmediate(cb) +} + +function benchSetImmediate (cb) { + worker(42, cb) +} + +function benchFastQPromise (done) { + qPromise.push(42).then(function () { done() }, done) +} + +function runBench (done) { + async.eachSeries([ + benchSetImmediate, + benchFastQ, + benchNeoQueue, + benchAsyncQueue, + benchFastQPromise + ], bench, done) +} + +runBench(runBench) diff --git a/node_modules/fastq/example.js b/node_modules/fastq/example.js new file mode 100644 index 0000000000000000000000000000000000000000..665fdc8412e53ca788fb996af7b0eb6a70da94fb --- /dev/null +++ b/node_modules/fastq/example.js @@ -0,0 +1,14 @@ +'use strict' + +/* eslint-disable no-var */ + +var queue = require('./')(worker, 1) + +queue.push(42, function (err, result) { + if (err) { throw err } + console.log('the result is', result) +}) + +function worker (arg, cb) { + cb(null, 42 * 2) +} diff --git a/node_modules/fastq/example.mjs b/node_modules/fastq/example.mjs new file mode 100644 index 0000000000000000000000000000000000000000..81be789a083afaec1d139e6d7528f94fe27bc893 --- /dev/null +++ b/node_modules/fastq/example.mjs @@ -0,0 +1,11 @@ +import { promise as queueAsPromised } from './queue.js' + +/* eslint-disable */ + +const queue = queueAsPromised(worker, 1) + +console.log('the result is', await queue.push(42)) + +async function worker (arg) { + return 42 * 2 +} diff --git a/node_modules/fastq/index.d.ts b/node_modules/fastq/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..65ebe6582aad5d85f8fc0adca11486e804b1f9b9 --- /dev/null +++ b/node_modules/fastq/index.d.ts @@ -0,0 +1,37 @@ +declare function fastq(context: C, worker: fastq.worker, concurrency: number): fastq.queue +declare function fastq(worker: fastq.worker, concurrency: number): fastq.queue + +declare namespace fastq { + type worker = (this: C, task: T, cb: fastq.done) => void + type asyncWorker = (this: C, task: T) => Promise + type done = (err: Error | null, result?: R) => void + type errorHandler = (err: Error, task: T) => void + + interface queue { + push(task: T, done?: done): void + unshift(task: T, done?: done): void + pause(): any + resume(): any + idle(): boolean + length(): number + getQueue(): T[] + kill(): any + killAndDrain(): any + error(handler: errorHandler): void + concurrency: number + drain(): any + empty: () => void + saturated: () => void + } + + interface queueAsPromised extends queue { + push(task: T): Promise + unshift(task: T): Promise + drained(): Promise + } + + function promise(context: C, worker: fastq.asyncWorker, concurrency: number): fastq.queueAsPromised + function promise(worker: fastq.asyncWorker, concurrency: number): fastq.queueAsPromised +} + +export = fastq diff --git a/node_modules/fastq/package.json b/node_modules/fastq/package.json new file mode 100644 index 0000000000000000000000000000000000000000..bf572e3179484f61fe5990915dce794f79c278ac --- /dev/null +++ b/node_modules/fastq/package.json @@ -0,0 +1,52 @@ +{ + "name": "fastq", + "version": "1.15.0", + "description": "Fast, in memory work queue", + "main": "queue.js", + "scripts": { + "lint": "standard --verbose | snazzy", + "unit": "nyc --lines 100 --branches 100 --functions 100 --check-coverage --reporter=text tape test/test.js test/promise.js", + "coverage": "nyc --reporter=html --reporter=cobertura --reporter=text tape test/test.js test/promise.js", + "test:report": "npm run lint && npm run unit:report", + "test": "npm run lint && npm run unit && npm run typescript", + "typescript": "tsc --project ./test/tsconfig.json", + "legacy": "tape test/test.js" + }, + "pre-commit": [ + "test" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/mcollina/fastq.git" + }, + "keywords": [ + "fast", + "queue", + "async", + "worker" + ], + "author": "Matteo Collina ", + "license": "ISC", + "bugs": { + "url": "https://github.com/mcollina/fastq/issues" + }, + "homepage": "https://github.com/mcollina/fastq#readme", + "devDependencies": { + "async": "^3.1.0", + "neo-async": "^2.6.1", + "nyc": "^15.0.0", + "pre-commit": "^1.2.2", + "snazzy": "^9.0.0", + "standard": "^16.0.0", + "tape": "^5.0.0", + "typescript": "^4.0.2" + }, + "dependencies": { + "reusify": "^1.0.4" + }, + "standard": { + "ignore": [ + "example.mjs" + ] + } +} diff --git a/node_modules/fastq/queue.js b/node_modules/fastq/queue.js new file mode 100644 index 0000000000000000000000000000000000000000..03fe1127e195cfe7c476213347b613c8b5f10431 --- /dev/null +++ b/node_modules/fastq/queue.js @@ -0,0 +1,289 @@ +'use strict' + +/* eslint-disable no-var */ + +var reusify = require('reusify') + +function fastqueue (context, worker, concurrency) { + if (typeof context === 'function') { + concurrency = worker + worker = context + context = null + } + + if (concurrency < 1) { + throw new Error('fastqueue concurrency must be greater than 1') + } + + var cache = reusify(Task) + var queueHead = null + var queueTail = null + var _running = 0 + var errorHandler = null + + var self = { + push: push, + drain: noop, + saturated: noop, + pause: pause, + paused: false, + concurrency: concurrency, + running: running, + resume: resume, + idle: idle, + length: length, + getQueue: getQueue, + unshift: unshift, + empty: noop, + kill: kill, + killAndDrain: killAndDrain, + error: error + } + + return self + + function running () { + return _running + } + + function pause () { + self.paused = true + } + + function length () { + var current = queueHead + var counter = 0 + + while (current) { + current = current.next + counter++ + } + + return counter + } + + function getQueue () { + var current = queueHead + var tasks = [] + + while (current) { + tasks.push(current.value) + current = current.next + } + + return tasks + } + + function resume () { + if (!self.paused) return + self.paused = false + for (var i = 0; i < self.concurrency; i++) { + _running++ + release() + } + } + + function idle () { + return _running === 0 && self.length() === 0 + } + + function push (value, done) { + var current = cache.get() + + current.context = context + current.release = release + current.value = value + current.callback = done || noop + current.errorHandler = errorHandler + + if (_running === self.concurrency || self.paused) { + if (queueTail) { + queueTail.next = current + queueTail = current + } else { + queueHead = current + queueTail = current + self.saturated() + } + } else { + _running++ + worker.call(context, current.value, current.worked) + } + } + + function unshift (value, done) { + var current = cache.get() + + current.context = context + current.release = release + current.value = value + current.callback = done || noop + + if (_running === self.concurrency || self.paused) { + if (queueHead) { + current.next = queueHead + queueHead = current + } else { + queueHead = current + queueTail = current + self.saturated() + } + } else { + _running++ + worker.call(context, current.value, current.worked) + } + } + + function release (holder) { + if (holder) { + cache.release(holder) + } + var next = queueHead + if (next) { + if (!self.paused) { + if (queueTail === queueHead) { + queueTail = null + } + queueHead = next.next + next.next = null + worker.call(context, next.value, next.worked) + if (queueTail === null) { + self.empty() + } + } else { + _running-- + } + } else if (--_running === 0) { + self.drain() + } + } + + function kill () { + queueHead = null + queueTail = null + self.drain = noop + } + + function killAndDrain () { + queueHead = null + queueTail = null + self.drain() + self.drain = noop + } + + function error (handler) { + errorHandler = handler + } +} + +function noop () {} + +function Task () { + this.value = null + this.callback = noop + this.next = null + this.release = noop + this.context = null + this.errorHandler = null + + var self = this + + this.worked = function worked (err, result) { + var callback = self.callback + var errorHandler = self.errorHandler + var val = self.value + self.value = null + self.callback = noop + if (self.errorHandler) { + errorHandler(err, val) + } + callback.call(self.context, err, result) + self.release(self) + } +} + +function queueAsPromised (context, worker, concurrency) { + if (typeof context === 'function') { + concurrency = worker + worker = context + context = null + } + + function asyncWrapper (arg, cb) { + worker.call(this, arg) + .then(function (res) { + cb(null, res) + }, cb) + } + + var queue = fastqueue(context, asyncWrapper, concurrency) + + var pushCb = queue.push + var unshiftCb = queue.unshift + + queue.push = push + queue.unshift = unshift + queue.drained = drained + + return queue + + function push (value) { + var p = new Promise(function (resolve, reject) { + pushCb(value, function (err, result) { + if (err) { + reject(err) + return + } + resolve(result) + }) + }) + + // Let's fork the promise chain to + // make the error bubble up to the user but + // not lead to a unhandledRejection + p.catch(noop) + + return p + } + + function unshift (value) { + var p = new Promise(function (resolve, reject) { + unshiftCb(value, function (err, result) { + if (err) { + reject(err) + return + } + resolve(result) + }) + }) + + // Let's fork the promise chain to + // make the error bubble up to the user but + // not lead to a unhandledRejection + p.catch(noop) + + return p + } + + function drained () { + if (queue.idle()) { + return new Promise(function (resolve) { + resolve() + }) + } + + var previousDrain = queue.drain + + var p = new Promise(function (resolve) { + queue.drain = function () { + previousDrain() + resolve() + } + }) + + return p + } +} + +module.exports = fastqueue +module.exports.promise = queueAsPromised diff --git a/node_modules/fastq/test/example.ts b/node_modules/fastq/test/example.ts new file mode 100644 index 0000000000000000000000000000000000000000..c454e9d0b6c31d2f4f13a7b9c642a5872f5cd386 --- /dev/null +++ b/node_modules/fastq/test/example.ts @@ -0,0 +1,81 @@ +import * as fastq from '../' +import { promise as queueAsPromised } from '../' + +// Basic example + +const queue = fastq(worker, 1) + +queue.push('world', (err, result) => { + if (err) throw err + console.log('the result is', result) +}) + +queue.push('push without cb') + +queue.concurrency + +queue.drain() + +queue.empty = () => undefined + +console.log('the queue tasks are', queue.getQueue()) + +queue.idle() + +queue.kill() + +queue.killAndDrain() + +queue.length + +queue.pause() + +queue.resume() + +queue.saturated = () => undefined + +queue.unshift('world', (err, result) => { + if (err) throw err + console.log('the result is', result) +}) + +queue.unshift('unshift without cb') + +function worker(task: any, cb: fastq.done) { + cb(null, 'hello ' + task) +} + +// Generics example + +interface GenericsContext { + base: number; +} + +const genericsQueue = fastq({ base: 6 }, genericsWorker, 1) + +genericsQueue.push(7, (err, done) => { + if (err) throw err + console.log('the result is', done) +}) + +genericsQueue.unshift(7, (err, done) => { + if (err) throw err + console.log('the result is', done) +}) + +function genericsWorker(this: GenericsContext, task: number, cb: fastq.done) { + cb(null, 'the meaning of life is ' + (this.base * task)) +} + +const queue2 = queueAsPromised(asyncWorker, 1) + +async function asyncWorker(task: any) { + return 'hello ' + task +} + +async function run () { + await queue.push(42) + await queue.unshift(42) +} + +run() diff --git a/node_modules/fastq/test/promise.js b/node_modules/fastq/test/promise.js new file mode 100644 index 0000000000000000000000000000000000000000..fe014ffef5cd0c7335ae1075d37eecf626f1b596 --- /dev/null +++ b/node_modules/fastq/test/promise.js @@ -0,0 +1,248 @@ +'use strict' + +const test = require('tape') +const buildQueue = require('../').promise +const { promisify } = require('util') +const sleep = promisify(setTimeout) +const immediate = promisify(setImmediate) + +test('concurrency', function (t) { + t.plan(2) + t.throws(buildQueue.bind(null, worker, 0)) + t.doesNotThrow(buildQueue.bind(null, worker, 1)) + + async function worker (arg) { + return true + } +}) + +test('worker execution', async function (t) { + const queue = buildQueue(worker, 1) + + const result = await queue.push(42) + + t.equal(result, true, 'result matches') + + async function worker (arg) { + t.equal(arg, 42) + return true + } +}) + +test('limit', async function (t) { + const queue = buildQueue(worker, 1) + + const [res1, res2] = await Promise.all([queue.push(10), queue.push(0)]) + t.equal(res1, 10, 'the result matches') + t.equal(res2, 0, 'the result matches') + + async function worker (arg) { + await sleep(arg) + return arg + } +}) + +test('multiple executions', async function (t) { + const queue = buildQueue(worker, 1) + const toExec = [1, 2, 3, 4, 5] + const expected = ['a', 'b', 'c', 'd', 'e'] + let count = 0 + + await Promise.all(toExec.map(async function (task, i) { + const result = await queue.push(task) + t.equal(result, expected[i], 'the result matches') + })) + + async function worker (arg) { + t.equal(arg, toExec[count], 'arg matches') + return expected[count++] + } +}) + +test('drained', async function (t) { + const queue = buildQueue(worker, 2) + + const toExec = new Array(10).fill(10) + let count = 0 + + async function worker (arg) { + await sleep(arg) + count++ + } + + toExec.forEach(function (i) { + queue.push(i) + }) + + await queue.drained() + + t.equal(count, toExec.length) + + toExec.forEach(function (i) { + queue.push(i) + }) + + await queue.drained() + + t.equal(count, toExec.length * 2) +}) + +test('drained with exception should not throw', async function (t) { + const queue = buildQueue(worker, 2) + + const toExec = new Array(10).fill(10) + + async function worker () { + throw new Error('foo') + } + + toExec.forEach(function (i) { + queue.push(i) + }) + + await queue.drained() +}) + +test('drained with drain function', async function (t) { + let drainCalled = false + const queue = buildQueue(worker, 2) + + queue.drain = function () { + drainCalled = true + } + + const toExec = new Array(10).fill(10) + let count = 0 + + async function worker (arg) { + await sleep(arg) + count++ + } + + toExec.forEach(function () { + queue.push() + }) + + await queue.drained() + + t.equal(count, toExec.length) + t.equal(drainCalled, true) +}) + +test('drained while idle should resolve', async function (t) { + const queue = buildQueue(worker, 2) + + async function worker (arg) { + await sleep(arg) + } + + await queue.drained() +}) + +test('drained while idle should not call the drain function', async function (t) { + let drainCalled = false + const queue = buildQueue(worker, 2) + + queue.drain = function () { + drainCalled = true + } + + async function worker (arg) { + await sleep(arg) + } + + await queue.drained() + + t.equal(drainCalled, false) +}) + +test('set this', async function (t) { + t.plan(1) + const that = {} + const queue = buildQueue(that, worker, 1) + + await queue.push(42) + + async function worker (arg) { + t.equal(this, that, 'this matches') + } +}) + +test('unshift', async function (t) { + const queue = buildQueue(worker, 1) + const expected = [1, 2, 3, 4] + + await Promise.all([ + queue.push(1), + queue.push(4), + queue.unshift(3), + queue.unshift(2) + ]) + + t.is(expected.length, 0) + + async function worker (arg) { + t.equal(expected.shift(), arg, 'tasks come in order') + } +}) + +test('push with worker throwing error', async function (t) { + t.plan(5) + const q = buildQueue(async function (task, cb) { + throw new Error('test error') + }, 1) + q.error(function (err, task) { + t.ok(err instanceof Error, 'global error handler should catch the error') + t.match(err.message, /test error/, 'error message should be "test error"') + t.equal(task, 42, 'The task executed should be passed') + }) + try { + await q.push(42) + } catch (err) { + t.ok(err instanceof Error, 'push callback should catch the error') + t.match(err.message, /test error/, 'error message should be "test error"') + } +}) + +test('unshift with worker throwing error', async function (t) { + t.plan(2) + const q = buildQueue(async function (task, cb) { + throw new Error('test error') + }, 1) + try { + await q.unshift(42) + } catch (err) { + t.ok(err instanceof Error, 'push callback should catch the error') + t.match(err.message, /test error/, 'error message should be "test error"') + } +}) + +test('no unhandledRejection (push)', async function (t) { + function handleRejection () { + t.fail('unhandledRejection') + } + process.once('unhandledRejection', handleRejection) + const q = buildQueue(async function (task, cb) { + throw new Error('test error') + }, 1) + + q.push(42) + + await immediate() + process.removeListener('unhandledRejection', handleRejection) +}) + +test('no unhandledRejection (unshift)', async function (t) { + function handleRejection () { + t.fail('unhandledRejection') + } + process.once('unhandledRejection', handleRejection) + const q = buildQueue(async function (task, cb) { + throw new Error('test error') + }, 1) + + q.unshift(42) + + await immediate() + process.removeListener('unhandledRejection', handleRejection) +}) diff --git a/node_modules/fastq/test/test.js b/node_modules/fastq/test/test.js new file mode 100644 index 0000000000000000000000000000000000000000..1cc78a564248fae79dd1d125145e09d143bb61cc --- /dev/null +++ b/node_modules/fastq/test/test.js @@ -0,0 +1,566 @@ +'use strict' + +/* eslint-disable no-var */ + +var test = require('tape') +var buildQueue = require('../') + +test('concurrency', function (t) { + t.plan(2) + t.throws(buildQueue.bind(null, worker, 0)) + t.doesNotThrow(buildQueue.bind(null, worker, 1)) + + function worker (arg, cb) { + cb(null, true) + } +}) + +test('worker execution', function (t) { + t.plan(3) + + var queue = buildQueue(worker, 1) + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + }) + + function worker (arg, cb) { + t.equal(arg, 42) + cb(null, true) + } +}) + +test('limit', function (t) { + t.plan(4) + + var expected = [10, 0] + var queue = buildQueue(worker, 1) + + queue.push(10, result) + queue.push(0, result) + + function result (err, arg) { + t.error(err, 'no error') + t.equal(arg, expected.shift(), 'the result matches') + } + + function worker (arg, cb) { + setTimeout(cb, arg, null, arg) + } +}) + +test('multiple executions', function (t) { + t.plan(15) + + var queue = buildQueue(worker, 1) + var toExec = [1, 2, 3, 4, 5] + var count = 0 + + toExec.forEach(function (task) { + queue.push(task, done) + }) + + function done (err, result) { + t.error(err, 'no error') + t.equal(result, toExec[count - 1], 'the result matches') + } + + function worker (arg, cb) { + t.equal(arg, toExec[count], 'arg matches') + count++ + setImmediate(cb, null, arg) + } +}) + +test('multiple executions, one after another', function (t) { + t.plan(15) + + var queue = buildQueue(worker, 1) + var toExec = [1, 2, 3, 4, 5] + var count = 0 + + queue.push(toExec[0], done) + + function done (err, result) { + t.error(err, 'no error') + t.equal(result, toExec[count - 1], 'the result matches') + if (count < toExec.length) { + queue.push(toExec[count], done) + } + } + + function worker (arg, cb) { + t.equal(arg, toExec[count], 'arg matches') + count++ + setImmediate(cb, null, arg) + } +}) + +test('set this', function (t) { + t.plan(3) + + var that = {} + var queue = buildQueue(that, worker, 1) + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(this, that, 'this matches') + }) + + function worker (arg, cb) { + t.equal(this, that, 'this matches') + cb(null, true) + } +}) + +test('drain', function (t) { + t.plan(4) + + var queue = buildQueue(worker, 1) + var worked = false + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + }) + + queue.drain = function () { + t.equal(true, worked, 'drained') + } + + function worker (arg, cb) { + t.equal(arg, 42) + worked = true + setImmediate(cb, null, true) + } +}) + +test('pause && resume', function (t) { + t.plan(7) + + var queue = buildQueue(worker, 1) + var worked = false + + t.notOk(queue.paused, 'it should not be paused') + + queue.pause() + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + }) + + t.notOk(worked, 'it should be paused') + t.ok(queue.paused, 'it should be paused') + + queue.resume() + queue.resume() // second resume is a no-op + + t.notOk(queue.paused, 'it should not be paused') + + function worker (arg, cb) { + t.equal(arg, 42) + worked = true + cb(null, true) + } +}) + +test('pause in flight && resume', function (t) { + t.plan(9) + + var queue = buildQueue(worker, 1) + var expected = [42, 24] + + t.notOk(queue.paused, 'it should not be paused') + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + t.ok(queue.paused, 'it should be paused') + process.nextTick(function () { queue.resume() }) + }) + + queue.push(24, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + t.notOk(queue.paused, 'it should not be paused') + }) + + queue.pause() + + function worker (arg, cb) { + t.equal(arg, expected.shift()) + process.nextTick(function () { cb(null, true) }) + } +}) + +test('altering concurrency', function (t) { + t.plan(7) + + var queue = buildQueue(worker, 1) + var count = 0 + + queue.pause() + + queue.push(24, workDone) + queue.push(24, workDone) + + queue.concurrency = 2 + + queue.resume() + + t.equal(queue.running(), 2, '2 jobs running') + + function workDone (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + } + + function worker (arg, cb) { + t.equal(0, count, 'works in parallel') + setImmediate(function () { + count++ + cb(null, true) + }) + } +}) + +test('idle()', function (t) { + t.plan(12) + + var queue = buildQueue(worker, 1) + + t.ok(queue.idle(), 'queue is idle') + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + t.notOk(queue.idle(), 'queue is not idle') + }) + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + // it will go idle after executing this function + setImmediate(function () { + t.ok(queue.idle(), 'queue is now idle') + }) + }) + + t.notOk(queue.idle(), 'queue is not idle') + + function worker (arg, cb) { + t.notOk(queue.idle(), 'queue is not idle') + t.equal(arg, 42) + setImmediate(cb, null, true) + } +}) + +test('saturated', function (t) { + t.plan(9) + + var queue = buildQueue(worker, 1) + var preworked = 0 + var worked = 0 + + queue.saturated = function () { + t.pass('saturated') + t.equal(preworked, 1, 'started 1 task') + t.equal(worked, 0, 'worked zero task') + } + + queue.push(42, done) + queue.push(42, done) + + function done (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + } + + function worker (arg, cb) { + t.equal(arg, 42) + preworked++ + setImmediate(function () { + worked++ + cb(null, true) + }) + } +}) + +test('length', function (t) { + t.plan(7) + + var queue = buildQueue(worker, 1) + + t.equal(queue.length(), 0, 'nothing waiting') + queue.push(42, done) + t.equal(queue.length(), 0, 'nothing waiting') + queue.push(42, done) + t.equal(queue.length(), 1, 'one task waiting') + queue.push(42, done) + t.equal(queue.length(), 2, 'two tasks waiting') + + function done (err, result) { + t.error(err, 'no error') + } + + function worker (arg, cb) { + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('getQueue', function (t) { + t.plan(10) + + var queue = buildQueue(worker, 1) + + t.equal(queue.getQueue().length, 0, 'nothing waiting') + queue.push(42, done) + t.equal(queue.getQueue().length, 0, 'nothing waiting') + queue.push(42, done) + t.equal(queue.getQueue().length, 1, 'one task waiting') + t.equal(queue.getQueue()[0], 42, 'should be equal') + queue.push(43, done) + t.equal(queue.getQueue().length, 2, 'two tasks waiting') + t.equal(queue.getQueue()[0], 42, 'should be equal') + t.equal(queue.getQueue()[1], 43, 'should be equal') + + function done (err, result) { + t.error(err, 'no error') + } + + function worker (arg, cb) { + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('unshift', function (t) { + t.plan(8) + + var queue = buildQueue(worker, 1) + var expected = [1, 2, 3, 4] + + queue.push(1, done) + queue.push(4, done) + queue.unshift(3, done) + queue.unshift(2, done) + + function done (err, result) { + t.error(err, 'no error') + } + + function worker (arg, cb) { + t.equal(expected.shift(), arg, 'tasks come in order') + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('unshift && empty', function (t) { + t.plan(2) + + var queue = buildQueue(worker, 1) + var completed = false + + queue.pause() + + queue.empty = function () { + t.notOk(completed, 'the task has not completed yet') + } + + queue.unshift(1, done) + + queue.resume() + + function done (err, result) { + completed = true + t.error(err, 'no error') + } + + function worker (arg, cb) { + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('push && empty', function (t) { + t.plan(2) + + var queue = buildQueue(worker, 1) + var completed = false + + queue.pause() + + queue.empty = function () { + t.notOk(completed, 'the task has not completed yet') + } + + queue.push(1, done) + + queue.resume() + + function done (err, result) { + completed = true + t.error(err, 'no error') + } + + function worker (arg, cb) { + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('kill', function (t) { + t.plan(5) + + var queue = buildQueue(worker, 1) + var expected = [1] + + var predrain = queue.drain + + queue.drain = function drain () { + t.fail('drain should never be called') + } + + queue.push(1, done) + queue.push(4, done) + queue.unshift(3, done) + queue.unshift(2, done) + queue.kill() + + function done (err, result) { + t.error(err, 'no error') + setImmediate(function () { + t.equal(queue.length(), 0, 'no queued tasks') + t.equal(queue.running(), 0, 'no running tasks') + t.equal(queue.drain, predrain, 'drain is back to default') + }) + } + + function worker (arg, cb) { + t.equal(expected.shift(), arg, 'tasks come in order') + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('killAndDrain', function (t) { + t.plan(6) + + var queue = buildQueue(worker, 1) + var expected = [1] + + var predrain = queue.drain + + queue.drain = function drain () { + t.pass('drain has been called') + } + + queue.push(1, done) + queue.push(4, done) + queue.unshift(3, done) + queue.unshift(2, done) + queue.killAndDrain() + + function done (err, result) { + t.error(err, 'no error') + setImmediate(function () { + t.equal(queue.length(), 0, 'no queued tasks') + t.equal(queue.running(), 0, 'no running tasks') + t.equal(queue.drain, predrain, 'drain is back to default') + }) + } + + function worker (arg, cb) { + t.equal(expected.shift(), arg, 'tasks come in order') + setImmediate(function () { + cb(null, true) + }) + } +}) + +test('pause && idle', function (t) { + t.plan(11) + + var queue = buildQueue(worker, 1) + var worked = false + + t.notOk(queue.paused, 'it should not be paused') + t.ok(queue.idle(), 'should be idle') + + queue.pause() + + queue.push(42, function (err, result) { + t.error(err, 'no error') + t.equal(result, true, 'result matches') + }) + + t.notOk(worked, 'it should be paused') + t.ok(queue.paused, 'it should be paused') + t.notOk(queue.idle(), 'should not be idle') + + queue.resume() + + t.notOk(queue.paused, 'it should not be paused') + t.notOk(queue.idle(), 'it should not be idle') + + function worker (arg, cb) { + t.equal(arg, 42) + worked = true + process.nextTick(cb.bind(null, null, true)) + process.nextTick(function () { + t.ok(queue.idle(), 'is should be idle') + }) + } +}) + +test('push without cb', function (t) { + t.plan(1) + + var queue = buildQueue(worker, 1) + + queue.push(42) + + function worker (arg, cb) { + t.equal(arg, 42) + cb() + } +}) + +test('unshift without cb', function (t) { + t.plan(1) + + var queue = buildQueue(worker, 1) + + queue.unshift(42) + + function worker (arg, cb) { + t.equal(arg, 42) + cb() + } +}) + +test('push with worker throwing error', function (t) { + t.plan(5) + var q = buildQueue(function (task, cb) { + cb(new Error('test error'), null) + }, 1) + q.error(function (err, task) { + t.ok(err instanceof Error, 'global error handler should catch the error') + t.match(err.message, /test error/, 'error message should be "test error"') + t.equal(task, 42, 'The task executed should be passed') + }) + q.push(42, function (err) { + t.ok(err instanceof Error, 'push callback should catch the error') + t.match(err.message, /test error/, 'error message should be "test error"') + }) +}) diff --git a/node_modules/fastq/test/tsconfig.json b/node_modules/fastq/test/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..66e16e93052a3411133dcc8cc957ba86eb409b8e --- /dev/null +++ b/node_modules/fastq/test/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "noEmit": true, + "strict": true + }, + "files": [ + "./example.ts" + ] +} diff --git a/node_modules/fill-range/LICENSE b/node_modules/fill-range/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..9af4a67d206f24ecdbb5fdff2839041ca0bbd346 --- /dev/null +++ b/node_modules/fill-range/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present, 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/fill-range/README.md b/node_modules/fill-range/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8d756fe9016aec005378ea1b61e599d944ffa4d3 --- /dev/null +++ b/node_modules/fill-range/README.md @@ -0,0 +1,237 @@ +# fill-range [![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/fill-range.svg?style=flat)](https://www.npmjs.com/package/fill-range) [![NPM monthly downloads](https://img.shields.io/npm/dm/fill-range.svg?style=flat)](https://npmjs.org/package/fill-range) [![NPM total downloads](https://img.shields.io/npm/dt/fill-range.svg?style=flat)](https://npmjs.org/package/fill-range) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/fill-range.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/fill-range) + +> Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex` + +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 fill-range +``` + +## Usage + +Expands numbers and letters, optionally using a `step` as the last argument. _(Numbers may be defined as JavaScript numbers or strings)_. + +```js +const fill = require('fill-range'); +// fill(from, to[, step, options]); + +console.log(fill('1', '10')); //=> ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] +console.log(fill('1', '10', { toRegex: true })); //=> [1-9]|10 +``` + +**Params** + +* `from`: **{String|Number}** the number or letter to start with +* `to`: **{String|Number}** the number or letter to end with +* `step`: **{String|Number|Object|Function}** Optionally pass a [step](#optionsstep) to use. +* `options`: **{Object|Function}**: See all available [options](#options) + +## Examples + +By default, an array of values is returned. + +**Alphabetical ranges** + +```js +console.log(fill('a', 'e')); //=> ['a', 'b', 'c', 'd', 'e'] +console.log(fill('A', 'E')); //=> [ 'A', 'B', 'C', 'D', 'E' ] +``` + +**Numerical ranges** + +Numbers can be defined as actual numbers or strings. + +```js +console.log(fill(1, 5)); //=> [ 1, 2, 3, 4, 5 ] +console.log(fill('1', '5')); //=> [ 1, 2, 3, 4, 5 ] +``` + +**Negative ranges** + +Numbers can be defined as actual numbers or strings. + +```js +console.log(fill('-5', '-1')); //=> [ '-5', '-4', '-3', '-2', '-1' ] +console.log(fill('-5', '5')); //=> [ '-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5' ] +``` + +**Steps (increments)** + +```js +// numerical ranges with increments +console.log(fill('0', '25', 4)); //=> [ '0', '4', '8', '12', '16', '20', '24' ] +console.log(fill('0', '25', 5)); //=> [ '0', '5', '10', '15', '20', '25' ] +console.log(fill('0', '25', 6)); //=> [ '0', '6', '12', '18', '24' ] + +// alphabetical ranges with increments +console.log(fill('a', 'z', 4)); //=> [ 'a', 'e', 'i', 'm', 'q', 'u', 'y' ] +console.log(fill('a', 'z', 5)); //=> [ 'a', 'f', 'k', 'p', 'u', 'z' ] +console.log(fill('a', 'z', 6)); //=> [ 'a', 'g', 'm', 's', 'y' ] +``` + +## Options + +### options.step + +**Type**: `number` (formatted as a string or number) + +**Default**: `undefined` + +**Description**: The increment to use for the range. Can be used with letters or numbers. + +**Example(s)** + +```js +// numbers +console.log(fill('1', '10', 2)); //=> [ '1', '3', '5', '7', '9' ] +console.log(fill('1', '10', 3)); //=> [ '1', '4', '7', '10' ] +console.log(fill('1', '10', 4)); //=> [ '1', '5', '9' ] + +// letters +console.log(fill('a', 'z', 5)); //=> [ 'a', 'f', 'k', 'p', 'u', 'z' ] +console.log(fill('a', 'z', 7)); //=> [ 'a', 'h', 'o', 'v' ] +console.log(fill('a', 'z', 9)); //=> [ 'a', 'j', 's' ] +``` + +### options.strictRanges + +**Type**: `boolean` + +**Default**: `false` + +**Description**: By default, `null` is returned when an invalid range is passed. Enable this option to throw a `RangeError` on invalid ranges. + +**Example(s)** + +The following are all invalid: + +```js +fill('1.1', '2'); // decimals not supported in ranges +fill('a', '2'); // incompatible range values +fill(1, 10, 'foo'); // invalid "step" argument +``` + +### options.stringify + +**Type**: `boolean` + +**Default**: `undefined` + +**Description**: Cast all returned values to strings. By default, integers are returned as numbers. + +**Example(s)** + +```js +console.log(fill(1, 5)); //=> [ 1, 2, 3, 4, 5 ] +console.log(fill(1, 5, { stringify: true })); //=> [ '1', '2', '3', '4', '5' ] +``` + +### options.toRegex + +**Type**: `boolean` + +**Default**: `undefined` + +**Description**: Create a regex-compatible source string, instead of expanding values to an array. + +**Example(s)** + +```js +// alphabetical range +console.log(fill('a', 'e', { toRegex: true })); //=> '[a-e]' +// alphabetical with step +console.log(fill('a', 'z', 3, { toRegex: true })); //=> 'a|d|g|j|m|p|s|v|y' +// numerical range +console.log(fill('1', '100', { toRegex: true })); //=> '[1-9]|[1-9][0-9]|100' +// numerical range with zero padding +console.log(fill('000001', '100000', { toRegex: true })); +//=> '0{5}[1-9]|0{4}[1-9][0-9]|0{3}[1-9][0-9]{2}|0{2}[1-9][0-9]{3}|0[1-9][0-9]{4}|100000' +``` + +### options.transform + +**Type**: `function` + +**Default**: `undefined` + +**Description**: Customize each value in the returned array (or [string](#optionstoRegex)). _(you can also pass this function as the last argument to `fill()`)_. + +**Example(s)** + +```js +// add zero padding +console.log(fill(1, 5, value => String(value).padStart(4, '0'))); +//=> ['0001', '0002', '0003', '0004', '0005'] +``` + +## 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** | +| --- | --- | +| 116 | [jonschlinkert](https://github.com/jonschlinkert) | +| 4 | [paulmillr](https://github.com/paulmillr) | +| 2 | [realityking](https://github.com/realityking) | +| 2 | [bluelovers](https://github.com/bluelovers) | +| 1 | [edorivai](https://github.com/edorivai) | +| 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) + +Please consider supporting me on Patreon, or [start your own Patreon page](https://patreon.com/invite/bxpbvm)! + + + + + +### 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/fill-range/index.js b/node_modules/fill-range/index.js new file mode 100644 index 0000000000000000000000000000000000000000..97ce35a5ba8290889185098ae0700b4420f267b5 --- /dev/null +++ b/node_modules/fill-range/index.js @@ -0,0 +1,249 @@ +/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ + +'use strict'; + +const util = require('util'); +const toRegexRange = require('to-regex-range'); + +const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); + +const transform = toNumber => { + return value => toNumber === true ? Number(value) : String(value); +}; + +const isValidValue = value => { + return typeof value === 'number' || (typeof value === 'string' && value !== ''); +}; + +const isNumber = num => Number.isInteger(+num); + +const zeros = input => { + let value = `${input}`; + let index = -1; + if (value[0] === '-') value = value.slice(1); + if (value === '0') return false; + while (value[++index] === '0'); + return index > 0; +}; + +const stringify = (start, end, options) => { + if (typeof start === 'string' || typeof end === 'string') { + return true; + } + return options.stringify === true; +}; + +const pad = (input, maxLength, toNumber) => { + if (maxLength > 0) { + let dash = input[0] === '-' ? '-' : ''; + if (dash) input = input.slice(1); + input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0')); + } + if (toNumber === false) { + return String(input); + } + return input; +}; + +const toMaxLen = (input, maxLength) => { + let negative = input[0] === '-' ? '-' : ''; + if (negative) { + input = input.slice(1); + maxLength--; + } + while (input.length < maxLength) input = '0' + input; + return negative ? ('-' + input) : input; +}; + +const toSequence = (parts, options) => { + parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + + let prefix = options.capture ? '' : '?:'; + let positives = ''; + let negatives = ''; + let result; + + if (parts.positives.length) { + positives = parts.positives.join('|'); + } + + if (parts.negatives.length) { + negatives = `-(${prefix}${parts.negatives.join('|')})`; + } + + if (positives && negatives) { + result = `${positives}|${negatives}`; + } else { + result = positives || negatives; + } + + if (options.wrap) { + return `(${prefix}${result})`; + } + + return result; +}; + +const toRange = (a, b, isNumbers, options) => { + if (isNumbers) { + return toRegexRange(a, b, { wrap: false, ...options }); + } + + let start = String.fromCharCode(a); + if (a === b) return start; + + let stop = String.fromCharCode(b); + return `[${start}-${stop}]`; +}; + +const toRegex = (start, end, options) => { + if (Array.isArray(start)) { + let wrap = options.wrap === true; + let prefix = options.capture ? '' : '?:'; + return wrap ? `(${prefix}${start.join('|')})` : start.join('|'); + } + return toRegexRange(start, end, options); +}; + +const rangeError = (...args) => { + return new RangeError('Invalid range arguments: ' + util.inspect(...args)); +}; + +const invalidRange = (start, end, options) => { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; +}; + +const invalidStep = (step, options) => { + if (options.strictRanges === true) { + throw new TypeError(`Expected step "${step}" to be a number`); + } + return []; +}; + +const fillNumbers = (start, end, step = 1, options = {}) => { + let a = Number(start); + let b = Number(end); + + if (!Number.isInteger(a) || !Number.isInteger(b)) { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; + } + + // fix negative zero + if (a === 0) a = 0; + if (b === 0) b = 0; + + let descending = a > b; + let startString = String(start); + let endString = String(end); + let stepString = String(step); + step = Math.max(Math.abs(step), 1); + + let padded = zeros(startString) || zeros(endString) || zeros(stepString); + let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; + let toNumber = padded === false && stringify(start, end, options) === false; + let format = options.transform || transform(toNumber); + + if (options.toRegex && step === 1) { + return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); + } + + let parts = { negatives: [], positives: [] }; + let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num)); + let range = []; + let index = 0; + + while (descending ? a >= b : a <= b) { + if (options.toRegex === true && step > 1) { + push(a); + } else { + range.push(pad(format(a, index), maxLen, toNumber)); + } + a = descending ? a - step : a + step; + index++; + } + + if (options.toRegex === true) { + return step > 1 + ? toSequence(parts, options) + : toRegex(range, null, { wrap: false, ...options }); + } + + return range; +}; + +const fillLetters = (start, end, step = 1, options = {}) => { + if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) { + return invalidRange(start, end, options); + } + + + let format = options.transform || (val => String.fromCharCode(val)); + let a = `${start}`.charCodeAt(0); + let b = `${end}`.charCodeAt(0); + + let descending = a > b; + let min = Math.min(a, b); + let max = Math.max(a, b); + + if (options.toRegex && step === 1) { + return toRange(min, max, false, options); + } + + let range = []; + let index = 0; + + while (descending ? a >= b : a <= b) { + range.push(format(a, index)); + a = descending ? a - step : a + step; + index++; + } + + if (options.toRegex === true) { + return toRegex(range, null, { wrap: false, options }); + } + + return range; +}; + +const fill = (start, end, step, options = {}) => { + if (end == null && isValidValue(start)) { + return [start]; + } + + if (!isValidValue(start) || !isValidValue(end)) { + return invalidRange(start, end, options); + } + + if (typeof step === 'function') { + return fill(start, end, 1, { transform: step }); + } + + if (isObject(step)) { + return fill(start, end, 0, step); + } + + let opts = { ...options }; + if (opts.capture === true) opts.wrap = true; + step = step || opts.step || 1; + + if (!isNumber(step)) { + if (step != null && !isObject(step)) return invalidStep(step, opts); + return fill(start, end, 1, step); + } + + if (isNumber(start) && isNumber(end)) { + return fillNumbers(start, end, step, opts); + } + + return fillLetters(start, end, Math.max(Math.abs(step), 1), opts); +}; + +module.exports = fill; diff --git a/node_modules/fill-range/package.json b/node_modules/fill-range/package.json new file mode 100644 index 0000000000000000000000000000000000000000..07d30767f502125edad99fe2e468c45858d9d806 --- /dev/null +++ b/node_modules/fill-range/package.json @@ -0,0 +1,69 @@ +{ + "name": "fill-range", + "description": "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`", + "version": "7.0.1", + "homepage": "https://github.com/jonschlinkert/fill-range", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Edo Rivai (edo.rivai.nl)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Paul Miller (paulmillr.com)", + "Rouven Weßling (www.rouvenwessling.de)", + "(https://github.com/wtgtybhertgeghgtwtg)" + ], + "repository": "jonschlinkert/fill-range", + "bugs": { + "url": "https://github.com/jonschlinkert/fill-range/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "mocha" + }, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "devDependencies": { + "gulp-format-md": "^2.0.0", + "mocha": "^6.1.1" + }, + "keywords": [ + "alpha", + "alphabetical", + "array", + "bash", + "brace", + "expand", + "expansion", + "fill", + "glob", + "match", + "matches", + "matching", + "number", + "numerical", + "range", + "ranges", + "regex", + "sh" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + } + } +} diff --git a/node_modules/fs.realpath/LICENSE b/node_modules/fs.realpath/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..5bd884c252ac49343524aa20cc67d1c370c0749a --- /dev/null +++ b/node_modules/fs.realpath/LICENSE @@ -0,0 +1,43 @@ +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. + +---- + +This library bundles a version of the `fs.realpath` and `fs.realpathSync` +methods from Node.js v0.10 under the terms of the Node.js MIT license. + +Node's license follows, also included at the header of `old.js` which contains +the licensed code: + + Copyright Joyent, Inc. and other Node 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/fs.realpath/README.md b/node_modules/fs.realpath/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a42ceac62663ac72a9d39e17e8cbb6f53cf49bff --- /dev/null +++ b/node_modules/fs.realpath/README.md @@ -0,0 +1,33 @@ +# fs.realpath + +A backwards-compatible fs.realpath for Node v6 and above + +In Node v6, the JavaScript implementation of fs.realpath was replaced +with a faster (but less resilient) native implementation. That raises +new and platform-specific errors and cannot handle long or excessively +symlink-looping paths. + +This module handles those cases by detecting the new errors and +falling back to the JavaScript implementation. On versions of Node +prior to v6, it has no effect. + +## USAGE + +```js +var rp = require('fs.realpath') + +// async version +rp.realpath(someLongAndLoopingPath, function (er, real) { + // the ELOOP was handled, but it was a bit slower +}) + +// sync version +var real = rp.realpathSync(someLongAndLoopingPath) + +// monkeypatch at your own risk! +// This replaces the fs.realpath/fs.realpathSync builtins +rp.monkeypatch() + +// un-do the monkeypatching +rp.unmonkeypatch() +``` diff --git a/node_modules/fs.realpath/index.js b/node_modules/fs.realpath/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b09c7c7e6364dad82ad4b5f4e358a06e66ed8bdd --- /dev/null +++ b/node_modules/fs.realpath/index.js @@ -0,0 +1,66 @@ +module.exports = realpath +realpath.realpath = realpath +realpath.sync = realpathSync +realpath.realpathSync = realpathSync +realpath.monkeypatch = monkeypatch +realpath.unmonkeypatch = unmonkeypatch + +var fs = require('fs') +var origRealpath = fs.realpath +var origRealpathSync = fs.realpathSync + +var version = process.version +var ok = /^v[0-5]\./.test(version) +var old = require('./old.js') + +function newError (er) { + return er && er.syscall === 'realpath' && ( + er.code === 'ELOOP' || + er.code === 'ENOMEM' || + er.code === 'ENAMETOOLONG' + ) +} + +function realpath (p, cache, cb) { + if (ok) { + return origRealpath(p, cache, cb) + } + + if (typeof cache === 'function') { + cb = cache + cache = null + } + origRealpath(p, cache, function (er, result) { + if (newError(er)) { + old.realpath(p, cache, cb) + } else { + cb(er, result) + } + }) +} + +function realpathSync (p, cache) { + if (ok) { + return origRealpathSync(p, cache) + } + + try { + return origRealpathSync(p, cache) + } catch (er) { + if (newError(er)) { + return old.realpathSync(p, cache) + } else { + throw er + } + } +} + +function monkeypatch () { + fs.realpath = realpath + fs.realpathSync = realpathSync +} + +function unmonkeypatch () { + fs.realpath = origRealpath + fs.realpathSync = origRealpathSync +} diff --git a/node_modules/fs.realpath/old.js b/node_modules/fs.realpath/old.js new file mode 100644 index 0000000000000000000000000000000000000000..b40305e73fd583364d50dde4daf74f17c19ce1a8 --- /dev/null +++ b/node_modules/fs.realpath/old.js @@ -0,0 +1,303 @@ +// Copyright Joyent, Inc. and other Node 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. + +var pathModule = require('path'); +var isWindows = process.platform === 'win32'; +var fs = require('fs'); + +// JavaScript implementation of realpath, ported from node pre-v6 + +var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); + +function rethrow() { + // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and + // is fairly slow to generate. + var callback; + if (DEBUG) { + var backtrace = new Error; + callback = debugCallback; + } else + callback = missingCallback; + + return callback; + + function debugCallback(err) { + if (err) { + backtrace.message = err.message; + err = backtrace; + missingCallback(err); + } + } + + function missingCallback(err) { + if (err) { + if (process.throwDeprecation) + throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs + else if (!process.noDeprecation) { + var msg = 'fs: missing callback ' + (err.stack || err.message); + if (process.traceDeprecation) + console.trace(msg); + else + console.error(msg); + } + } + } +} + +function maybeCallback(cb) { + return typeof cb === 'function' ? cb : rethrow(); +} + +var normalize = pathModule.normalize; + +// Regexp that finds the next partion of a (partial) path +// result is [base_with_slash, base], e.g. ['somedir/', 'somedir'] +if (isWindows) { + var nextPartRe = /(.*?)(?:[\/\\]+|$)/g; +} else { + var nextPartRe = /(.*?)(?:[\/]+|$)/g; +} + +// Regex to find the device root, including trailing slash. E.g. 'c:\\'. +if (isWindows) { + var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; +} else { + var splitRootRe = /^[\/]*/; +} + +exports.realpathSync = function realpathSync(p, cache) { + // make p is absolute + p = pathModule.resolve(p); + + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return cache[p]; + } + + var original = p, + seenLinks = {}, + knownHard = {}; + + // current character position in p + var pos; + // the partial path so far, including a trailing slash if any + var current; + // the partial path without a trailing slash (except when pointing at a root) + var base; + // the partial path scanned in the previous round, with slash + var previous; + + start(); + + function start() { + // Skip over roots + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ''; + + // On windows, check that the root exists. On unix there is no need. + if (isWindows && !knownHard[base]) { + fs.lstatSync(base); + knownHard[base] = true; + } + } + + // walk down the path, swapping out linked pathparts for their real + // values + // NB: p.length changes. + while (pos < p.length) { + // find the next part + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + + // continue if not a symlink + if (knownHard[base] || (cache && cache[base] === base)) { + continue; + } + + var resolvedLink; + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + // some known symbolic link. no need to stat again. + resolvedLink = cache[base]; + } else { + var stat = fs.lstatSync(base); + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) cache[base] = base; + continue; + } + + // read the link if it wasn't read before + // dev/ino always return 0 on windows, so skip the check. + var linkTarget = null; + if (!isWindows) { + var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + linkTarget = seenLinks[id]; + } + } + if (linkTarget === null) { + fs.statSync(base); + linkTarget = fs.readlinkSync(base); + } + resolvedLink = pathModule.resolve(previous, linkTarget); + // track this, if given a cache. + if (cache) cache[base] = resolvedLink; + if (!isWindows) seenLinks[id] = linkTarget; + } + + // resolve the link, then start over + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } + + if (cache) cache[original] = p; + + return p; +}; + + +exports.realpath = function realpath(p, cache, cb) { + if (typeof cb !== 'function') { + cb = maybeCallback(cache); + cache = null; + } + + // make p is absolute + p = pathModule.resolve(p); + + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return process.nextTick(cb.bind(null, null, cache[p])); + } + + var original = p, + seenLinks = {}, + knownHard = {}; + + // current character position in p + var pos; + // the partial path so far, including a trailing slash if any + var current; + // the partial path without a trailing slash (except when pointing at a root) + var base; + // the partial path scanned in the previous round, with slash + var previous; + + start(); + + function start() { + // Skip over roots + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ''; + + // On windows, check that the root exists. On unix there is no need. + if (isWindows && !knownHard[base]) { + fs.lstat(base, function(err) { + if (err) return cb(err); + knownHard[base] = true; + LOOP(); + }); + } else { + process.nextTick(LOOP); + } + } + + // walk down the path, swapping out linked pathparts for their real + // values + function LOOP() { + // stop if scanned past end of path + if (pos >= p.length) { + if (cache) cache[original] = p; + return cb(null, p); + } + + // find the next part + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + + // continue if not a symlink + if (knownHard[base] || (cache && cache[base] === base)) { + return process.nextTick(LOOP); + } + + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + // known symbolic link. no need to stat again. + return gotResolvedLink(cache[base]); + } + + return fs.lstat(base, gotStat); + } + + function gotStat(err, stat) { + if (err) return cb(err); + + // if not a symlink, skip to the next path part + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) cache[base] = base; + return process.nextTick(LOOP); + } + + // stat & read the link if not read before + // call gotTarget as soon as the link target is known + // dev/ino always return 0 on windows, so skip the check. + if (!isWindows) { + var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + return gotTarget(null, seenLinks[id], base); + } + } + fs.stat(base, function(err) { + if (err) return cb(err); + + fs.readlink(base, function(err, target) { + if (!isWindows) seenLinks[id] = target; + gotTarget(err, target); + }); + }); + } + + function gotTarget(err, target, base) { + if (err) return cb(err); + + var resolvedLink = pathModule.resolve(previous, target); + if (cache) cache[base] = resolvedLink; + gotResolvedLink(resolvedLink); + } + + function gotResolvedLink(resolvedLink) { + // resolve the link, then start over + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } +}; diff --git a/node_modules/fs.realpath/package.json b/node_modules/fs.realpath/package.json new file mode 100644 index 0000000000000000000000000000000000000000..3edc57d21c713754c3f288d0c0b610e42bff2d8b --- /dev/null +++ b/node_modules/fs.realpath/package.json @@ -0,0 +1,26 @@ +{ + "name": "fs.realpath", + "version": "1.0.0", + "description": "Use node's fs.realpath, but fall back to the JS implementation if the native one fails", + "main": "index.js", + "dependencies": {}, + "devDependencies": {}, + "scripts": { + "test": "tap test/*.js --cov" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/isaacs/fs.realpath.git" + }, + "keywords": [ + "realpath", + "fs", + "polyfill" + ], + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC", + "files": [ + "old.js", + "index.js" + ] +} diff --git a/node_modules/fsevents/LICENSE b/node_modules/fsevents/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..5d70441c371fa1e78dc774719f0b5b1d1a183bea --- /dev/null +++ b/node_modules/fsevents/LICENSE @@ -0,0 +1,22 @@ +MIT License +----------- + +Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller + +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/fsevents/README.md b/node_modules/fsevents/README.md new file mode 100644 index 0000000000000000000000000000000000000000..025c9a13e99e1620202d42d01f11e45137cfdada --- /dev/null +++ b/node_modules/fsevents/README.md @@ -0,0 +1,83 @@ +# fsevents [![NPM](https://nodei.co/npm/fsevents.png)](https://nodei.co/npm/fsevents/) + +Native access to MacOS FSEvents in [Node.js](https://nodejs.org/) + +The FSEvents API in MacOS allows applications to register for notifications of +changes to a given directory tree. It is a very fast and lightweight alternative +to kqueue. + +This is a low-level library. For a cross-platform file watching module that +uses fsevents, check out [Chokidar](https://github.com/paulmillr/chokidar). + +## Installation + +Supports only **Node.js v8.16 and higher**. + +```sh +npm install fsevents +``` + +## Usage + +```js +const fsevents = require('fsevents'); +const stop = fsevents.watch(__dirname, (path, flags, id) => { + const info = fsevents.getInfo(path, flags, id); +}); // To start observation +stop(); // To end observation +``` + +The callback passed as the second parameter to `.watch` get's called whenever the operating system detects a +a change in the file system. It takes three arguments: + +###### `fsevents.watch(dirname: string, (path: string, flags: number, id: string) => void): () => Promise` + + * `path: string` - the item in the filesystem that have been changed + * `flags: number` - a numeric value describing what the change was + * `id: string` - an unique-id identifying this specific event + + Returns closer callback which when called returns a Promise resolving when the watcher process has been shut down. + +###### `fsevents.getInfo(path: string, flags: number, id: string): FsEventInfo` + +The `getInfo` function takes the `path`, `flags` and `id` arguments and converts those parameters into a structure +that is easier to digest to determine what the change was. + +The `FsEventsInfo` has the following shape: + +```js +/** + * @typedef {'created'|'modified'|'deleted'|'moved'|'root-changed'|'cloned'|'unknown'} FsEventsEvent + * @typedef {'file'|'directory'|'symlink'} FsEventsType + */ +{ + "event": "created", // {FsEventsEvent} + "path": "file.txt", + "type": "file", // {FsEventsType} + "changes": { + "inode": true, // Had iNode Meta-Information changed + "finder": false, // Had Finder Meta-Data changed + "access": false, // Had access permissions changed + "xattrs": false // Had xAttributes changed + }, + "flags": 0x100000000 +} +``` + +## Changelog + +- v2.3 supports Apple Silicon ARM CPUs +- v2 supports node 8.16+ and reduces package size massively +- v1.2.8 supports node 6+ +- v1.2.7 supports node 4+ + +## Troubleshooting + +- I'm getting `EBADPLATFORM` `Unsupported platform for fsevents` error. +- It's fine, nothing is broken. fsevents is macos-only. Other platforms are skipped. If you want to hide this warning, report a bug to NPM bugtracker asking them to hide ebadplatform warnings by default. + +## License + +The MIT License Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller — see LICENSE file. + +Visit our [GitHub page](https://github.com/fsevents/fsevents) and [NPM Page](https://npmjs.org/package/fsevents) diff --git a/node_modules/fsevents/fsevents.d.ts b/node_modules/fsevents/fsevents.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2723c048a80df296ecc13eff5d96549f572a7383 --- /dev/null +++ b/node_modules/fsevents/fsevents.d.ts @@ -0,0 +1,46 @@ +declare type Event = "created" | "cloned" | "modified" | "deleted" | "moved" | "root-changed" | "unknown"; +declare type Type = "file" | "directory" | "symlink"; +declare type FileChanges = { + inode: boolean; + finder: boolean; + access: boolean; + xattrs: boolean; +}; +declare type Info = { + event: Event; + path: string; + type: Type; + changes: FileChanges; + flags: number; +}; +declare type WatchHandler = (path: string, flags: number, id: string) => void; +export declare function watch(path: string, handler: WatchHandler): () => Promise; +export declare function watch(path: string, since: number, handler: WatchHandler): () => Promise; +export declare function getInfo(path: string, flags: number): Info; +export declare const constants: { + None: 0x00000000; + MustScanSubDirs: 0x00000001; + UserDropped: 0x00000002; + KernelDropped: 0x00000004; + EventIdsWrapped: 0x00000008; + HistoryDone: 0x00000010; + RootChanged: 0x00000020; + Mount: 0x00000040; + Unmount: 0x00000080; + ItemCreated: 0x00000100; + ItemRemoved: 0x00000200; + ItemInodeMetaMod: 0x00000400; + ItemRenamed: 0x00000800; + ItemModified: 0x00001000; + ItemFinderInfoMod: 0x00002000; + ItemChangeOwner: 0x00004000; + ItemXattrMod: 0x00008000; + ItemIsFile: 0x00010000; + ItemIsDir: 0x00020000; + ItemIsSymlink: 0x00040000; + ItemIsHardlink: 0x00100000; + ItemIsLastHardlink: 0x00200000; + OwnEvent: 0x00080000; + ItemCloned: 0x00400000; +}; +export {}; diff --git a/node_modules/fsevents/fsevents.js b/node_modules/fsevents/fsevents.js new file mode 100644 index 0000000000000000000000000000000000000000..f1b31c9530f460f95099159575f7d3732d4701f1 --- /dev/null +++ b/node_modules/fsevents/fsevents.js @@ -0,0 +1,82 @@ +/* + ** © 2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller + ** Licensed under MIT License. + */ + +/* jshint node:true */ +"use strict"; + +if (process.platform !== "darwin") { + throw new Error(`Module 'fsevents' is not compatible with platform '${process.platform}'`); +} + +const Native = require("./fsevents.node"); +const events = Native.constants; + +function watch(path, since, handler) { + if (typeof path !== "string") { + throw new TypeError(`fsevents argument 1 must be a string and not a ${typeof path}`); + } + if ("function" === typeof since && "undefined" === typeof handler) { + handler = since; + since = Native.flags.SinceNow; + } + if (typeof since !== "number") { + throw new TypeError(`fsevents argument 2 must be a number and not a ${typeof since}`); + } + if (typeof handler !== "function") { + throw new TypeError(`fsevents argument 3 must be a function and not a ${typeof handler}`); + } + + let instance = Native.start(Native.global, path, since, handler); + if (!instance) throw new Error(`could not watch: ${path}`); + return () => { + const result = instance ? Promise.resolve(instance).then(Native.stop) : Promise.resolve(undefined); + instance = undefined; + return result; + }; +} + +function getInfo(path, flags) { + return { + path, + flags, + event: getEventType(flags), + type: getFileType(flags), + changes: getFileChanges(flags), + }; +} + +function getFileType(flags) { + if (events.ItemIsFile & flags) return "file"; + if (events.ItemIsDir & flags) return "directory"; + if (events.ItemIsSymlink & flags) return "symlink"; +} +function anyIsTrue(obj) { + for (let key in obj) { + if (obj[key]) return true; + } + return false; +} +function getEventType(flags) { + if (events.ItemRemoved & flags) return "deleted"; + if (events.ItemRenamed & flags) return "moved"; + if (events.ItemCreated & flags) return "created"; + if (events.ItemModified & flags) return "modified"; + if (events.RootChanged & flags) return "root-changed"; + if (events.ItemCloned & flags) return "cloned"; + if (anyIsTrue(flags)) return "modified"; + return "unknown"; +} +function getFileChanges(flags) { + return { + inode: !!(events.ItemInodeMetaMod & flags), + finder: !!(events.ItemFinderInfoMod & flags), + access: !!(events.ItemChangeOwner & flags), + xattrs: !!(events.ItemXattrMod & flags), + }; +} + +exports.watch = watch; +exports.getInfo = getInfo; +exports.constants = events; diff --git a/node_modules/fsevents/fsevents.node b/node_modules/fsevents/fsevents.node new file mode 100755 index 0000000000000000000000000000000000000000..00fac7e88bbc5ed249eaaac87b210a71e2646889 Binary files /dev/null and b/node_modules/fsevents/fsevents.node differ diff --git a/node_modules/fsevents/package.json b/node_modules/fsevents/package.json new file mode 100644 index 0000000000000000000000000000000000000000..af6da84ae62dc775b07321cebb8d6bd9c82e3cc3 --- /dev/null +++ b/node_modules/fsevents/package.json @@ -0,0 +1,62 @@ +{ + "name": "fsevents", + "version": "2.3.2", + "description": "Native Access to MacOS FSEvents", + "main": "fsevents.js", + "types": "fsevents.d.ts", + "os": [ + "darwin" + ], + "files": [ + "fsevents.d.ts", + "fsevents.js", + "fsevents.node" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + }, + "scripts": { + "clean": "node-gyp clean && rm -f fsevents.node", + "build": "node-gyp clean && rm -f fsevents.node && node-gyp rebuild && node-gyp clean", + "test": "/bin/bash ./test.sh 2>/dev/null", + "prepublishOnly": "npm run build" + }, + "repository": { + "type": "git", + "url": "https://github.com/fsevents/fsevents.git" + }, + "keywords": [ + "fsevents", + "mac" + ], + "contributors": [ + { + "name": "Philipp Dunkel", + "email": "pip@pipobscure.com" + }, + { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl" + }, + { + "name": "Elan Shankar", + "email": "elan.shanker@gmail.com" + }, + { + "name": "Miroslav Bajtoš", + "email": "mbajtoss@gmail.com" + }, + { + "name": "Paul Miller", + "url": "https://paulmillr.com" + } + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/fsevents/fsevents/issues" + }, + "homepage": "https://github.com/fsevents/fsevents", + "devDependencies": { + "node-gyp": "^6.1.0" + } +} diff --git a/node_modules/function-bind/.editorconfig b/node_modules/function-bind/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..ac29adef0361c66b058a66a44ec2a0fd0b1a2207 --- /dev/null +++ b/node_modules/function-bind/.editorconfig @@ -0,0 +1,20 @@ +root = true + +[*] +indent_style = tab +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 120 + +[CHANGELOG.md] +indent_style = space +indent_size = 2 + +[*.json] +max_line_length = off + +[Makefile] +max_line_length = off diff --git a/node_modules/function-bind/.eslintrc b/node_modules/function-bind/.eslintrc new file mode 100644 index 0000000000000000000000000000000000000000..9b33d8edffcc8274f9ac165941658494ddff37bc --- /dev/null +++ b/node_modules/function-bind/.eslintrc @@ -0,0 +1,15 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-name-matching": 0, + "indent": [2, 4], + "max-nested-callbacks": [2, 3], + "max-params": [2, 3], + "max-statements": [2, 20], + "no-new-func": [1], + "strict": [0] + } +} diff --git a/node_modules/function-bind/.jscs.json b/node_modules/function-bind/.jscs.json new file mode 100644 index 0000000000000000000000000000000000000000..8c4479480be70db9acb1916853ca76f94a8f815e --- /dev/null +++ b/node_modules/function-bind/.jscs.json @@ -0,0 +1,176 @@ +{ + "es3": true, + + "additionalRules": [], + + "requireSemicolons": true, + + "disallowMultipleSpaces": true, + + "disallowIdentifierNames": [], + + "requireCurlyBraces": { + "allExcept": [], + "keywords": ["if", "else", "for", "while", "do", "try", "catch"] + }, + + "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"], + + "disallowSpaceAfterKeywords": [], + + "disallowSpaceBeforeComma": true, + "disallowSpaceAfterComma": false, + "disallowSpaceBeforeSemicolon": true, + + "disallowNodeTypes": [ + "DebuggerStatement", + "ForInStatement", + "LabeledStatement", + "SwitchCase", + "SwitchStatement", + "WithStatement" + ], + + "requireObjectKeysOnNewLine": { "allExcept": ["sameLine"] }, + + "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true }, + "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, + "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, + + "requireSpaceBetweenArguments": true, + + "disallowSpacesInsideParentheses": true, + + "disallowSpacesInsideArrayBrackets": true, + + "disallowQuotedKeysInObjects": { "allExcept": ["reserved"] }, + + "disallowSpaceAfterObjectKeys": true, + + "requireCommaBeforeLineBreak": true, + + "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], + "requireSpaceAfterPrefixUnaryOperators": [], + + "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], + "requireSpaceBeforePostfixUnaryOperators": [], + + "disallowSpaceBeforeBinaryOperators": [], + "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], + + "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], + "disallowSpaceAfterBinaryOperators": [], + + "disallowImplicitTypeConversion": ["binary", "string"], + + "disallowKeywords": ["with", "eval"], + + "requireKeywordsOnNewLine": [], + "disallowKeywordsOnNewLine": ["else"], + + "requireLineFeedAtFileEnd": true, + + "disallowTrailingWhitespace": true, + + "disallowTrailingComma": true, + + "excludeFiles": ["node_modules/**", "vendor/**"], + + "disallowMultipleLineStrings": true, + + "requireDotNotation": { "allExcept": ["keywords"] }, + + "requireParenthesesAroundIIFE": true, + + "validateLineBreaks": "LF", + + "validateQuoteMarks": { + "escape": true, + "mark": "'" + }, + + "disallowOperatorBeforeLineBreak": [], + + "requireSpaceBeforeKeywords": [ + "do", + "for", + "if", + "else", + "switch", + "case", + "try", + "catch", + "finally", + "while", + "with", + "return" + ], + + "validateAlignedFunctionParameters": { + "lineBreakAfterOpeningBraces": true, + "lineBreakBeforeClosingBraces": true + }, + + "requirePaddingNewLinesBeforeExport": true, + + "validateNewlineAfterArrayElements": { + "maximum": 8 + }, + + "requirePaddingNewLinesAfterUseStrict": true, + + "disallowArrowFunctions": true, + + "disallowMultiLineTernary": true, + + "validateOrderInObjectKeys": "asc-insensitive", + + "disallowIdenticalDestructuringNames": true, + + "disallowNestedTernaries": { "maxLevel": 1 }, + + "requireSpaceAfterComma": { "allExcept": ["trailing"] }, + "requireAlignedMultilineParams": false, + + "requireSpacesInGenerator": { + "afterStar": true + }, + + "disallowSpacesInGenerator": { + "beforeStar": true + }, + + "disallowVar": false, + + "requireArrayDestructuring": false, + + "requireEnhancedObjectLiterals": false, + + "requireObjectDestructuring": false, + + "requireEarlyReturn": false, + + "requireCapitalizedConstructorsNew": { + "allExcept": ["Function", "String", "Object", "Symbol", "Number", "Date", "RegExp", "Error", "Boolean", "Array"] + }, + + "requireImportAlphabetized": false, + + "requireSpaceBeforeObjectValues": true, + "requireSpaceBeforeDestructuredValues": true, + + "disallowSpacesInsideTemplateStringPlaceholders": true, + + "disallowArrayDestructuringReturn": false, + + "requireNewlineBeforeSingleStatementsInIf": false, + + "disallowUnusedVariables": true, + + "requireSpacesInsideImportedObjectBraces": true, + + "requireUseStrict": true +} + diff --git a/node_modules/function-bind/.npmignore b/node_modules/function-bind/.npmignore new file mode 100644 index 0000000000000000000000000000000000000000..dbb555fd1f9f590692745516f9981ee401d4835e --- /dev/null +++ b/node_modules/function-bind/.npmignore @@ -0,0 +1,22 @@ +# gitignore +.DS_Store +.monitor +.*.swp +.nodemonignore +releases +*.log +*.err +fleet.json +public/browserify +bin/*.json +.bin +build +compile +.lock-wscript +coverage +node_modules + +# Only apps should have lockfiles +npm-shrinkwrap.json +package-lock.json +yarn.lock diff --git a/node_modules/function-bind/.travis.yml b/node_modules/function-bind/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..85f70d2464f393cfda4402890f6fe58ceecab341 --- /dev/null +++ b/node_modules/function-bind/.travis.yml @@ -0,0 +1,168 @@ +language: node_js +os: + - linux +node_js: + - "8.4" + - "7.10" + - "6.11" + - "5.12" + - "4.8" + - "iojs-v3.3" + - "iojs-v2.5" + - "iojs-v1.8" + - "0.12" + - "0.10" + - "0.8" +before_install: + - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ]; then npm install -g npm@1.3 ; elif [ "${TRAVIS_NODE_VERSION}" != "0.9" ]; then case "$(npm --version)" in 1.*) npm install -g npm@1.4.28 ;; 2.*) npm install -g npm@2 ;; esac ; fi' + - 'if [ "${TRAVIS_NODE_VERSION}" != "0.6" ] && [ "${TRAVIS_NODE_VERSION}" != "0.9" ]; then if [ "${TRAVIS_NODE_VERSION%${TRAVIS_NODE_VERSION#[0-9]}}" = "0" ] || [ "${TRAVIS_NODE_VERSION:0:4}" = "iojs" ]; then npm install -g npm@4.5 ; else npm install -g npm; fi; fi' +install: + - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ]; then nvm install 0.8 && npm install -g npm@1.3 && npm install -g npm@1.4.28 && npm install -g npm@2 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;' +script: + - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi' + - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi' + - 'if [ -n "${COVERAGE-}" ]; then npm run coverage ; fi' + - 'if [ -n "${TEST-}" ]; then npm run tests-only ; fi' +sudo: false +env: + - TEST=true +matrix: + fast_finish: true + include: + - node_js: "node" + env: PRETEST=true + - node_js: "4" + env: COVERAGE=true + - node_js: "8.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.4" + env: TEST=true ALLOW_FAILURE=true + allow_failures: + - os: osx + - env: TEST=true ALLOW_FAILURE=true diff --git a/node_modules/function-bind/LICENSE b/node_modules/function-bind/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..62d6d237ff179b118746a64a34967f7ff4b5dff8 --- /dev/null +++ b/node_modules/function-bind/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2013 Raynos. + +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/function-bind/README.md b/node_modules/function-bind/README.md new file mode 100644 index 0000000000000000000000000000000000000000..81862a02cb940c85d931749fd507165b1bc54058 --- /dev/null +++ b/node_modules/function-bind/README.md @@ -0,0 +1,48 @@ +# function-bind + + + + + +Implementation of function.prototype.bind + +## Example + +I mainly do this for unit tests I run on phantomjs. +PhantomJS does not have Function.prototype.bind :( + +```js +Function.prototype.bind = require("function-bind") +``` + +## Installation + +`npm install function-bind` + +## Contributors + + - Raynos + +## MIT Licenced + + [travis-svg]: https://travis-ci.org/Raynos/function-bind.svg + [travis-url]: https://travis-ci.org/Raynos/function-bind + [npm-badge-svg]: https://badge.fury.io/js/function-bind.svg + [npm-url]: https://npmjs.org/package/function-bind + [5]: https://coveralls.io/repos/Raynos/function-bind/badge.png + [6]: https://coveralls.io/r/Raynos/function-bind + [7]: https://gemnasium.com/Raynos/function-bind.png + [8]: https://gemnasium.com/Raynos/function-bind + [deps-svg]: https://david-dm.org/Raynos/function-bind.svg + [deps-url]: https://david-dm.org/Raynos/function-bind + [dev-deps-svg]: https://david-dm.org/Raynos/function-bind/dev-status.svg + [dev-deps-url]: https://david-dm.org/Raynos/function-bind#info=devDependencies + [11]: https://ci.testling.com/Raynos/function-bind.png + [12]: https://ci.testling.com/Raynos/function-bind diff --git a/node_modules/function-bind/implementation.js b/node_modules/function-bind/implementation.js new file mode 100644 index 0000000000000000000000000000000000000000..cc4daec1b080a1510320407a854f73235cdabaaa --- /dev/null +++ b/node_modules/function-bind/implementation.js @@ -0,0 +1,52 @@ +'use strict'; + +/* eslint no-invalid-this: 1 */ + +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var slice = Array.prototype.slice; +var toStr = Object.prototype.toString; +var funcType = '[object Function]'; + +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.call(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slice.call(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + args.concat(slice.call(arguments)) + ); + if (Object(result) === result) { + return result; + } + return this; + } else { + return target.apply( + that, + args.concat(slice.call(arguments)) + ); + } + }; + + var boundLength = Math.max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs.push('$' + i); + } + + bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; +}; diff --git a/node_modules/function-bind/index.js b/node_modules/function-bind/index.js new file mode 100644 index 0000000000000000000000000000000000000000..3bb6b9609889f8131b2d6732ff1606e01e1365b2 --- /dev/null +++ b/node_modules/function-bind/index.js @@ -0,0 +1,5 @@ +'use strict'; + +var implementation = require('./implementation'); + +module.exports = Function.prototype.bind || implementation; diff --git a/node_modules/function-bind/package.json b/node_modules/function-bind/package.json new file mode 100644 index 0000000000000000000000000000000000000000..20a1727cbf871182ecc15a0b3ec434d9bf159337 --- /dev/null +++ b/node_modules/function-bind/package.json @@ -0,0 +1,63 @@ +{ + "name": "function-bind", + "version": "1.1.1", + "description": "Implementation of Function.prototype.bind", + "keywords": [ + "function", + "bind", + "shim", + "es5" + ], + "author": "Raynos ", + "repository": "git://github.com/Raynos/function-bind.git", + "main": "index", + "homepage": "https://github.com/Raynos/function-bind", + "contributors": [ + { + "name": "Raynos" + }, + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb" + } + ], + "bugs": { + "url": "https://github.com/Raynos/function-bind/issues", + "email": "raynos2@gmail.com" + }, + "dependencies": {}, + "devDependencies": { + "@ljharb/eslint-config": "^12.2.1", + "covert": "^1.1.0", + "eslint": "^4.5.0", + "jscs": "^3.0.7", + "tape": "^4.8.0" + }, + "license": "MIT", + "scripts": { + "pretest": "npm run lint", + "test": "npm run tests-only", + "posttest": "npm run coverage -- --quiet", + "tests-only": "node test", + "coverage": "covert test/*.js", + "lint": "npm run jscs && npm run eslint", + "jscs": "jscs *.js */*.js", + "eslint": "eslint *.js */*.js" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "ie/8..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..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/function-bind/test/.eslintrc b/node_modules/function-bind/test/.eslintrc new file mode 100644 index 0000000000000000000000000000000000000000..8a56d5b72fb008043cc69939648790ef482cdab8 --- /dev/null +++ b/node_modules/function-bind/test/.eslintrc @@ -0,0 +1,9 @@ +{ + "rules": { + "array-bracket-newline": 0, + "array-element-newline": 0, + "max-statements-per-line": [2, { "max": 2 }], + "no-invalid-this": 0, + "no-magic-numbers": 0, + } +} diff --git a/node_modules/function-bind/test/index.js b/node_modules/function-bind/test/index.js new file mode 100644 index 0000000000000000000000000000000000000000..2edecce2f0fa5adcc88ebc609440221621048c05 --- /dev/null +++ b/node_modules/function-bind/test/index.js @@ -0,0 +1,252 @@ +// jscs:disable requireUseStrict + +var test = require('tape'); + +var functionBind = require('../implementation'); +var getCurrentContext = function () { return this; }; + +test('functionBind is a function', function (t) { + t.equal(typeof functionBind, 'function'); + t.end(); +}); + +test('non-functions', function (t) { + var nonFunctions = [true, false, [], {}, 42, 'foo', NaN, /a/g]; + t.plan(nonFunctions.length); + for (var i = 0; i < nonFunctions.length; ++i) { + try { functionBind.call(nonFunctions[i]); } catch (ex) { + t.ok(ex instanceof TypeError, 'throws when given ' + String(nonFunctions[i])); + } + } + t.end(); +}); + +test('without a context', function (t) { + t.test('binds properly', function (st) { + var args, context; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }) + }; + namespace.func(1, 2, 3); + st.deepEqual(args, [1, 2, 3]); + st.equal(context, getCurrentContext.call()); + st.end(); + }); + + t.test('binds properly, and still supplies bound arguments', function (st) { + var args, context; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, undefined, 1, 2, 3) + }; + namespace.func(4, 5, 6); + st.deepEqual(args, [1, 2, 3, 4, 5, 6]); + st.equal(context, getCurrentContext.call()); + st.end(); + }); + + t.test('returns properly', function (st) { + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, null) + }; + var context = namespace.func(1, 2, 3); + st.equal(context, getCurrentContext.call(), 'returned context is namespaced context'); + st.deepEqual(args, [1, 2, 3], 'passed arguments are correct'); + st.end(); + }); + + t.test('returns properly with bound arguments', function (st) { + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, null, 1, 2, 3) + }; + var context = namespace.func(4, 5, 6); + st.equal(context, getCurrentContext.call(), 'returned context is namespaced context'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'passed arguments are correct'); + st.end(); + }); + + t.test('called as a constructor', function (st) { + var thunkify = function (value) { + return function () { return value; }; + }; + st.test('returns object value', function (sst) { + var expectedReturnValue = [1, 2, 3]; + var Constructor = functionBind.call(thunkify(expectedReturnValue), null); + var result = new Constructor(); + sst.equal(result, expectedReturnValue); + sst.end(); + }); + + st.test('does not return primitive value', function (sst) { + var Constructor = functionBind.call(thunkify(42), null); + var result = new Constructor(); + sst.notEqual(result, 42); + sst.end(); + }); + + st.test('object from bound constructor is instance of original and bound constructor', function (sst) { + var A = function (x) { + this.name = x || 'A'; + }; + var B = functionBind.call(A, null, 'B'); + + var result = new B(); + sst.ok(result instanceof B, 'result is instance of bound constructor'); + sst.ok(result instanceof A, 'result is instance of original constructor'); + sst.end(); + }); + + st.end(); + }); + + t.end(); +}); + +test('with a context', function (t) { + t.test('with no bound arguments', function (st) { + var args, context; + var boundContext = {}; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, boundContext) + }; + namespace.func(1, 2, 3); + st.equal(context, boundContext, 'binds a context properly'); + st.deepEqual(args, [1, 2, 3], 'supplies passed arguments'); + st.end(); + }); + + t.test('with bound arguments', function (st) { + var args, context; + var boundContext = {}; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, boundContext, 1, 2, 3) + }; + namespace.func(4, 5, 6); + st.equal(context, boundContext, 'binds a context properly'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'supplies bound and passed arguments'); + st.end(); + }); + + t.test('returns properly', function (st) { + var boundContext = {}; + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, boundContext) + }; + var context = namespace.func(1, 2, 3); + st.equal(context, boundContext, 'returned context is bound context'); + st.notEqual(context, getCurrentContext.call(), 'returned context is not lexical context'); + st.deepEqual(args, [1, 2, 3], 'passed arguments are correct'); + st.end(); + }); + + t.test('returns properly with bound arguments', function (st) { + var boundContext = {}; + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, boundContext, 1, 2, 3) + }; + var context = namespace.func(4, 5, 6); + st.equal(context, boundContext, 'returned context is bound context'); + st.notEqual(context, getCurrentContext.call(), 'returned context is not lexical context'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'passed arguments are correct'); + st.end(); + }); + + t.test('passes the correct arguments when called as a constructor', function (st) { + var expected = { name: 'Correct' }; + var namespace = { + Func: functionBind.call(function (arg) { + return arg; + }, { name: 'Incorrect' }) + }; + var returned = new namespace.Func(expected); + st.equal(returned, expected, 'returns the right arg when called as a constructor'); + st.end(); + }); + + t.test('has the new instance\'s context when called as a constructor', function (st) { + var actualContext; + var expectedContext = { foo: 'bar' }; + var namespace = { + Func: functionBind.call(function () { + actualContext = this; + }, expectedContext) + }; + var result = new namespace.Func(); + st.equal(result instanceof namespace.Func, true); + st.notEqual(actualContext, expectedContext); + st.end(); + }); + + t.end(); +}); + +test('bound function length', function (t) { + t.test('sets a correct length without thisArg', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }); + st.equal(subject.length, 3); + st.equal(subject(1, 2, 3), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}); + st.equal(subject.length, 3); + st.equal(subject(1, 2, 3), 6); + st.end(); + }); + + t.test('sets a correct length without thisArg and first argument', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, undefined, 1); + st.equal(subject.length, 2); + st.equal(subject(2, 3), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg and first argument', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}, 1); + st.equal(subject.length, 2); + st.equal(subject(2, 3), 6); + st.end(); + }); + + t.test('sets a correct length without thisArg and too many arguments', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, undefined, 1, 2, 3, 4); + st.equal(subject.length, 0); + st.equal(subject(), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg and too many arguments', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}, 1, 2, 3, 4); + st.equal(subject.length, 0); + st.equal(subject(), 6); + st.end(); + }); +}); diff --git a/node_modules/glob-parent/LICENSE b/node_modules/glob-parent/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..d701b08324fac71d4da754bbceee539b402b4623 --- /dev/null +++ b/node_modules/glob-parent/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) 2015, 2019 Elan Shanker, 2021 Blaine Bublitz , Eric Schoffstall and other 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/glob-parent/README.md b/node_modules/glob-parent/README.md new file mode 100644 index 0000000000000000000000000000000000000000..6ae18a1a089e55a3c97e0c719e6ef9c7ffea982e --- /dev/null +++ b/node_modules/glob-parent/README.md @@ -0,0 +1,134 @@ +

+ + + +

+ +# glob-parent + +[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][ci-image]][ci-url] [![Coveralls Status][coveralls-image]][coveralls-url] + +Extract the non-magic parent path from a glob string. + +## Usage + +```js +var globParent = require('glob-parent'); + +globParent('path/to/*.js'); // 'path/to' +globParent('/root/path/to/*.js'); // '/root/path/to' +globParent('/*.js'); // '/' +globParent('*.js'); // '.' +globParent('**/*.js'); // '.' +globParent('path/{to,from}'); // 'path' +globParent('path/!(to|from)'); // 'path' +globParent('path/?(to|from)'); // 'path' +globParent('path/+(to|from)'); // 'path' +globParent('path/*(to|from)'); // 'path' +globParent('path/@(to|from)'); // 'path' +globParent('path/**/*'); // 'path' + +// if provided a non-glob path, returns the nearest dir +globParent('path/foo/bar.js'); // 'path/foo' +globParent('path/foo/'); // 'path/foo' +globParent('path/foo'); // 'path' (see issue #3 for details) +``` + +## API + +### `globParent(maybeGlobString, [options])` + +Takes a string and returns the part of the path before the glob begins. Be aware of Escaping rules and Limitations below. + +#### options + +```js +{ + // Disables the automatic conversion of slashes for Windows + flipBackslashes: true; +} +``` + +## Escaping + +The following characters have special significance in glob patterns and must be escaped if you want them to be treated as regular path characters: + +- `?` (question mark) unless used as a path segment alone +- `*` (asterisk) +- `|` (pipe) +- `(` (opening parenthesis) +- `)` (closing parenthesis) +- `{` (opening curly brace) +- `}` (closing curly brace) +- `[` (opening bracket) +- `]` (closing bracket) + +**Example** + +```js +globParent('foo/[bar]/'); // 'foo' +globParent('foo/\\[bar]/'); // 'foo/[bar]' +``` + +## Limitations + +### Braces & Brackets + +This library attempts a quick and imperfect method of determining which path +parts have glob magic without fully parsing/lexing the pattern. There are some +advanced use cases that can trip it up, such as nested braces where the outer +pair is escaped and the inner one contains a path separator. If you find +yourself in the unlikely circumstance of being affected by this or need to +ensure higher-fidelity glob handling in your library, it is recommended that you +pre-process your input with [expand-braces] and/or [expand-brackets]. + +### Windows + +Backslashes are not valid path separators for globs. If a path with backslashes +is provided anyway, for simple cases, glob-parent will replace the path +separator for you and return the non-glob parent path (now with +forward-slashes, which are still valid as Windows path separators). + +This cannot be used in conjunction with escape characters. + +```js +// BAD +globParent('C:\\Program Files \\(x86\\)\\*.ext'); // 'C:/Program Files /(x86/)' + +// GOOD +globParent('C:/Program Files\\(x86\\)/*.ext'); // 'C:/Program Files (x86)' +``` + +If you are using escape characters for a pattern without path parts (i.e. +relative to `cwd`), prefix with `./` to avoid confusing glob-parent. + +```js +// BAD +globParent('foo \\[bar]'); // 'foo ' +globParent('foo \\[bar]*'); // 'foo ' + +// GOOD +globParent('./foo \\[bar]'); // 'foo [bar]' +globParent('./foo \\[bar]*'); // '.' +``` + +## License + +ISC + + +[downloads-image]: https://img.shields.io/npm/dm/glob-parent.svg?style=flat-square +[npm-url]: https://www.npmjs.com/package/glob-parent +[npm-image]: https://img.shields.io/npm/v/glob-parent.svg?style=flat-square + +[ci-url]: https://github.com/gulpjs/glob-parent/actions?query=workflow:dev +[ci-image]: https://img.shields.io/github/workflow/status/gulpjs/glob-parent/dev?style=flat-square + +[coveralls-url]: https://coveralls.io/r/gulpjs/glob-parent +[coveralls-image]: https://img.shields.io/coveralls/gulpjs/glob-parent/master.svg?style=flat-square + + + +[expand-braces]: https://github.com/jonschlinkert/expand-braces +[expand-brackets]: https://github.com/jonschlinkert/expand-brackets + diff --git a/node_modules/glob-parent/index.js b/node_modules/glob-parent/index.js new file mode 100644 index 0000000000000000000000000000000000000000..09dde64ba7c12cbfa38474af10db668d6bfd5a70 --- /dev/null +++ b/node_modules/glob-parent/index.js @@ -0,0 +1,75 @@ +'use strict'; + +var isGlob = require('is-glob'); +var pathPosixDirname = require('path').posix.dirname; +var isWin32 = require('os').platform() === 'win32'; + +var slash = '/'; +var backslash = /\\/g; +var escaped = /\\([!*?|[\](){}])/g; + +/** + * @param {string} str + * @param {Object} opts + * @param {boolean} [opts.flipBackslashes=true] + */ +module.exports = function globParent(str, opts) { + var options = Object.assign({ flipBackslashes: true }, opts); + + // flip windows path separators + if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { + str = str.replace(backslash, slash); + } + + // special case for strings ending in enclosure containing path separator + if (isEnclosure(str)) { + str += slash; + } + + // preserves full path in case of trailing path separator + str += 'a'; + + // remove path parts that are globby + do { + str = pathPosixDirname(str); + } while (isGlobby(str)); + + // remove escape chars and return result + return str.replace(escaped, '$1'); +}; + +function isEnclosure(str) { + var lastChar = str.slice(-1); + + var enclosureStart; + switch (lastChar) { + case '}': + enclosureStart = '{'; + break; + case ']': + enclosureStart = '['; + break; + default: + return false; + } + + var foundIndex = str.indexOf(enclosureStart); + if (foundIndex < 0) { + return false; + } + + return str.slice(foundIndex + 1, -1).includes(slash); +} + +function isGlobby(str) { + if (/\([^()]+$/.test(str)) { + return true; + } + if (str[0] === '{' || str[0] === '[') { + return true; + } + if (/[^\\][{[]/.test(str)) { + return true; + } + return isGlob(str); +} diff --git a/node_modules/glob-parent/package.json b/node_modules/glob-parent/package.json new file mode 100644 index 0000000000000000000000000000000000000000..baeab4217a04fce13604502b17d4fd8cde540b1c --- /dev/null +++ b/node_modules/glob-parent/package.json @@ -0,0 +1,54 @@ +{ + "name": "glob-parent", + "version": "6.0.2", + "description": "Extract the non-magic parent path from a glob string.", + "author": "Gulp Team (https://gulpjs.com/)", + "contributors": [ + "Elan Shanker (https://github.com/es128)", + "Blaine Bublitz " + ], + "repository": "gulpjs/glob-parent", + "license": "ISC", + "engines": { + "node": ">=10.13.0" + }, + "main": "index.js", + "files": [ + "LICENSE", + "index.js" + ], + "scripts": { + "lint": "eslint .", + "pretest": "npm run lint", + "test": "nyc mocha --async-only" + }, + "dependencies": { + "is-glob": "^4.0.3" + }, + "devDependencies": { + "eslint": "^7.0.0", + "eslint-config-gulp": "^5.0.0", + "expect": "^26.0.1", + "mocha": "^7.1.2", + "nyc": "^15.0.1" + }, + "nyc": { + "reporter": [ + "lcov", + "text-summary" + ] + }, + "prettier": { + "singleQuote": true + }, + "keywords": [ + "glob", + "parent", + "strip", + "path", + "dirname", + "directory", + "base", + "wildcard" + ] +} diff --git a/node_modules/glob/LICENSE b/node_modules/glob/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..42ca266df1d523bb9ae66a8cf8893325ac43159d --- /dev/null +++ b/node_modules/glob/LICENSE @@ -0,0 +1,21 @@ +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. + +## Glob Logo + +Glob's logo created by Tanya Brassie , licensed +under a Creative Commons Attribution-ShareAlike 4.0 International License +https://creativecommons.org/licenses/by-sa/4.0/ diff --git a/node_modules/glob/README.md b/node_modules/glob/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0916a48255cd6f3fec422b7cac6a594e46e731ac --- /dev/null +++ b/node_modules/glob/README.md @@ -0,0 +1,375 @@ +# Glob + +Match files using the patterns the shell uses, like stars and stuff. + +[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Build Status](https://ci.appveyor.com/api/projects/status/kd7f3yftf7unxlsx?svg=true)](https://ci.appveyor.com/project/isaacs/node-glob) [![Coverage Status](https://coveralls.io/repos/isaacs/node-glob/badge.svg?branch=master&service=github)](https://coveralls.io/github/isaacs/node-glob?branch=master) + +This is a glob implementation in JavaScript. It uses the `minimatch` +library to do its matching. + +![](logo/glob.png) + +## Usage + +Install with npm + +``` +npm i glob +``` + +```javascript +var glob = require("glob") + +// options is optional +glob("**/*.js", options, function (er, files) { + // files is an array of filenames. + // If the `nonull` option is set, and nothing + // was found, then files is ["**/*.js"] + // er is an error object or null. +}) +``` + +## Glob Primer + +"Globs" are the patterns you type when you do stuff like `ls *.js` on +the command line, or put `build/*` in a `.gitignore` file. + +Before parsing the path part patterns, braced sections are expanded +into a set. Braced sections start with `{` and end with `}`, with any +number of comma-delimited sections within. Braced sections may contain +slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`. + +The following characters have special magic meaning when used in a +path portion: + +* `*` Matches 0 or more characters in a single path portion +* `?` Matches 1 character +* `[...]` Matches a range of characters, similar to a RegExp range. + If the first character of the range is `!` or `^` then it matches + any character not in the range. +* `!(pattern|pattern|pattern)` Matches anything that does not match + any of the patterns provided. +* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the + patterns provided. +* `+(pattern|pattern|pattern)` Matches one or more occurrences of the + patterns provided. +* `*(a|b|c)` Matches zero or more occurrences of the patterns provided +* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns + provided +* `**` If a "globstar" is alone in a path portion, then it matches + zero or more directories and subdirectories searching for matches. + It does not crawl symlinked directories. + +### Dots + +If a file or directory path portion has a `.` as the first character, +then it will not match any glob pattern unless that pattern's +corresponding path part also has a `.` as its first character. + +For example, the pattern `a/.*/c` would match the file at `a/.b/c`. +However the pattern `a/*/c` would not, because `*` does not start with +a dot character. + +You can make glob treat dots as normal characters by setting +`dot:true` in the options. + +### Basename Matching + +If you set `matchBase:true` in the options, and the pattern has no +slashes in it, then it will seek for any file anywhere in the tree +with a matching basename. For example, `*.js` would match +`test/simple/basic.js`. + +### Empty Sets + +If no matching files are found, then an empty array is returned. This +differs from the shell, where the pattern itself is returned. For +example: + + $ echo a*s*d*f + a*s*d*f + +To get the bash-style behavior, set the `nonull:true` in the options. + +### See Also: + +* `man sh` +* `man bash` (Search for "Pattern Matching") +* `man 3 fnmatch` +* `man 5 gitignore` +* [minimatch documentation](https://github.com/isaacs/minimatch) + +## glob.hasMagic(pattern, [options]) + +Returns `true` if there are any special characters in the pattern, and +`false` otherwise. + +Note that the options affect the results. If `noext:true` is set in +the options object, then `+(a|b)` will not be considered a magic +pattern. If the pattern has a brace expansion, like `a/{b/c,x/y}` +then that is considered magical, unless `nobrace:true` is set in the +options. + +## glob(pattern, [options], cb) + +* `pattern` `{String}` Pattern to be matched +* `options` `{Object}` +* `cb` `{Function}` + * `err` `{Error | null}` + * `matches` `{Array}` filenames found matching the pattern + +Perform an asynchronous glob search. + +## glob.sync(pattern, [options]) + +* `pattern` `{String}` Pattern to be matched +* `options` `{Object}` +* return: `{Array}` filenames found matching the pattern + +Perform a synchronous glob search. + +## Class: glob.Glob + +Create a Glob object by instantiating the `glob.Glob` class. + +```javascript +var Glob = require("glob").Glob +var mg = new Glob(pattern, options, cb) +``` + +It's an EventEmitter, and starts walking the filesystem to find matches +immediately. + +### new glob.Glob(pattern, [options], [cb]) + +* `pattern` `{String}` pattern to search for +* `options` `{Object}` +* `cb` `{Function}` Called when an error occurs, or matches are found + * `err` `{Error | null}` + * `matches` `{Array}` filenames found matching the pattern + +Note that if the `sync` flag is set in the options, then matches will +be immediately available on the `g.found` member. + +### Properties + +* `minimatch` The minimatch object that the glob uses. +* `options` The options object passed in. +* `aborted` Boolean which is set to true when calling `abort()`. There + is no way at this time to continue a glob search after aborting, but + you can re-use the statCache to avoid having to duplicate syscalls. +* `cache` Convenience object. Each field has the following possible + values: + * `false` - Path does not exist + * `true` - Path exists + * `'FILE'` - Path exists, and is not a directory + * `'DIR'` - Path exists, and is a directory + * `[file, entries, ...]` - Path exists, is a directory, and the + array value is the results of `fs.readdir` +* `statCache` Cache of `fs.stat` results, to prevent statting the same + path multiple times. +* `symlinks` A record of which paths are symbolic links, which is + relevant in resolving `**` patterns. +* `realpathCache` An optional object which is passed to `fs.realpath` + to minimize unnecessary syscalls. It is stored on the instantiated + Glob object, and may be re-used. + +### Events + +* `end` When the matching is finished, this is emitted with all the + matches found. If the `nonull` option is set, and no match was found, + then the `matches` list contains the original pattern. The matches + are sorted, unless the `nosort` flag is set. +* `match` Every time a match is found, this is emitted with the specific + thing that matched. It is not deduplicated or resolved to a realpath. +* `error` Emitted when an unexpected error is encountered, or whenever + any fs error occurs if `options.strict` is set. +* `abort` When `abort()` is called, this event is raised. + +### Methods + +* `pause` Temporarily stop the search +* `resume` Resume the search +* `abort` Stop the search forever + +### Options + +All the options that can be passed to Minimatch can also be passed to +Glob to change pattern matching behavior. Also, some have been added, +or have glob-specific ramifications. + +All options are false by default, unless otherwise noted. + +All options are added to the Glob object, as well. + +If you are running many `glob` operations, you can pass a Glob object +as the `options` argument to a subsequent operation to shortcut some +`stat` and `readdir` calls. At the very least, you may pass in shared +`symlinks`, `statCache`, `realpathCache`, and `cache` options, so that +parallel glob operations will be sped up by sharing information about +the filesystem. + +* `cwd` The current working directory in which to search. Defaults + to `process.cwd()`. +* `root` The place where patterns starting with `/` will be mounted + onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix + systems, and `C:\` or some such on Windows.) +* `dot` Include `.dot` files in normal matches and `globstar` matches. + Note that an explicit dot in a portion of the pattern will always + match dot files. +* `nomount` By default, a pattern starting with a forward-slash will be + "mounted" onto the root setting, so that a valid filesystem path is + returned. Set this flag to disable that behavior. +* `mark` Add a `/` character to directory matches. Note that this + requires additional stat calls. +* `nosort` Don't sort the results. +* `stat` Set to true to stat *all* results. This reduces performance + somewhat, and is completely unnecessary, unless `readdir` is presumed + to be an untrustworthy indicator of file existence. +* `silent` When an unusual error is encountered when attempting to + read a directory, a warning will be printed to stderr. Set the + `silent` option to true to suppress these warnings. +* `strict` When an unusual error is encountered when attempting to + read a directory, the process will just continue on in search of + other matches. Set the `strict` option to raise an error in these + cases. +* `cache` See `cache` property above. Pass in a previously generated + cache object to save some fs calls. +* `statCache` A cache of results of filesystem information, to prevent + unnecessary stat calls. While it should not normally be necessary + to set this, you may pass the statCache from one glob() call to the + options object of another, if you know that the filesystem will not + change between calls. (See "Race Conditions" below.) +* `symlinks` A cache of known symbolic links. You may pass in a + previously generated `symlinks` object to save `lstat` calls when + resolving `**` matches. +* `sync` DEPRECATED: use `glob.sync(pattern, opts)` instead. +* `nounique` In some cases, brace-expanded patterns can result in the + same file showing up multiple times in the result set. By default, + this implementation prevents duplicates in the result set. Set this + flag to disable that behavior. +* `nonull` Set to never return an empty set, instead returning a set + containing the pattern itself. This is the default in glob(3). +* `debug` Set to enable debug logging in minimatch and glob. +* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets. +* `noglobstar` Do not match `**` against multiple filenames. (Ie, + treat it as a normal `*` instead.) +* `noext` Do not match `+(a|b)` "extglob" patterns. +* `nocase` Perform a case-insensitive match. Note: on + case-insensitive filesystems, non-magic patterns will match by + default, since `stat` and `readdir` will not raise errors. +* `matchBase` Perform a basename-only match if the pattern does not + contain any slash characters. That is, `*.js` would be treated as + equivalent to `**/*.js`, matching all js files in all directories. +* `nodir` Do not match directories, only files. (Note: to match + *only* directories, simply put a `/` at the end of the pattern.) +* `ignore` Add a pattern or an array of glob patterns to exclude matches. + Note: `ignore` patterns are *always* in `dot:true` mode, regardless + of any other settings. +* `follow` Follow symlinked directories when expanding `**` patterns. + Note that this can result in a lot of duplicate references in the + presence of cyclic links. +* `realpath` Set to true to call `fs.realpath` on all of the results. + In the case of a symlink that cannot be resolved, the full absolute + path to the matched entry is returned (though it will usually be a + broken symlink) +* `absolute` Set to true to always receive absolute paths for matched + files. Unlike `realpath`, this also affects the values returned in + the `match` event. + +## Comparisons to other fnmatch/glob implementations + +While strict compliance with the existing standards is a worthwhile +goal, some discrepancies exist between node-glob and other +implementations, and are intentional. + +The double-star character `**` is supported by default, unless the +`noglobstar` flag is set. This is supported in the manner of bsdglob +and bash 4.3, where `**` only has special significance if it is the only +thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but +`a/**b` will not. + +Note that symlinked directories are not crawled as part of a `**`, +though their contents may match against subsequent portions of the +pattern. This prevents infinite loops and duplicates and the like. + +If an escaped pattern has no matches, and the `nonull` flag is set, +then glob returns the pattern as-provided, rather than +interpreting the character escapes. For example, +`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than +`"*a?"`. This is akin to setting the `nullglob` option in bash, except +that it does not resolve escaped pattern characters. + +If brace expansion is not disabled, then it is performed before any +other interpretation of the glob pattern. Thus, a pattern like +`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded +**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are +checked for validity. Since those two are valid, matching proceeds. + +### Comments and Negation + +Previously, this module let you mark a pattern as a "comment" if it +started with a `#` character, or a "negated" pattern if it started +with a `!` character. + +These options were deprecated in version 5, and removed in version 6. + +To specify things that should not match, use the `ignore` option. + +## Windows + +**Please only use forward-slashes in glob expressions.** + +Though windows uses either `/` or `\` as its path separator, only `/` +characters are used by this glob implementation. You must use +forward-slashes **only** in glob expressions. Back-slashes will always +be interpreted as escape characters, not path separators. + +Results from absolute patterns such as `/foo/*` are mounted onto the +root setting using `path.join`. On windows, this will by default result +in `/foo/*` matching `C:\foo\bar.txt`. + +## Race Conditions + +Glob searching, by its very nature, is susceptible to race conditions, +since it relies on directory walking and such. + +As a result, it is possible that a file that exists when glob looks for +it may have been deleted or modified by the time it returns the result. + +As part of its internal implementation, this program caches all stat +and readdir calls that it makes, in order to cut down on system +overhead. However, this also makes it even more susceptible to races, +especially if the cache or statCache objects are reused between glob +calls. + +Users are thus advised not to use a glob result as a guarantee of +filesystem state in the face of rapid changes. For the vast majority +of operations, this is never a problem. + +## Glob Logo +Glob's logo was created by [Tanya Brassie](http://tanyabrassie.com/). Logo files can be found [here](https://github.com/isaacs/node-glob/tree/master/logo). + +The logo is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/). + +## Contributing + +Any change to behavior (including bugfixes) must come with a test. + +Patches that fail tests or reduce performance will be rejected. + +``` +# to run tests +npm test + +# to re-generate test fixtures +npm run test-regen + +# to benchmark against bash/zsh +npm run bench + +# to profile javascript +npm run prof +``` + +![](oh-my-glob.gif) diff --git a/node_modules/glob/changelog.md b/node_modules/glob/changelog.md new file mode 100644 index 0000000000000000000000000000000000000000..41636771e3a7cda353a836f38d5a7c6a3ed829cc --- /dev/null +++ b/node_modules/glob/changelog.md @@ -0,0 +1,67 @@ +## 7.0 + +- Raise error if `options.cwd` is specified, and not a directory + +## 6.0 + +- Remove comment and negation pattern support +- Ignore patterns are always in `dot:true` mode + +## 5.0 + +- Deprecate comment and negation patterns +- Fix regression in `mark` and `nodir` options from making all cache + keys absolute path. +- Abort if `fs.readdir` returns an error that's unexpected +- Don't emit `match` events for ignored items +- Treat ENOTSUP like ENOTDIR in readdir + +## 4.5 + +- Add `options.follow` to always follow directory symlinks in globstar +- Add `options.realpath` to call `fs.realpath` on all results +- Always cache based on absolute path + +## 4.4 + +- Add `options.ignore` +- Fix handling of broken symlinks + +## 4.3 + +- Bump minimatch to 2.x +- Pass all tests on Windows + +## 4.2 + +- Add `glob.hasMagic` function +- Add `options.nodir` flag + +## 4.1 + +- Refactor sync and async implementations for performance +- Throw if callback provided to sync glob function +- Treat symbolic links in globstar results the same as Bash 4.3 + +## 4.0 + +- Use `^` for dependency versions (bumped major because this breaks + older npm versions) +- Ensure callbacks are only ever called once +- switch to ISC license + +## 3.x + +- Rewrite in JavaScript +- Add support for setting root, cwd, and windows support +- Cache many fs calls +- Add globstar support +- emit match events + +## 2.x + +- Use `glob.h` and `fnmatch.h` from NetBSD + +## 1.x + +- `glob.h` static binding. diff --git a/node_modules/glob/common.js b/node_modules/glob/common.js new file mode 100644 index 0000000000000000000000000000000000000000..66651bb3aac6559d70821b453197a947dfbb7166 --- /dev/null +++ b/node_modules/glob/common.js @@ -0,0 +1,240 @@ +exports.alphasort = alphasort +exports.alphasorti = alphasorti +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark +exports.isIgnored = isIgnored +exports.childrenIgnored = childrenIgnored + +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} + +var path = require("path") +var minimatch = require("minimatch") +var isAbsolute = require("path-is-absolute") +var Minimatch = minimatch.Minimatch + +function alphasorti (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()) +} + +function alphasort (a, b) { + return a.localeCompare(b) +} + +function setupIgnores (self, options) { + self.ignore = options.ignore || [] + + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore] + + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap) + } +} + +// ignore patterns are always in dot:true mode. +function ignoreMap (pattern) { + var gmatcher = null + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, '') + gmatcher = new Minimatch(gpattern, { dot: true }) + } + + return { + matcher: new Minimatch(pattern, { dot: true }), + gmatcher: gmatcher + } +} + +function setopts (self, pattern, options) { + if (!options) + options = {} + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + self.silent = !!options.silent + self.pattern = pattern + self.strict = options.strict !== false + self.realpath = !!options.realpath + self.realpathCache = options.realpathCache || Object.create(null) + self.follow = !!options.follow + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + self.absolute = !!options.absolute + + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) + + setupIgnores(self, options) + + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = path.resolve(options.cwd) + self.changedCwd = self.cwd !== cwd + } + + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") + + // TODO: is an absolute `cwd` supposed to be resolved against `root`? + // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test') + self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd) + if (process.platform === "win32") + self.cwdAbs = self.cwdAbs.replace(/\\/g, "/") + self.nomount = !!options.nomount + + // disable comments and negation in Minimatch. + // Note that they are not supported in Glob itself anyway. + options.nonegate = true + options.nocomment = true + + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} + +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) + all = Object.keys(all) + + if (!self.nosort) + all = all.sort(self.nocase ? alphasorti : alphasort) + + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + var notDir = !(/\/$/.test(e)) + var c = self.cache[e] || self.cache[makeAbs(self, e)] + if (notDir && c) + notDir = c !== 'DIR' && !Array.isArray(c) + return notDir + }) + } + } + + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }) + + self.found = all +} + +function mark (self, p) { + var abs = makeAbs(self, p) + var c = self.cache[abs] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' + + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) + + if (m !== p) { + var mabs = makeAbs(self, m) + self.statCache[mabs] = self.statCache[abs] + self.cache[mabs] = self.cache[abs] + } + } + + return m +} + +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === '/') { + abs = path.join(self.root, f) + } else if (isAbsolute(f) || f === '') { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } else { + abs = path.resolve(f) + } + + if (process.platform === 'win32') + abs = abs.replace(/\\/g, '/') + + return abs +} + + +// Return true, if pattern ends with globstar '**', for the accompanying parent directory. +// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents +function isIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +function childrenIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) +} diff --git a/node_modules/glob/glob.js b/node_modules/glob/glob.js new file mode 100644 index 0000000000000000000000000000000000000000..58dec0f6c2bd0b8dc8fd342056ccdbdbf63b05a2 --- /dev/null +++ b/node_modules/glob/glob.js @@ -0,0 +1,790 @@ +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. + +module.exports = glob + +var fs = require('fs') +var rp = require('fs.realpath') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var inherits = require('inherits') +var EE = require('events').EventEmitter +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var globSync = require('./sync.js') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = require('inflight') +var util = require('util') +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored + +var once = require('once') + +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} + + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } + + return new Glob(pattern, options, cb) +} + +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync + +// old api surface +glob.glob = glob + +function extend (origin, add) { + if (add === null || typeof add !== 'object') { + return origin + } + + var keys = Object.keys(add) + var i = keys.length + while (i--) { + origin[keys[i]] = add[keys[i]] + } + return origin +} + +glob.hasMagic = function (pattern, options_) { + var options = extend({}, options_) + options.noprocess = true + + var g = new Glob(pattern, options) + var set = g.minimatch.set + + if (!pattern) + return false + + if (set.length > 1) + return true + + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } + + return false +} + +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } + + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) + + setopts(this, pattern, options) + this._didRealPath = false + + // process each pattern in the minimatch set + var n = this.minimatch.set.length + + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) + + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) + } + + var self = this + this._processing = 0 + + this._emitQueue = [] + this._processQueue = [] + this.paused = false + + if (this.noprocess) + return this + + if (n === 0) + return done() + + var sync = true + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) + } + sync = false + + function done () { + --self._processing + if (self._processing <= 0) { + if (sync) { + process.nextTick(function () { + self._finish() + }) + } else { + self._finish() + } + } + } +} + +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return + + if (this.realpath && !this._didRealpath) + return this._realpath() + + common.finish(this) + this.emit('end', this.found) +} + +Glob.prototype._realpath = function () { + if (this._didRealpath) + return + + this._didRealpath = true + + var n = this.matches.length + if (n === 0) + return this._finish() + + var self = this + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next) + + function next () { + if (--n === 0) + self._finish() + } +} + +Glob.prototype._realpathSet = function (index, cb) { + var matchset = this.matches[index] + if (!matchset) + return cb() + + var found = Object.keys(matchset) + var self = this + var n = found.length + + if (n === 0) + return cb() + + var set = this.matches[index] = Object.create(null) + found.forEach(function (p, i) { + // If there's a problem with the stat, then it means that + // one or more of the links in the realpath couldn't be + // resolved. just return the abs value in that case. + p = self._makeAbs(p) + rp.realpath(p, self.realpathCache, function (er, real) { + if (!er) + set[real] = true + else if (er.syscall === 'stat') + set[p] = true + else + self.emit('error', er) // srsly wtf right here + + if (--n === 0) { + self.matches[index] = set + cb() + } + }) + }) +} + +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} + +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} + +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') + } +} + +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } + } +} + +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') + + if (this.aborted) + return + + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return + } + + //console.error('PROCESS %d', this._processing, pattern) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip _processing + if (childrenIgnored(this, read)) + return cb() + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} + +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return cb() + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) + } + cb() +} + +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return + + if (isIgnored(this, e)) + return + + if (this.paused) { + this._emitQueue.push([index, e]) + return + } + + var abs = isAbsolute(e) ? e : this._makeAbs(e) + + if (this.mark) + e = this._mark(e) + + if (this.absolute) + e = abs + + if (this.matches[index][e]) + return + + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + + var st = this.statCache[abs] + if (st) + this.emit('stat', e, st) + + this.emit('match', e) +} + +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return + + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false, cb) + + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) + + if (lstatcb) + fs.lstat(abs, lstatcb) + + function lstatcb_ (er, lstat) { + if (er && er.code === 'ENOENT') + return cb() + + var isSym = lstat && lstat.isSymbolicLink() + self.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && lstat && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} + +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return + + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return + + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() + + if (Array.isArray(c)) + return cb(null, c) + } + + var self = this + fs.readdir(abs, readdirCb(this, abs, cb)) +} + +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} + +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return + + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + return cb(null, entries) +} + +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return + + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + var abs = this._makeAbs(f) + this.cache[abs] = 'FILE' + if (abs === this.cwdAbs) { + var error = new Error(er.code + ' invalid cwd ' + this.cwd) + error.path = this.cwd + error.code = er.code + this.emit('error', error) + this.abort() + } + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) { + this.emit('error', er) + // If the error is handled, then we abort + // if not, we threw out of here + this.abort() + } + if (!this.silent) + console.error('glob error', er) + break + } + + return cb() +} + +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + + +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) + + var isSym = this.symlinks[abs] + var len = entries.length + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) + } + + cb() +} + +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) +} +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { + + //console.error('ps2', prefix, exists) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) + cb() +} + +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return cb() + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return cb(null, c) + + if (needDir && c === 'FILE') + return cb() + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else { + var type = stat.isDirectory() ? 'DIR' : 'FILE' + if (needDir && type === 'FILE') + return cb() + else + return cb(null, type, stat) + } + } + + var self = this + var statcb = inflight('stat\0' + abs, lstatcb_) + if (statcb) + fs.lstat(abs, statcb) + + function lstatcb_ (er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + // If it's a symlink, then treat it as the target, unless + // the target does not exist, then treat it as a file. + return fs.stat(abs, function (er, stat) { + if (er) + self._stat2(f, abs, null, lstat, cb) + else + self._stat2(f, abs, er, stat, cb) + }) + } else { + self._stat2(f, abs, er, lstat, cb) + } + } +} + +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { + this.statCache[abs] = false + return cb() + } + + var needDir = f.slice(-1) === '/' + this.statCache[abs] = stat + + if (abs.slice(-1) === '/' && stat && !stat.isDirectory()) + return cb(null, false, stat) + + var c = true + if (stat) + c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c === 'FILE') + return cb() + + return cb(null, c, stat) +} diff --git a/node_modules/glob/package.json b/node_modules/glob/package.json new file mode 100644 index 0000000000000000000000000000000000000000..6477c3070cb14e721e1df8658acdb3154e85301a --- /dev/null +++ b/node_modules/glob/package.json @@ -0,0 +1,46 @@ +{ + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "name": "glob", + "description": "a little globber", + "version": "7.1.6", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/node-glob.git" + }, + "main": "glob.js", + "files": [ + "glob.js", + "sync.js", + "common.js" + ], + "engines": { + "node": "*" + }, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "devDependencies": { + "mkdirp": "0", + "rimraf": "^2.2.8", + "tap": "^12.0.1", + "tick": "0.0.6" + }, + "scripts": { + "prepublish": "npm run benchclean", + "profclean": "rm -f v8.log profile.txt", + "test": "tap test/*.js --cov", + "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js", + "bench": "bash benchmark.sh", + "prof": "bash prof.sh && cat profile.txt", + "benchclean": "node benchclean.js" + }, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } +} diff --git a/node_modules/glob/sync.js b/node_modules/glob/sync.js new file mode 100644 index 0000000000000000000000000000000000000000..c952134baa7ec0830c0f71e8df00db41a927bbb2 --- /dev/null +++ b/node_modules/glob/sync.js @@ -0,0 +1,486 @@ +module.exports = globSync +globSync.GlobSync = GlobSync + +var fs = require('fs') +var rp = require('fs.realpath') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var Glob = require('./glob.js').Glob +var util = require('util') +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored + +function globSync (pattern, options) { + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + return new GlobSync(pattern, options).found +} + +function GlobSync (pattern, options) { + if (!pattern) + throw new Error('must provide pattern') + + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options) + + setopts(this, pattern, options) + + if (this.noprocess) + return this + + var n = this.minimatch.set.length + this.matches = new Array(n) + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false) + } + this._finish() +} + +GlobSync.prototype._finish = function () { + assert(this instanceof GlobSync) + if (this.realpath) { + var self = this + this.matches.forEach(function (matchset, index) { + var set = self.matches[index] = Object.create(null) + for (var p in matchset) { + try { + p = self._makeAbs(p) + var real = rp.realpathSync(p, self.realpathCache) + set[real] = true + } catch (er) { + if (er.syscall === 'stat') + set[self._makeAbs(p)] = true + else + throw er + } + } + }) + } + common.finish(this) +} + + +GlobSync.prototype._process = function (pattern, index, inGlobStar) { + assert(this instanceof GlobSync) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // See if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip processing + if (childrenIgnored(this, read)) + return + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar) +} + + +GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar) + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix.slice(-1) !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) + newPattern = [prefix, e] + else + newPattern = [e] + this._process(newPattern.concat(remain), index, inGlobStar) + } +} + + +GlobSync.prototype._emitMatch = function (index, e) { + if (isIgnored(this, e)) + return + + var abs = this._makeAbs(e) + + if (this.mark) + e = this._mark(e) + + if (this.absolute) { + e = abs + } + + if (this.matches[index][e]) + return + + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + + if (this.stat) + this._stat(e) +} + + +GlobSync.prototype._readdirInGlobStar = function (abs) { + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false) + + var entries + var lstat + var stat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + if (er.code === 'ENOENT') { + // lstat failed, doesn't exist + return null + } + } + + var isSym = lstat && lstat.isSymbolicLink() + this.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && lstat && !lstat.isDirectory()) + this.cache[abs] = 'FILE' + else + entries = this._readdir(abs, false) + + return entries +} + +GlobSync.prototype._readdir = function (abs, inGlobStar) { + var entries + + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return null + + if (Array.isArray(c)) + return c + } + + try { + return this._readdirEntries(abs, fs.readdirSync(abs)) + } catch (er) { + this._readdirError(abs, er) + return null + } +} + +GlobSync.prototype._readdirEntries = function (abs, entries) { + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + + // mark and cache dir-ness + return entries +} + +GlobSync.prototype._readdirError = function (f, er) { + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + var abs = this._makeAbs(f) + this.cache[abs] = 'FILE' + if (abs === this.cwdAbs) { + var error = new Error(er.code + ' invalid cwd ' + this.cwd) + error.path = this.cwd + error.code = er.code + throw error + } + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) + throw er + if (!this.silent) + console.error('glob error', er) + break + } +} + +GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { + + var entries = this._readdir(abs, inGlobStar) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false) + + var len = entries.length + var isSym = this.symlinks[abs] + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true) + } +} + +GlobSync.prototype._processSimple = function (prefix, index) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var exists = this._stat(prefix) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) +} + +// Returns either 'DIR', 'FILE', or false +GlobSync.prototype._stat = function (f) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return false + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return c + + if (needDir && c === 'FILE') + return false + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (!stat) { + var lstat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { + this.statCache[abs] = false + return false + } + } + + if (lstat && lstat.isSymbolicLink()) { + try { + stat = fs.statSync(abs) + } catch (er) { + stat = lstat + } + } else { + stat = lstat + } + } + + this.statCache[abs] = stat + + var c = true + if (stat) + c = stat.isDirectory() ? 'DIR' : 'FILE' + + this.cache[abs] = this.cache[abs] || c + + if (needDir && c === 'FILE') + return false + + return c +} + +GlobSync.prototype._mark = function (p) { + return common.mark(this, p) +} + +GlobSync.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} diff --git a/node_modules/has/LICENSE-MIT b/node_modules/has/LICENSE-MIT new file mode 100644 index 0000000000000000000000000000000000000000..ae7014d385df3d0f4f9ad107bc5458935bed727a --- /dev/null +++ b/node_modules/has/LICENSE-MIT @@ -0,0 +1,22 @@ +Copyright (c) 2013 Thiago de Arruda + +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/has/README.md b/node_modules/has/README.md new file mode 100644 index 0000000000000000000000000000000000000000..635e3a4baab00b59b15bcd7f254f51286d9688f5 --- /dev/null +++ b/node_modules/has/README.md @@ -0,0 +1,18 @@ +# has + +> Object.prototype.hasOwnProperty.call shortcut + +## Installation + +```sh +npm install --save has +``` + +## Usage + +```js +var has = require('has'); + +has({}, 'hasOwnProperty'); // false +has(Object.prototype, 'hasOwnProperty'); // true +``` diff --git a/node_modules/has/package.json b/node_modules/has/package.json new file mode 100644 index 0000000000000000000000000000000000000000..7c4592f16de071615efc78fee90bfb58af42757c --- /dev/null +++ b/node_modules/has/package.json @@ -0,0 +1,48 @@ +{ + "name": "has", + "description": "Object.prototype.hasOwnProperty.call shortcut", + "version": "1.0.3", + "homepage": "https://github.com/tarruda/has", + "author": { + "name": "Thiago de Arruda", + "email": "tpadilha84@gmail.com" + }, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "repository": { + "type": "git", + "url": "git://github.com/tarruda/has.git" + }, + "bugs": { + "url": "https://github.com/tarruda/has/issues" + }, + "license": "MIT", + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/tarruda/has/blob/master/LICENSE-MIT" + } + ], + "main": "./src", + "dependencies": { + "function-bind": "^1.1.1" + }, + "devDependencies": { + "@ljharb/eslint-config": "^12.2.1", + "eslint": "^4.19.1", + "tape": "^4.9.0" + }, + "engines": { + "node": ">= 0.4.0" + }, + "scripts": { + "lint": "eslint .", + "pretest": "npm run lint", + "test": "tape test" + } +} diff --git a/node_modules/has/src/index.js b/node_modules/has/src/index.js new file mode 100644 index 0000000000000000000000000000000000000000..dd92dd9094edb035159cfbf38af395418381abe7 --- /dev/null +++ b/node_modules/has/src/index.js @@ -0,0 +1,5 @@ +'use strict'; + +var bind = require('function-bind'); + +module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); diff --git a/node_modules/has/test/index.js b/node_modules/has/test/index.js new file mode 100644 index 0000000000000000000000000000000000000000..43d480b2c2e7638dc5c4a40d5a274da66d050a37 --- /dev/null +++ b/node_modules/has/test/index.js @@ -0,0 +1,10 @@ +'use strict'; + +var test = require('tape'); +var has = require('../'); + +test('has', function (t) { + t.equal(has({}, 'hasOwnProperty'), false, 'object literal does not have own property "hasOwnProperty"'); + t.equal(has(Object.prototype, 'hasOwnProperty'), true, 'Object.prototype has own property "hasOwnProperty"'); + t.end(); +}); diff --git a/node_modules/inflight/LICENSE b/node_modules/inflight/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..05eeeb88c2ef4cc9bacbcc46d6cfcb6962f8b385 --- /dev/null +++ b/node_modules/inflight/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter + +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/inflight/README.md b/node_modules/inflight/README.md new file mode 100644 index 0000000000000000000000000000000000000000..6dc8929171a8c50c0ab8c216b6000fe9c146f3fb --- /dev/null +++ b/node_modules/inflight/README.md @@ -0,0 +1,37 @@ +# inflight + +Add callbacks to requests in flight to avoid async duplication + +## USAGE + +```javascript +var inflight = require('inflight') + +// some request that does some stuff +function req(key, callback) { + // key is any random string. like a url or filename or whatever. + // + // will return either a falsey value, indicating that the + // request for this key is already in flight, or a new callback + // which when called will call all callbacks passed to inflightk + // with the same key + callback = inflight(key, callback) + + // If we got a falsey value back, then there's already a req going + if (!callback) return + + // this is where you'd fetch the url or whatever + // callback is also once()-ified, so it can safely be assigned + // to multiple events etc. First call wins. + setTimeout(function() { + callback(null, key) + }, 100) +} + +// only assigns a single setTimeout +// when it dings, all cbs get called +req('foo', cb1) +req('foo', cb2) +req('foo', cb3) +req('foo', cb4) +``` diff --git a/node_modules/inflight/inflight.js b/node_modules/inflight/inflight.js new file mode 100644 index 0000000000000000000000000000000000000000..48202b3ca41d9768b5f526f3aede4581e7693386 --- /dev/null +++ b/node_modules/inflight/inflight.js @@ -0,0 +1,54 @@ +var wrappy = require('wrappy') +var reqs = Object.create(null) +var once = require('once') + +module.exports = wrappy(inflight) + +function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb) + return null + } else { + reqs[key] = [cb] + return makeres(key) + } +} + +function makeres (key) { + return once(function RES () { + var cbs = reqs[key] + var len = cbs.length + var args = slice(arguments) + + // XXX It's somewhat ambiguous whether a new callback added in this + // pass should be queued for later execution if something in the + // list of callbacks throws, or if it should just be discarded. + // However, it's such an edge case that it hardly matters, and either + // choice is likely as surprising as the other. + // As it happens, we do go ahead and schedule it for later execution. + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args) + } + } finally { + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len) + process.nextTick(function () { + RES.apply(null, args) + }) + } else { + delete reqs[key] + } + } + }) +} + +function slice (args) { + var length = args.length + var array = [] + + for (var i = 0; i < length; i++) array[i] = args[i] + return array +} diff --git a/node_modules/inflight/package.json b/node_modules/inflight/package.json new file mode 100644 index 0000000000000000000000000000000000000000..6084d3509a5d6d79eb84cb6046a954100caeba7d --- /dev/null +++ b/node_modules/inflight/package.json @@ -0,0 +1,29 @@ +{ + "name": "inflight", + "version": "1.0.6", + "description": "Add callbacks to requests in flight to avoid async duplication", + "main": "inflight.js", + "files": [ + "inflight.js" + ], + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + }, + "devDependencies": { + "tap": "^7.1.2" + }, + "scripts": { + "test": "tap test.js --100" + }, + "repository": { + "type": "git", + "url": "https://github.com/npm/inflight.git" + }, + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "bugs": { + "url": "https://github.com/isaacs/inflight/issues" + }, + "homepage": "https://github.com/isaacs/inflight", + "license": "ISC" +} diff --git a/node_modules/inherits/LICENSE b/node_modules/inherits/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..dea3013d6710ee273f49ac606a65d5211d480c88 --- /dev/null +++ b/node_modules/inherits/LICENSE @@ -0,0 +1,16 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter + +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/inherits/README.md b/node_modules/inherits/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b1c56658557b8162aa9f5ba8610ed03a5e558d9d --- /dev/null +++ b/node_modules/inherits/README.md @@ -0,0 +1,42 @@ +Browser-friendly inheritance fully compatible with standard node.js +[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). + +This package exports standard `inherits` from node.js `util` module in +node environment, but also provides alternative browser-friendly +implementation through [browser +field](https://gist.github.com/shtylman/4339901). Alternative +implementation is a literal copy of standard one located in standalone +module to avoid requiring of `util`. It also has a shim for old +browsers with no `Object.create` support. + +While keeping you sure you are using standard `inherits` +implementation in node.js environment, it allows bundlers such as +[browserify](https://github.com/substack/node-browserify) to not +include full `util` package to your client code if all you need is +just `inherits` function. It worth, because browser shim for `util` +package is large and `inherits` is often the single function you need +from it. + +It's recommended to use this package instead of +`require('util').inherits` for any code that has chances to be used +not only in node.js but in browser too. + +## usage + +```js +var inherits = require('inherits'); +// then use exactly as the standard one +``` + +## note on version ~1.0 + +Version ~1.0 had completely different motivation and is not compatible +neither with 2.0 nor with standard node.js `inherits`. + +If you are using version ~1.0 and planning to switch to ~2.0, be +careful: + +* new version uses `super_` instead of `super` for referencing + superclass +* new version overwrites current prototype while old one preserves any + existing fields on it diff --git a/node_modules/inherits/inherits.js b/node_modules/inherits/inherits.js new file mode 100644 index 0000000000000000000000000000000000000000..f71f2d93294a67ad5d9300aae07973e259f26068 --- /dev/null +++ b/node_modules/inherits/inherits.js @@ -0,0 +1,9 @@ +try { + var util = require('util'); + /* istanbul ignore next */ + if (typeof util.inherits !== 'function') throw ''; + module.exports = util.inherits; +} catch (e) { + /* istanbul ignore next */ + module.exports = require('./inherits_browser.js'); +} diff --git a/node_modules/inherits/inherits_browser.js b/node_modules/inherits/inherits_browser.js new file mode 100644 index 0000000000000000000000000000000000000000..86bbb3dc29e4847df14de2c2b4b168e065184643 --- /dev/null +++ b/node_modules/inherits/inherits_browser.js @@ -0,0 +1,27 @@ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} diff --git a/node_modules/inherits/package.json b/node_modules/inherits/package.json new file mode 100644 index 0000000000000000000000000000000000000000..37b4366b83e63e037cd447090ec25b39fce27e01 --- /dev/null +++ b/node_modules/inherits/package.json @@ -0,0 +1,29 @@ +{ + "name": "inherits", + "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", + "version": "2.0.4", + "keywords": [ + "inheritance", + "class", + "klass", + "oop", + "object-oriented", + "inherits", + "browser", + "browserify" + ], + "main": "./inherits.js", + "browser": "./inherits_browser.js", + "repository": "git://github.com/isaacs/inherits", + "license": "ISC", + "scripts": { + "test": "tap" + }, + "devDependencies": { + "tap": "^14.2.4" + }, + "files": [ + "inherits.js", + "inherits_browser.js" + ] +} diff --git a/node_modules/is-binary-path/index.d.ts b/node_modules/is-binary-path/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..19dcd4327beddb4d48ffc5a79eb8c306903574b4 --- /dev/null +++ b/node_modules/is-binary-path/index.d.ts @@ -0,0 +1,17 @@ +/** +Check if a file path is a binary file. + +@example +``` +import isBinaryPath = require('is-binary-path'); + +isBinaryPath('source/unicorn.png'); +//=> true + +isBinaryPath('source/unicorn.txt'); +//=> false +``` +*/ +declare function isBinaryPath(filePath: string): boolean; + +export = isBinaryPath; diff --git a/node_modules/is-binary-path/index.js b/node_modules/is-binary-path/index.js new file mode 100644 index 0000000000000000000000000000000000000000..ef7548c8303298520e15e7e680bf99aee21f787a --- /dev/null +++ b/node_modules/is-binary-path/index.js @@ -0,0 +1,7 @@ +'use strict'; +const path = require('path'); +const binaryExtensions = require('binary-extensions'); + +const extensions = new Set(binaryExtensions); + +module.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase()); diff --git a/node_modules/is-binary-path/license b/node_modules/is-binary-path/license new file mode 100644 index 0000000000000000000000000000000000000000..401b1c731bcd3ed3193b94d7cbb81bd3b4a1dd47 --- /dev/null +++ b/node_modules/is-binary-path/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/is-binary-path/package.json b/node_modules/is-binary-path/package.json new file mode 100644 index 0000000000000000000000000000000000000000..a8d005aed80f8729749e0302d16bf0a6f2ab7eb6 --- /dev/null +++ b/node_modules/is-binary-path/package.json @@ -0,0 +1,40 @@ +{ + "name": "is-binary-path", + "version": "2.1.0", + "description": "Check if a file path is a binary file", + "license": "MIT", + "repository": "sindresorhus/is-binary-path", + "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": [ + "binary", + "extensions", + "extension", + "file", + "path", + "check", + "detect", + "is" + ], + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/node_modules/is-binary-path/readme.md b/node_modules/is-binary-path/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..b4ab02519b0fdefb0f64748adcc1d35111a2cf75 --- /dev/null +++ b/node_modules/is-binary-path/readme.md @@ -0,0 +1,34 @@ +# is-binary-path [![Build Status](https://travis-ci.org/sindresorhus/is-binary-path.svg?branch=master)](https://travis-ci.org/sindresorhus/is-binary-path) + +> Check if a file path is a binary file + + +## Install + +``` +$ npm install is-binary-path +``` + + +## Usage + +```js +const isBinaryPath = require('is-binary-path'); + +isBinaryPath('source/unicorn.png'); +//=> true + +isBinaryPath('source/unicorn.txt'); +//=> false +``` + + +## Related + +- [binary-extensions](https://github.com/sindresorhus/binary-extensions) - List of binary file extensions +- [is-text-path](https://github.com/sindresorhus/is-text-path) - Check if a filepath is a text file + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com), [Paul Miller](https://paulmillr.com) diff --git a/node_modules/is-core-module/.eslintrc b/node_modules/is-core-module/.eslintrc new file mode 100644 index 0000000000000000000000000000000000000000..f2e07268154e3e32cb09cb164baf850c7dac9a38 --- /dev/null +++ b/node_modules/is-core-module/.eslintrc @@ -0,0 +1,18 @@ +{ + "extends": "@ljharb", + "root": true, + "rules": { + "func-style": 1, + }, + "overrides": [ + { + "files": "test/**", + "rules": { + "global-require": 0, + "max-depth": 0, + "max-lines-per-function": 0, + "no-negated-condition": 0, + }, + }, + ], +} diff --git a/node_modules/is-core-module/.nycrc b/node_modules/is-core-module/.nycrc new file mode 100644 index 0000000000000000000000000000000000000000..bdd626ce91477abbdd489b79988baebadbd3c897 --- /dev/null +++ b/node_modules/is-core-module/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/is-core-module/CHANGELOG.md b/node_modules/is-core-module/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..e70fa7b898135ea354645e5b5a71eb1bf6c89d10 --- /dev/null +++ b/node_modules/is-core-module/CHANGELOG.md @@ -0,0 +1,160 @@ +# 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). + +## [v2.12.0](https://github.com/inspect-js/is-core-module/compare/v2.11.0...v2.12.0) - 2023-04-10 + +### Commits + +- [actions] update rebase action to use reusable workflow [`c0a7251`](https://github.com/inspect-js/is-core-module/commit/c0a7251f734f3c621932c5fcdfd1bf966b42ca32) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`9ae8b7f`](https://github.com/inspect-js/is-core-module/commit/9ae8b7fac03c369861d0991b4a2ce8d4848e6a7d) +- [New] `test/reporters` added in v19.9, `wasi` added in v20 [`9d5341a`](https://github.com/inspect-js/is-core-module/commit/9d5341ab32053f25b7fa7db3c0e18461db24a79c) +- [Dev Deps] add missing `in-publish` dep [`5980245`](https://github.com/inspect-js/is-core-module/commit/59802456e9ac919fa748f53be9d8fbf304a197df) + +## [v2.11.0](https://github.com/inspect-js/is-core-module/compare/v2.10.0...v2.11.0) - 2022-10-18 + +### Commits + +- [meta] use `npmignore` to autogenerate an npmignore file [`3360011`](https://github.com/inspect-js/is-core-module/commit/33600118857b46177178072fba2affcdeb009d12) +- [Dev Deps] update `aud`, `tape` [`651c6b0`](https://github.com/inspect-js/is-core-module/commit/651c6b0cc2799d4130866cf43ad333dcade3d26c) +- [New] `inspector/promises` and `node:inspector/promises` is now available in node 19 [`22d332f`](https://github.com/inspect-js/is-core-module/commit/22d332fe22ac050305444e0781ff85af819abcb0) + +## [v2.10.0](https://github.com/inspect-js/is-core-module/compare/v2.9.0...v2.10.0) - 2022-08-03 + +### Commits + +- [New] `node:test` is now available in node ^16.17 [`e8fd36e`](https://github.com/inspect-js/is-core-module/commit/e8fd36e9b86c917775a07cc473b62a3294f459f2) +- [Tests] improve skip message [`c014a4c`](https://github.com/inspect-js/is-core-module/commit/c014a4c0cd6eb15fff573ae4709191775e70cab4) + +## [v2.9.0](https://github.com/inspect-js/is-core-module/compare/v2.8.1...v2.9.0) - 2022-04-19 + +### Commits + +- [New] add `node:test`, in node 18+ [`f853eca`](https://github.com/inspect-js/is-core-module/commit/f853eca801d0a7d4e1dbb670f1b6d9837d9533c5) +- [Tests] use `mock-property` [`03b3644`](https://github.com/inspect-js/is-core-module/commit/03b3644dff4417f4ba5a7d0aa0138f5f6b3e5c46) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`7c0e2d0`](https://github.com/inspect-js/is-core-module/commit/7c0e2d06ed2a89acf53abe2ab34d703ed5b03455) +- [meta] simplify "exports" [`d6ed201`](https://github.com/inspect-js/is-core-module/commit/d6ed201eba7fbba0e59814a9050fc49a6e9878c8) + +## [v2.8.1](https://github.com/inspect-js/is-core-module/compare/v2.8.0...v2.8.1) - 2022-01-05 + +### Commits + +- [actions] reuse common workflows [`cd2cf9b`](https://github.com/inspect-js/is-core-module/commit/cd2cf9b3b66c8d328f65610efe41e9325db7716d) +- [Fix] update node 0.4 results [`062195d`](https://github.com/inspect-js/is-core-module/commit/062195d89f0876a88b95d378b43f7fcc1205bc5b) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`0790b62`](https://github.com/inspect-js/is-core-module/commit/0790b6222848c6167132f9f73acc3520fa8d1298) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`7d139a6`](https://github.com/inspect-js/is-core-module/commit/7d139a6d767709eabf0a0251e074ec1fb230c06e) +- [Tests] run `nyc` in `tests-only`, not `test` [`780e8a0`](https://github.com/inspect-js/is-core-module/commit/780e8a049951c71cf78b1707f0871c48a28bde14) + +## [v2.8.0](https://github.com/inspect-js/is-core-module/compare/v2.7.0...v2.8.0) - 2021-10-14 + +### Commits + +- [actions] update codecov uploader [`0cfe94e`](https://github.com/inspect-js/is-core-module/commit/0cfe94e106a7d005ea03e008c0a21dec13a77904) +- [New] add `readline/promises` to node v17+ [`4f78c30`](https://github.com/inspect-js/is-core-module/commit/4f78c3008b1b58b4db6dc91d99610b1bc859da7e) +- [Tests] node ^14.18 supports `node:` prefixes for CJS [`43e2f17`](https://github.com/inspect-js/is-core-module/commit/43e2f177452cea2f0eaf34f61b5407217bbdb6f4) + +## [v2.7.0](https://github.com/inspect-js/is-core-module/compare/v2.6.0...v2.7.0) - 2021-09-27 + +### Commits + +- [New] node `v14.18` added `node:`-prefixed core modules to `require` [`6d943ab`](https://github.com/inspect-js/is-core-module/commit/6d943abe81382b9bbe344384d80fbfebe1cc0526) +- [Tests] add coverage for Object.prototype pollution [`c6baf5f`](https://github.com/inspect-js/is-core-module/commit/c6baf5f942311a1945c1af41167bb80b84df2af7) +- [Dev Deps] update `@ljharb/eslint-config` [`6717f00`](https://github.com/inspect-js/is-core-module/commit/6717f000d063ea57beb772bded36c2f056ac404c) +- [eslint] fix linter warning [`594c10b`](https://github.com/inspect-js/is-core-module/commit/594c10bb7d39d7eb00925c90924199ff596184b2) +- [meta] add `sideEffects` flag [`c32cfa5`](https://github.com/inspect-js/is-core-module/commit/c32cfa5195632944c4dd4284a142b8476e75be13) + +## [v2.6.0](https://github.com/inspect-js/is-core-module/compare/v2.5.0...v2.6.0) - 2021-08-17 + +### Commits + +- [Dev Deps] update `eslint`, `tape` [`6cc928f`](https://github.com/inspect-js/is-core-module/commit/6cc928f8a4bba66aeeccc4f6beeac736d4bd3081) +- [New] add `stream/consumers` to node `>= 16.7` [`a1a423e`](https://github.com/inspect-js/is-core-module/commit/a1a423e467e4cc27df180234fad5bab45943e67d) +- [Refactor] Remove duplicated `&&` operand [`86faea7`](https://github.com/inspect-js/is-core-module/commit/86faea738213a2433c62d1098488dc9314dca832) +- [Tests] include prereleases [`a4da7a6`](https://github.com/inspect-js/is-core-module/commit/a4da7a6abf7568e2aa4fd98e69452179f1850963) + +## [v2.5.0](https://github.com/inspect-js/is-core-module/compare/v2.4.0...v2.5.0) - 2021-07-12 + +### Commits + +- [Dev Deps] update `auto-changelog`, `eslint` [`6334cc9`](https://github.com/inspect-js/is-core-module/commit/6334cc94f3af7469685bd8f236740991baaf2705) +- [New] add `stream/web` to node v16.5+ [`17ac59b`](https://github.com/inspect-js/is-core-module/commit/17ac59b662d63e220a2e5728625f005c24f177b2) + +## [v2.4.0](https://github.com/inspect-js/is-core-module/compare/v2.3.0...v2.4.0) - 2021-05-09 + +### Commits + +- [readme] add actions and codecov badges [`82b7faa`](https://github.com/inspect-js/is-core-module/commit/82b7faa12b56dbe47fbea67e1a5b9e447027ba40) +- [Dev Deps] update `@ljharb/eslint-config`, `aud` [`8096868`](https://github.com/inspect-js/is-core-module/commit/8096868c024a161ccd4d44110b136763e92eace8) +- [Dev Deps] update `eslint` [`6726824`](https://github.com/inspect-js/is-core-module/commit/67268249b88230018c510f6532a8046d7326346f) +- [New] add `diagnostics_channel` to node `^14.17` [`86c6563`](https://github.com/inspect-js/is-core-module/commit/86c65634201b8ff9b3e48a9a782594579c7f5c3c) +- [meta] fix prepublish script [`697a01e`](https://github.com/inspect-js/is-core-module/commit/697a01e3c9c0be074066520954f30fb28532ec57) + +## [v2.3.0](https://github.com/inspect-js/is-core-module/compare/v2.2.0...v2.3.0) - 2021-04-24 + +### Commits + +- [meta] do not publish github action workflow files [`060d4bb`](https://github.com/inspect-js/is-core-module/commit/060d4bb971a29451c19ff336eb56bee27f9fa95a) +- [New] add support for `node:` prefix, in node 16+ [`7341223`](https://github.com/inspect-js/is-core-module/commit/73412230a769f6e81c05eea50b6520cebf54ed2f) +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`016269a`](https://github.com/inspect-js/is-core-module/commit/016269abae9f6657a5254adfbb813f09a05067f9) +- [patch] remove unneeded `.0` in version ranges [`cb466a6`](https://github.com/inspect-js/is-core-module/commit/cb466a6d89e52b8389e5c12715efcd550c41cea3) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`c9f9c39`](https://github.com/inspect-js/is-core-module/commit/c9f9c396ace60ef81906f98059c064e6452473ed) +- [actions] update workflows [`3ee4a89`](https://github.com/inspect-js/is-core-module/commit/3ee4a89fd5a02fccd43882d905448ea6a98e9a3c) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`dee4fed`](https://github.com/inspect-js/is-core-module/commit/dee4fed79690c1d43a22f7fa9426abebdc6d727f) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`7d046ba`](https://github.com/inspect-js/is-core-module/commit/7d046ba07ae8c9292e43652694ca808d7b309de8) +- [meta] use `prepublishOnly` script for npm 7+ [`149e677`](https://github.com/inspect-js/is-core-module/commit/149e6771a5ede6d097e71785b467a9c4b4977cc7) +- [readme] remove travis badge [`903b51d`](https://github.com/inspect-js/is-core-module/commit/903b51d6b69b98abeabfbc3695c345b02646f19c) + +## [v2.2.0](https://github.com/inspect-js/is-core-module/compare/v2.1.0...v2.2.0) - 2020-11-26 + +### Commits + +- [Tests] migrate tests to Github Actions [`c919f57`](https://github.com/inspect-js/is-core-module/commit/c919f573c0a92d10a0acad0b650b5aecb033d426) +- [patch] `core.json`: %s/ /\t/g [`db3f685`](https://github.com/inspect-js/is-core-module/commit/db3f68581f53e73cc09cd675955eb1bdd6a5a39b) +- [Tests] run `nyc` on all tests [`b2f925f`](https://github.com/inspect-js/is-core-module/commit/b2f925f8866f210ef441f39fcc8cc42692ab89b1) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`; add `safe-publish-latest` [`89f02a2`](https://github.com/inspect-js/is-core-module/commit/89f02a2b4162246dea303a6ee31bb9a550b05c72) +- [New] add `path/posix`, `path/win32`, `util/types` [`77f94f1`](https://github.com/inspect-js/is-core-module/commit/77f94f1e90ffd7c0be2a3f1aa8574ebf7fd981b3) + +## [v2.1.0](https://github.com/inspect-js/is-core-module/compare/v2.0.0...v2.1.0) - 2020-11-04 + +### Commits + +- [Dev Deps] update `eslint` [`5e0034e`](https://github.com/inspect-js/is-core-module/commit/5e0034eae57c09c8f1bd769f502486a00f56c6e4) +- [New] Add `diagnostics_channel` [`c2d83d0`](https://github.com/inspect-js/is-core-module/commit/c2d83d0a0225a1a658945d9bab7036ea347d29ec) + +## [v2.0.0](https://github.com/inspect-js/is-core-module/compare/v1.0.2...v2.0.0) - 2020-09-29 + +### Commits + +- v2 implementation [`865aeb5`](https://github.com/inspect-js/is-core-module/commit/865aeb5ca0e90248a3dfff5d7622e4751fdeb9cd) +- Only apps should have lockfiles [`5a5e660`](https://github.com/inspect-js/is-core-module/commit/5a5e660d568e37eb44e17fb1ebb12a105205fc2b) +- Initial commit for v2 [`5a51524`](https://github.com/inspect-js/is-core-module/commit/5a51524e06f92adece5fbb138c69b7b9748a2348) +- Tests [`116eae4`](https://github.com/inspect-js/is-core-module/commit/116eae4fccd01bc72c1fd3cc4b7561c387afc496) +- [meta] add `auto-changelog` [`c24388b`](https://github.com/inspect-js/is-core-module/commit/c24388bee828d223040519d1f5b226ca35beee63) +- [actions] add "Automatic Rebase" and "require allow edits" actions [`34292db`](https://github.com/inspect-js/is-core-module/commit/34292dbcbadae0868aff03c22dbd8b7b8a11558a) +- [Tests] add `npm run lint` [`4f9eeee`](https://github.com/inspect-js/is-core-module/commit/4f9eeee7ddff10698bbf528620f4dc8d4fa3e697) +- [readme] fix travis badges, https all URLs [`e516a73`](https://github.com/inspect-js/is-core-module/commit/e516a73b0dccce20938c432b1ba512eae8eff9e9) +- [meta] create FUNDING.yml [`1aabebc`](https://github.com/inspect-js/is-core-module/commit/1aabebca98d01f8a04e46bc2e2520fa93cf21ac6) +- [Fix] `domain`: domain landed sometime > v0.7.7 and <= v0.7.12 [`2df7d37`](https://github.com/inspect-js/is-core-module/commit/2df7d37595d41b15eeada732b706b926c2771655) +- [Fix] `sys`: worked in 0.6, not 0.7, and 0.8+ [`a75c134`](https://github.com/inspect-js/is-core-module/commit/a75c134229e1e9441801f6b73f6a52489346eb65) + +## [v1.0.2](https://github.com/inspect-js/is-core-module/compare/v1.0.1...v1.0.2) - 2014-09-28 + +### Commits + +- simpler [`66fe90f`](https://github.com/inspect-js/is-core-module/commit/66fe90f9771581b9adc0c3900baa52c21b5baea2) + +## [v1.0.1](https://github.com/inspect-js/is-core-module/compare/v1.0.0...v1.0.1) - 2014-09-28 + +### Commits + +- remove stupid [`f21f906`](https://github.com/inspect-js/is-core-module/commit/f21f906f882c2bd656a5fc5ed6fbe48ddaffb2ac) +- update readme [`1eff0ec`](https://github.com/inspect-js/is-core-module/commit/1eff0ec69798d1ec65771552d1562911e90a8027) + +## v1.0.0 - 2014-09-28 + +### Commits + +- init [`48e5e76`](https://github.com/inspect-js/is-core-module/commit/48e5e76cac378fddb8c1f7d4055b8dfc943d6b96) diff --git a/node_modules/is-core-module/LICENSE b/node_modules/is-core-module/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..2e502872a742346343b1fd9d68a28d28c50ab178 --- /dev/null +++ b/node_modules/is-core-module/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Dave Justice + +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/is-core-module/README.md b/node_modules/is-core-module/README.md new file mode 100644 index 0000000000000000000000000000000000000000..062d9068eb57e8de261862eb4fd1d3b39f5afa46 --- /dev/null +++ b/node_modules/is-core-module/README.md @@ -0,0 +1,40 @@ +# is-core-module [![Version Badge][2]][1] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][5]][6] +[![dev dependency status][7]][8] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][11]][1] + +Is this specifier a node.js core module? Optionally provide a node version to check; defaults to the current node version. + +## Example + +```js +var isCore = require('is-core-module'); +var assert = require('assert'); +assert(isCore('fs')); +assert(!isCore('butts')); +``` + +## Tests +Clone the repo, `npm install`, and run `npm test` + +[1]: https://npmjs.org/package/is-core-module +[2]: https://versionbadg.es/inspect-js/is-core-module.svg +[5]: https://david-dm.org/inspect-js/is-core-module.svg +[6]: https://david-dm.org/inspect-js/is-core-module +[7]: https://david-dm.org/inspect-js/is-core-module/dev-status.svg +[8]: https://david-dm.org/inspect-js/is-core-module#info=devDependencies +[11]: https://nodei.co/npm/is-core-module.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/is-core-module.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/is-core-module.svg +[downloads-url]: https://npm-stat.com/charts.html?package=is-core-module +[codecov-image]: https://codecov.io/gh/inspect-js/is-core-module/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/is-core-module/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/is-core-module +[actions-url]: https://github.com/inspect-js/is-core-module/actions diff --git a/node_modules/is-core-module/core.json b/node_modules/is-core-module/core.json new file mode 100644 index 0000000000000000000000000000000000000000..9a51663fc5ec7c3134f1e9286e3e6ec60e62c2fb --- /dev/null +++ b/node_modules/is-core-module/core.json @@ -0,0 +1,158 @@ +{ + "assert": true, + "node:assert": [">= 14.18 && < 15", ">= 16"], + "assert/strict": ">= 15", + "node:assert/strict": ">= 16", + "async_hooks": ">= 8", + "node:async_hooks": [">= 14.18 && < 15", ">= 16"], + "buffer_ieee754": ">= 0.5 && < 0.9.7", + "buffer": true, + "node:buffer": [">= 14.18 && < 15", ">= 16"], + "child_process": true, + "node:child_process": [">= 14.18 && < 15", ">= 16"], + "cluster": ">= 0.5", + "node:cluster": [">= 14.18 && < 15", ">= 16"], + "console": true, + "node:console": [">= 14.18 && < 15", ">= 16"], + "constants": true, + "node:constants": [">= 14.18 && < 15", ">= 16"], + "crypto": true, + "node:crypto": [">= 14.18 && < 15", ">= 16"], + "_debug_agent": ">= 1 && < 8", + "_debugger": "< 8", + "dgram": true, + "node:dgram": [">= 14.18 && < 15", ">= 16"], + "diagnostics_channel": [">= 14.17 && < 15", ">= 15.1"], + "node:diagnostics_channel": [">= 14.18 && < 15", ">= 16"], + "dns": true, + "node:dns": [">= 14.18 && < 15", ">= 16"], + "dns/promises": ">= 15", + "node:dns/promises": ">= 16", + "domain": ">= 0.7.12", + "node:domain": [">= 14.18 && < 15", ">= 16"], + "events": true, + "node:events": [">= 14.18 && < 15", ">= 16"], + "freelist": "< 6", + "fs": true, + "node:fs": [">= 14.18 && < 15", ">= 16"], + "fs/promises": [">= 10 && < 10.1", ">= 14"], + "node:fs/promises": [">= 14.18 && < 15", ">= 16"], + "_http_agent": ">= 0.11.1", + "node:_http_agent": [">= 14.18 && < 15", ">= 16"], + "_http_client": ">= 0.11.1", + "node:_http_client": [">= 14.18 && < 15", ">= 16"], + "_http_common": ">= 0.11.1", + "node:_http_common": [">= 14.18 && < 15", ">= 16"], + "_http_incoming": ">= 0.11.1", + "node:_http_incoming": [">= 14.18 && < 15", ">= 16"], + "_http_outgoing": ">= 0.11.1", + "node:_http_outgoing": [">= 14.18 && < 15", ">= 16"], + "_http_server": ">= 0.11.1", + "node:_http_server": [">= 14.18 && < 15", ">= 16"], + "http": true, + "node:http": [">= 14.18 && < 15", ">= 16"], + "http2": ">= 8.8", + "node:http2": [">= 14.18 && < 15", ">= 16"], + "https": true, + "node:https": [">= 14.18 && < 15", ">= 16"], + "inspector": ">= 8", + "node:inspector": [">= 14.18 && < 15", ">= 16"], + "inspector/promises": [">= 19"], + "node:inspector/promises": [">= 19"], + "_linklist": "< 8", + "module": true, + "node:module": [">= 14.18 && < 15", ">= 16"], + "net": true, + "node:net": [">= 14.18 && < 15", ">= 16"], + "node-inspect/lib/_inspect": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_client": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_repl": ">= 7.6 && < 12", + "os": true, + "node:os": [">= 14.18 && < 15", ">= 16"], + "path": true, + "node:path": [">= 14.18 && < 15", ">= 16"], + "path/posix": ">= 15.3", + "node:path/posix": ">= 16", + "path/win32": ">= 15.3", + "node:path/win32": ">= 16", + "perf_hooks": ">= 8.5", + "node:perf_hooks": [">= 14.18 && < 15", ">= 16"], + "process": ">= 1", + "node:process": [">= 14.18 && < 15", ">= 16"], + "punycode": ">= 0.5", + "node:punycode": [">= 14.18 && < 15", ">= 16"], + "querystring": true, + "node:querystring": [">= 14.18 && < 15", ">= 16"], + "readline": true, + "node:readline": [">= 14.18 && < 15", ">= 16"], + "readline/promises": ">= 17", + "node:readline/promises": ">= 17", + "repl": true, + "node:repl": [">= 14.18 && < 15", ">= 16"], + "smalloc": ">= 0.11.5 && < 3", + "_stream_duplex": ">= 0.9.4", + "node:_stream_duplex": [">= 14.18 && < 15", ">= 16"], + "_stream_transform": ">= 0.9.4", + "node:_stream_transform": [">= 14.18 && < 15", ">= 16"], + "_stream_wrap": ">= 1.4.1", + "node:_stream_wrap": [">= 14.18 && < 15", ">= 16"], + "_stream_passthrough": ">= 0.9.4", + "node:_stream_passthrough": [">= 14.18 && < 15", ">= 16"], + "_stream_readable": ">= 0.9.4", + "node:_stream_readable": [">= 14.18 && < 15", ">= 16"], + "_stream_writable": ">= 0.9.4", + "node:_stream_writable": [">= 14.18 && < 15", ">= 16"], + "stream": true, + "node:stream": [">= 14.18 && < 15", ">= 16"], + "stream/consumers": ">= 16.7", + "node:stream/consumers": ">= 16.7", + "stream/promises": ">= 15", + "node:stream/promises": ">= 16", + "stream/web": ">= 16.5", + "node:stream/web": ">= 16.5", + "string_decoder": true, + "node:string_decoder": [">= 14.18 && < 15", ">= 16"], + "sys": [">= 0.4 && < 0.7", ">= 0.8"], + "node:sys": [">= 14.18 && < 15", ">= 16"], + "test/reporters": [">= 19.9", ">= 20"], + "node:test/reporters": [">= 19.9", ">= 20"], + "node:test": [">= 16.17 && < 17", ">= 18"], + "timers": true, + "node:timers": [">= 14.18 && < 15", ">= 16"], + "timers/promises": ">= 15", + "node:timers/promises": ">= 16", + "_tls_common": ">= 0.11.13", + "node:_tls_common": [">= 14.18 && < 15", ">= 16"], + "_tls_legacy": ">= 0.11.3 && < 10", + "_tls_wrap": ">= 0.11.3", + "node:_tls_wrap": [">= 14.18 && < 15", ">= 16"], + "tls": true, + "node:tls": [">= 14.18 && < 15", ">= 16"], + "trace_events": ">= 10", + "node:trace_events": [">= 14.18 && < 15", ">= 16"], + "tty": true, + "node:tty": [">= 14.18 && < 15", ">= 16"], + "url": true, + "node:url": [">= 14.18 && < 15", ">= 16"], + "util": true, + "node:util": [">= 14.18 && < 15", ">= 16"], + "util/types": ">= 15.3", + "node:util/types": ">= 16", + "v8/tools/arguments": ">= 10 && < 12", + "v8/tools/codemap": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/consarray": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/csvparser": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/logreader": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/profile_view": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/splaytree": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8": ">= 1", + "node:v8": [">= 14.18 && < 15", ">= 16"], + "vm": true, + "node:vm": [">= 14.18 && < 15", ">= 16"], + "wasi": [">= 13.4 && < 13.5", ">= 20"], + "node:wasi": ">= 20", + "worker_threads": ">= 11.7", + "node:worker_threads": [">= 14.18 && < 15", ">= 16"], + "zlib": ">= 0.5", + "node:zlib": [">= 14.18 && < 15", ">= 16"] +} diff --git a/node_modules/is-core-module/index.js b/node_modules/is-core-module/index.js new file mode 100644 index 0000000000000000000000000000000000000000..f9637e0e7d3ffe31f9b65d1e48e189d581305f33 --- /dev/null +++ b/node_modules/is-core-module/index.js @@ -0,0 +1,69 @@ +'use strict'; + +var has = require('has'); + +function specifierIncluded(current, specifier) { + var nodeParts = current.split('.'); + var parts = specifier.split(' '); + var op = parts.length > 1 ? parts[0] : '='; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); + + for (var i = 0; i < 3; ++i) { + var cur = parseInt(nodeParts[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; // eslint-disable-line no-restricted-syntax, no-continue + } + if (op === '<') { + return cur < ver; + } + if (op === '>=') { + return cur >= ver; + } + return false; + } + return op === '>='; +} + +function matchesRange(current, range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { + return false; + } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(current, specifiers[i])) { + return false; + } + } + return true; +} + +function versionIncluded(nodeVersion, specifierValue) { + if (typeof specifierValue === 'boolean') { + return specifierValue; + } + + var current = typeof nodeVersion === 'undefined' + ? process.versions && process.versions.node + : nodeVersion; + + if (typeof current !== 'string') { + throw new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required'); + } + + if (specifierValue && typeof specifierValue === 'object') { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(current, specifierValue[i])) { + return true; + } + } + return false; + } + return matchesRange(current, specifierValue); +} + +var data = require('./core.json'); + +module.exports = function isCore(x, nodeVersion) { + return has(data, x) && versionIncluded(nodeVersion, data[x]); +}; diff --git a/node_modules/is-core-module/package.json b/node_modules/is-core-module/package.json new file mode 100644 index 0000000000000000000000000000000000000000..715299bd8d5c3360af661daaee892ef94e6f50a9 --- /dev/null +++ b/node_modules/is-core-module/package.json @@ -0,0 +1,73 @@ +{ + "name": "is-core-module", + "version": "2.12.0", + "description": "Is this specifier a node.js core module?", + "main": "index.js", + "sideEffects": false, + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "lint": "eslint .", + "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/inspect-js/is-core-module.git" + }, + "keywords": [ + "core", + "modules", + "module", + "npm", + "node", + "dependencies" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/inspect-js/is-core-module/issues" + }, + "homepage": "https://github.com/inspect-js/is-core-module", + "dependencies": { + "has": "^1.0.3" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.0.1", + "aud": "^2.0.2", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "mock-property": "^1.0.0", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "semver": "^6.3.0", + "tape": "^5.6.3" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github" + ] + } +} diff --git a/node_modules/is-core-module/test/index.js b/node_modules/is-core-module/test/index.js new file mode 100644 index 0000000000000000000000000000000000000000..912808b9d0000f21626fb11592443266122870a5 --- /dev/null +++ b/node_modules/is-core-module/test/index.js @@ -0,0 +1,133 @@ +'use strict'; + +var test = require('tape'); +var keys = require('object-keys'); +var semver = require('semver'); +var mockProperty = require('mock-property'); + +var isCore = require('../'); +var data = require('../core.json'); + +var supportsNodePrefix = semver.satisfies(process.versions.node, '^14.18 || >= 16', { includePrerelease: true }); + +test('core modules', function (t) { + t.test('isCore()', function (st) { + st.ok(isCore('fs')); + st.ok(isCore('net')); + st.ok(isCore('http')); + + st.ok(!isCore('seq')); + st.ok(!isCore('../')); + + st.ok(!isCore('toString')); + + st.end(); + }); + + t.test('core list', function (st) { + var cores = keys(data); + st.plan(cores.length); + + for (var i = 0; i < cores.length; ++i) { + var mod = cores[i]; + var requireFunc = function () { require(mod); }; // eslint-disable-line no-loop-func + if (isCore(mod)) { + st.doesNotThrow(requireFunc, mod + ' supported; requiring does not throw'); + } else { + st['throws'](requireFunc, mod + ' not supported; requiring throws'); + } + } + + st.end(); + }); + + t.test('core via repl module', { skip: !data.repl }, function (st) { + var libs = require('repl')._builtinLibs; // eslint-disable-line no-underscore-dangle + if (!libs) { + st.skip('repl._builtinLibs does not exist'); + } else { + for (var i = 0; i < libs.length; ++i) { + var mod = libs[i]; + st.ok(data[mod], mod + ' is a core module'); + st.doesNotThrow( + function () { require(mod); }, // eslint-disable-line no-loop-func + 'requiring ' + mod + ' does not throw' + ); + if (mod.slice(0, 5) !== 'node:') { + if (supportsNodePrefix) { + st.doesNotThrow( + function () { require('node:' + mod); }, // eslint-disable-line no-loop-func + 'requiring node:' + mod + ' does not throw' + ); + } else { + st['throws']( + function () { require('node:' + mod); }, // eslint-disable-line no-loop-func + 'requiring node:' + mod + ' throws' + ); + } + } + } + } + st.end(); + }); + + t.test('core via builtinModules list', { skip: !data.module }, function (st) { + var libs = require('module').builtinModules; + if (!libs) { + st.skip('module.builtinModules does not exist'); + } else { + var excludeList = [ + '_debug_agent', + 'v8/tools/tickprocessor-driver', + 'v8/tools/SourceMap', + 'v8/tools/tickprocessor', + 'v8/tools/profile' + ]; + // see https://github.com/nodejs/node/issues/42785 + if (semver.satisfies(process.version, '>= 18')) { + libs = libs.concat('node:test'); + } + for (var i = 0; i < libs.length; ++i) { + var mod = libs[i]; + if (excludeList.indexOf(mod) === -1) { + st.ok(data[mod], mod + ' is a core module'); + st.doesNotThrow( + function () { require(mod); }, // eslint-disable-line no-loop-func + 'requiring ' + mod + ' does not throw' + ); + if (mod.slice(0, 5) !== 'node:') { + if (supportsNodePrefix) { + st.doesNotThrow( + function () { require('node:' + mod); }, // eslint-disable-line no-loop-func + 'requiring node:' + mod + ' does not throw' + ); + } else { + st['throws']( + function () { require('node:' + mod); }, // eslint-disable-line no-loop-func + 'requiring node:' + mod + ' throws' + ); + } + } + } + } + } + st.end(); + }); + + t.test('Object.prototype pollution', function (st) { + var nonKey = 'not a core module'; + st.teardown(mockProperty(Object.prototype, 'fs', { value: false })); + st.teardown(mockProperty(Object.prototype, 'path', { value: '>= 999999999' })); + st.teardown(mockProperty(Object.prototype, 'http', { value: data.http })); + st.teardown(mockProperty(Object.prototype, nonKey, { value: true })); + + st.equal(isCore('fs'), true, 'fs is a core module even if Object.prototype lies'); + st.equal(isCore('path'), true, 'path is a core module even if Object.prototype lies'); + st.equal(isCore('http'), true, 'path is a core module even if Object.prototype matches data'); + st.equal(isCore(nonKey), false, '"' + nonKey + '" is not a core module even if Object.prototype lies'); + + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/is-extglob/LICENSE b/node_modules/is-extglob/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..842218cf09a20282e926305e01162174ab371a52 --- /dev/null +++ b/node_modules/is-extglob/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2016, 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/is-extglob/README.md b/node_modules/is-extglob/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0416af5c326983f8817331b7a08f1cbbe22490e5 --- /dev/null +++ b/node_modules/is-extglob/README.md @@ -0,0 +1,107 @@ +# is-extglob [![NPM version](https://img.shields.io/npm/v/is-extglob.svg?style=flat)](https://www.npmjs.com/package/is-extglob) [![NPM downloads](https://img.shields.io/npm/dm/is-extglob.svg?style=flat)](https://npmjs.org/package/is-extglob) [![Build Status](https://img.shields.io/travis/jonschlinkert/is-extglob.svg?style=flat)](https://travis-ci.org/jonschlinkert/is-extglob) + +> Returns true if a string has an extglob. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save is-extglob +``` + +## Usage + +```js +var isExtglob = require('is-extglob'); +``` + +**True** + +```js +isExtglob('?(abc)'); +isExtglob('@(abc)'); +isExtglob('!(abc)'); +isExtglob('*(abc)'); +isExtglob('+(abc)'); +``` + +**False** + +Escaped extglobs: + +```js +isExtglob('\\?(abc)'); +isExtglob('\\@(abc)'); +isExtglob('\\!(abc)'); +isExtglob('\\*(abc)'); +isExtglob('\\+(abc)'); +``` + +Everything else... + +```js +isExtglob('foo.js'); +isExtglob('!foo.js'); +isExtglob('*.js'); +isExtglob('**/abc.js'); +isExtglob('abc/*.js'); +isExtglob('abc/(aaa|bbb).js'); +isExtglob('abc/[a-z].js'); +isExtglob('abc/{a,b}.js'); +isExtglob('abc/?.js'); +isExtglob('abc.js'); +isExtglob('abc/def/ghi.js'); +``` + +## History + +**v2.0** + +Adds support for escaping. Escaped exglobs no longer return true. + +## About + +### Related projects + +* [has-glob](https://www.npmjs.com/package/has-glob): Returns `true` if an array has a glob pattern. | [homepage](https://github.com/jonschlinkert/has-glob "Returns `true` if an array has a glob pattern.") +* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") +* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/jonschlinkert/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.") + +### Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +### Building docs + +_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ + +To generate the readme and API documentation with [verb](https://github.com/verbose/verb): + +```sh +$ npm install -g verb verb-generate-readme && verb +``` + +### Running tests + +Install dev dependencies: + +```sh +$ npm install -d && npm test +``` + +### Author + +**Jon Schlinkert** + +* [github/jonschlinkert](https://github.com/jonschlinkert) +* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) + +### License + +Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT license](https://github.com/jonschlinkert/is-extglob/blob/master/LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.1.31, on October 12, 2016._ \ No newline at end of file diff --git a/node_modules/is-extglob/index.js b/node_modules/is-extglob/index.js new file mode 100644 index 0000000000000000000000000000000000000000..c1d986fc5120301c654f87ee329241190b6e1987 --- /dev/null +++ b/node_modules/is-extglob/index.js @@ -0,0 +1,20 @@ +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ + +module.exports = function isExtglob(str) { + if (typeof str !== 'string' || str === '') { + return false; + } + + var match; + while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) { + if (match[2]) return true; + str = str.slice(match.index + match[0].length); + } + + return false; +}; diff --git a/node_modules/is-extglob/package.json b/node_modules/is-extglob/package.json new file mode 100644 index 0000000000000000000000000000000000000000..7a908369d39f558028f5345dd89b27c62d4d693c --- /dev/null +++ b/node_modules/is-extglob/package.json @@ -0,0 +1,69 @@ +{ + "name": "is-extglob", + "description": "Returns true if a string has an extglob.", + "version": "2.1.1", + "homepage": "https://github.com/jonschlinkert/is-extglob", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "repository": "jonschlinkert/is-extglob", + "bugs": { + "url": "https://github.com/jonschlinkert/is-extglob/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "devDependencies": { + "gulp-format-md": "^0.1.10", + "mocha": "^3.0.2" + }, + "keywords": [ + "bash", + "braces", + "check", + "exec", + "expression", + "extglob", + "glob", + "globbing", + "globstar", + "is", + "match", + "matches", + "pattern", + "regex", + "regular", + "string", + "test" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "related": { + "list": [ + "has-glob", + "is-glob", + "micromatch" + ] + }, + "reflinks": [ + "verb", + "verb-generate-readme" + ], + "lint": { + "reflinks": true + } + } +} diff --git a/node_modules/is-glob/LICENSE b/node_modules/is-glob/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..3f2eca18f1bc0f3117748e2cea9251e5182db2f7 --- /dev/null +++ b/node_modules/is-glob/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2017, 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/is-glob/README.md b/node_modules/is-glob/README.md new file mode 100644 index 0000000000000000000000000000000000000000..740724b276e289aec14ee6ce99d42ab9a6eb4b48 --- /dev/null +++ b/node_modules/is-glob/README.md @@ -0,0 +1,206 @@ +# is-glob [![NPM version](https://img.shields.io/npm/v/is-glob.svg?style=flat)](https://www.npmjs.com/package/is-glob) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-glob.svg?style=flat)](https://npmjs.org/package/is-glob) [![NPM total downloads](https://img.shields.io/npm/dt/is-glob.svg?style=flat)](https://npmjs.org/package/is-glob) [![Build Status](https://img.shields.io/github/workflow/status/micromatch/is-glob/dev)](https://github.com/micromatch/is-glob/actions) + +> Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a better user experience. + +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 is-glob +``` + +You might also be interested in [is-valid-glob](https://github.com/jonschlinkert/is-valid-glob) and [has-glob](https://github.com/jonschlinkert/has-glob). + +## Usage + +```js +var isGlob = require('is-glob'); +``` + +### Default behavior + +**True** + +Patterns that have glob characters or regex patterns will return `true`: + +```js +isGlob('!foo.js'); +isGlob('*.js'); +isGlob('**/abc.js'); +isGlob('abc/*.js'); +isGlob('abc/(aaa|bbb).js'); +isGlob('abc/[a-z].js'); +isGlob('abc/{a,b}.js'); +//=> true +``` + +Extglobs + +```js +isGlob('abc/@(a).js'); +isGlob('abc/!(a).js'); +isGlob('abc/+(a).js'); +isGlob('abc/*(a).js'); +isGlob('abc/?(a).js'); +//=> true +``` + +**False** + +Escaped globs or extglobs return `false`: + +```js +isGlob('abc/\\@(a).js'); +isGlob('abc/\\!(a).js'); +isGlob('abc/\\+(a).js'); +isGlob('abc/\\*(a).js'); +isGlob('abc/\\?(a).js'); +isGlob('\\!foo.js'); +isGlob('\\*.js'); +isGlob('\\*\\*/abc.js'); +isGlob('abc/\\*.js'); +isGlob('abc/\\(aaa|bbb).js'); +isGlob('abc/\\[a-z].js'); +isGlob('abc/\\{a,b}.js'); +//=> false +``` + +Patterns that do not have glob patterns return `false`: + +```js +isGlob('abc.js'); +isGlob('abc/def/ghi.js'); +isGlob('foo.js'); +isGlob('abc/@.js'); +isGlob('abc/+.js'); +isGlob('abc/?.js'); +isGlob(); +isGlob(null); +//=> false +``` + +Arrays are also `false` (If you want to check if an array has a glob pattern, use [has-glob](https://github.com/jonschlinkert/has-glob)): + +```js +isGlob(['**/*.js']); +isGlob(['foo.js']); +//=> false +``` + +### Option strict + +When `options.strict === false` the behavior is less strict in determining if a pattern is a glob. Meaning that +some patterns that would return `false` may return `true`. This is done so that matching libraries like [micromatch](https://github.com/micromatch/micromatch) have a chance at determining if the pattern is a glob or not. + +**True** + +Patterns that have glob characters or regex patterns will return `true`: + +```js +isGlob('!foo.js', {strict: false}); +isGlob('*.js', {strict: false}); +isGlob('**/abc.js', {strict: false}); +isGlob('abc/*.js', {strict: false}); +isGlob('abc/(aaa|bbb).js', {strict: false}); +isGlob('abc/[a-z].js', {strict: false}); +isGlob('abc/{a,b}.js', {strict: false}); +//=> true +``` + +Extglobs + +```js +isGlob('abc/@(a).js', {strict: false}); +isGlob('abc/!(a).js', {strict: false}); +isGlob('abc/+(a).js', {strict: false}); +isGlob('abc/*(a).js', {strict: false}); +isGlob('abc/?(a).js', {strict: false}); +//=> true +``` + +**False** + +Escaped globs or extglobs return `false`: + +```js +isGlob('\\!foo.js', {strict: false}); +isGlob('\\*.js', {strict: false}); +isGlob('\\*\\*/abc.js', {strict: false}); +isGlob('abc/\\*.js', {strict: false}); +isGlob('abc/\\(aaa|bbb).js', {strict: false}); +isGlob('abc/\\[a-z].js', {strict: false}); +isGlob('abc/\\{a,b}.js', {strict: false}); +//=> false +``` + +## 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 +``` + +
+ +### Related projects + +You might also be interested in these projects: + +* [assemble](https://www.npmjs.com/package/assemble): Get the rocks out of your socks! Assemble makes you fast at creating web projects… [more](https://github.com/assemble/assemble) | [homepage](https://github.com/assemble/assemble "Get the rocks out of your socks! Assemble makes you fast at creating web projects. Assemble is used by thousands of projects for rapid prototyping, creating themes, scaffolds, boilerplates, e-books, UI components, API documentation, blogs, building websit") +* [base](https://www.npmjs.com/package/base): Framework for rapidly creating high quality, server-side node.js applications, using plugins like building blocks | [homepage](https://github.com/node-base/base "Framework for rapidly creating high quality, server-side node.js applications, using plugins like building blocks") +* [update](https://www.npmjs.com/package/update): Be scalable! Update is a new, open source developer framework and CLI for automating updates… [more](https://github.com/update/update) | [homepage](https://github.com/update/update "Be scalable! Update is a new, open source developer framework and CLI for automating updates of any kind in code projects.") +* [verb](https://www.npmjs.com/package/verb): Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… [more](https://github.com/verbose/verb) | [homepage](https://github.com/verbose/verb "Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used on hundreds of projects of all sizes to generate everything from API docs to readmes.") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 47 | [jonschlinkert](https://github.com/jonschlinkert) | +| 5 | [doowb](https://github.com/doowb) | +| 1 | [phated](https://github.com/phated) | +| 1 | [danhper](https://github.com/danhper) | +| 1 | [paulmillr](https://github.com/paulmillr) | + +### 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 March 27, 2019._ \ No newline at end of file diff --git a/node_modules/is-glob/index.js b/node_modules/is-glob/index.js new file mode 100644 index 0000000000000000000000000000000000000000..620f563eccf081ce0d2db2dda5c9989baf778183 --- /dev/null +++ b/node_modules/is-glob/index.js @@ -0,0 +1,150 @@ +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +var isExtglob = require('is-extglob'); +var chars = { '{': '}', '(': ')', '[': ']'}; +var strictCheck = function(str) { + if (str[0] === '!') { + return true; + } + var index = 0; + var pipeIndex = -2; + var closeSquareIndex = -2; + var closeCurlyIndex = -2; + var closeParenIndex = -2; + var backSlashIndex = -2; + while (index < str.length) { + if (str[index] === '*') { + return true; + } + + if (str[index + 1] === '?' && /[\].+)]/.test(str[index])) { + return true; + } + + if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') { + if (closeSquareIndex < index) { + closeSquareIndex = str.indexOf(']', index); + } + if (closeSquareIndex > index) { + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + } + } + + if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') { + closeCurlyIndex = str.indexOf('}', index); + if (closeCurlyIndex > index) { + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { + return true; + } + } + } + + if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') { + closeParenIndex = str.indexOf(')', index); + if (closeParenIndex > index) { + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + + if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') { + if (pipeIndex < index) { + pipeIndex = str.indexOf('|', index); + } + if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') { + closeParenIndex = str.indexOf(')', pipeIndex); + if (closeParenIndex > pipeIndex) { + backSlashIndex = str.indexOf('\\', pipeIndex); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + } + + if (str[index] === '\\') { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + + if (str[index] === '!') { + return true; + } + } else { + index++; + } + } + return false; +}; + +var relaxedCheck = function(str) { + if (str[0] === '!') { + return true; + } + var index = 0; + while (index < str.length) { + if (/[*?{}()[\]]/.test(str[index])) { + return true; + } + + if (str[index] === '\\') { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + + if (str[index] === '!') { + return true; + } + } else { + index++; + } + } + return false; +}; + +module.exports = function isGlob(str, options) { + if (typeof str !== 'string' || str === '') { + return false; + } + + if (isExtglob(str)) { + return true; + } + + var check = strictCheck; + + // optionally relax check + if (options && options.strict === false) { + check = relaxedCheck; + } + + return check(str); +}; diff --git a/node_modules/is-glob/package.json b/node_modules/is-glob/package.json new file mode 100644 index 0000000000000000000000000000000000000000..858af0378e9d36813353b51271aec88ee0d3328b --- /dev/null +++ b/node_modules/is-glob/package.json @@ -0,0 +1,81 @@ +{ + "name": "is-glob", + "description": "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a better user experience.", + "version": "4.0.3", + "homepage": "https://github.com/micromatch/is-glob", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Brian Woodward (https://twitter.com/doowb)", + "Daniel Perez (https://tuvistavie.com)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)" + ], + "repository": "micromatch/is-glob", + "bugs": { + "url": "https://github.com/micromatch/is-glob/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha && node benchmark.js" + }, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "devDependencies": { + "gulp-format-md": "^0.1.10", + "mocha": "^3.0.2" + }, + "keywords": [ + "bash", + "braces", + "check", + "exec", + "expression", + "extglob", + "glob", + "globbing", + "globstar", + "is", + "match", + "matches", + "pattern", + "regex", + "regular", + "string", + "test" + ], + "verb": { + "layout": "default", + "plugins": [ + "gulp-format-md" + ], + "related": { + "list": [ + "assemble", + "base", + "update", + "verb" + ] + }, + "reflinks": [ + "assemble", + "bach", + "base", + "composer", + "gulp", + "has-glob", + "is-valid-glob", + "micromatch", + "npm", + "scaffold", + "verb", + "vinyl" + ] + } +} diff --git a/node_modules/is-number/LICENSE b/node_modules/is-number/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..9af4a67d206f24ecdbb5fdff2839041ca0bbd346 --- /dev/null +++ b/node_modules/is-number/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present, 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/is-number/README.md b/node_modules/is-number/README.md new file mode 100644 index 0000000000000000000000000000000000000000..eb8149e8cf5f148f16ba21b2d5b452e19f984696 --- /dev/null +++ b/node_modules/is-number/README.md @@ -0,0 +1,187 @@ +# is-number [![NPM version](https://img.shields.io/npm/v/is-number.svg?style=flat)](https://www.npmjs.com/package/is-number) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-number.svg?style=flat)](https://npmjs.org/package/is-number) [![NPM total downloads](https://img.shields.io/npm/dt/is-number.svg?style=flat)](https://npmjs.org/package/is-number) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-number.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-number) + +> Returns true if the value is a finite number. + +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 is-number +``` + +## Why is this needed? + +In JavaScript, it's not always as straightforward as it should be to reliably check if a value is a number. It's common for devs to use `+`, `-`, or `Number()` to cast a string value to a number (for example, when values are returned from user input, regex matches, parsers, etc). But there are many non-intuitive edge cases that yield unexpected results: + +```js +console.log(+[]); //=> 0 +console.log(+''); //=> 0 +console.log(+' '); //=> 0 +console.log(typeof NaN); //=> 'number' +``` + +This library offers a performant way to smooth out edge cases like these. + +## Usage + +```js +const isNumber = require('is-number'); +``` + +See the [tests](./test.js) for more examples. + +### true + +```js +isNumber(5e3); // true +isNumber(0xff); // true +isNumber(-1.1); // true +isNumber(0); // true +isNumber(1); // true +isNumber(1.1); // true +isNumber(10); // true +isNumber(10.10); // true +isNumber(100); // true +isNumber('-1.1'); // true +isNumber('0'); // true +isNumber('012'); // true +isNumber('0xff'); // true +isNumber('1'); // true +isNumber('1.1'); // true +isNumber('10'); // true +isNumber('10.10'); // true +isNumber('100'); // true +isNumber('5e3'); // true +isNumber(parseInt('012')); // true +isNumber(parseFloat('012')); // true +``` + +### False + +Everything else is false, as you would expect: + +```js +isNumber(Infinity); // false +isNumber(NaN); // false +isNumber(null); // false +isNumber(undefined); // false +isNumber(''); // false +isNumber(' '); // false +isNumber('foo'); // false +isNumber([1]); // false +isNumber([]); // false +isNumber(function () {}); // false +isNumber({}); // false +``` + +## Release history + +### 7.0.0 + +* Refactor. Now uses `.isFinite` if it exists. +* Performance is about the same as v6.0 when the value is a string or number. But it's now 3x-4x faster when the value is not a string or number. + +### 6.0.0 + +* Optimizations, thanks to @benaadams. + +### 5.0.0 + +**Breaking changes** + +* removed support for `instanceof Number` and `instanceof String` + +## Benchmarks + +As with all benchmarks, take these with a grain of salt. See the [benchmarks](./benchmark/index.js) for more detail. + +``` +# all +v7.0 x 413,222 ops/sec ±2.02% (86 runs sampled) +v6.0 x 111,061 ops/sec ±1.29% (85 runs sampled) +parseFloat x 317,596 ops/sec ±1.36% (86 runs sampled) +fastest is 'v7.0' + +# string +v7.0 x 3,054,496 ops/sec ±1.05% (89 runs sampled) +v6.0 x 2,957,781 ops/sec ±0.98% (88 runs sampled) +parseFloat x 3,071,060 ops/sec ±1.13% (88 runs sampled) +fastest is 'parseFloat,v7.0' + +# number +v7.0 x 3,146,895 ops/sec ±0.89% (89 runs sampled) +v6.0 x 3,214,038 ops/sec ±1.07% (89 runs sampled) +parseFloat x 3,077,588 ops/sec ±1.07% (87 runs sampled) +fastest is 'v6.0' +``` + +## 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 +``` + +
+ +### Related projects + +You might also be interested in these projects: + +* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") +* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") +* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") +* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 49 | [jonschlinkert](https://github.com/jonschlinkert) | +| 5 | [charlike-old](https://github.com/charlike-old) | +| 1 | [benaadams](https://github.com/benaadams) | +| 1 | [realityking](https://github.com/realityking) | + +### Author + +**Jon Schlinkert** + +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) + +### License + +Copyright © 2018, [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.6.0, on June 15, 2018._ \ No newline at end of file diff --git a/node_modules/is-number/index.js b/node_modules/is-number/index.js new file mode 100644 index 0000000000000000000000000000000000000000..27f19b757f7c1186b92c405a213bf0dd9b6cbe95 --- /dev/null +++ b/node_modules/is-number/index.js @@ -0,0 +1,18 @@ +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ + +'use strict'; + +module.exports = function(num) { + if (typeof num === 'number') { + return num - num === 0; + } + if (typeof num === 'string' && num.trim() !== '') { + return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); + } + return false; +}; diff --git a/node_modules/is-number/package.json b/node_modules/is-number/package.json new file mode 100644 index 0000000000000000000000000000000000000000..3715072609d61a010bff7116331b71f04206af96 --- /dev/null +++ b/node_modules/is-number/package.json @@ -0,0 +1,82 @@ +{ + "name": "is-number", + "description": "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.", + "version": "7.0.0", + "homepage": "https://github.com/jonschlinkert/is-number", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Olsten Larck (https://i.am.charlike.online)", + "Rouven Weßling (www.rouvenwessling.de)" + ], + "repository": "jonschlinkert/is-number", + "bugs": { + "url": "https://github.com/jonschlinkert/is-number/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.12.0" + }, + "scripts": { + "test": "mocha" + }, + "devDependencies": { + "ansi": "^0.3.1", + "benchmark": "^2.1.4", + "gulp-format-md": "^1.0.0", + "mocha": "^3.5.3" + }, + "keywords": [ + "cast", + "check", + "coerce", + "coercion", + "finite", + "integer", + "is", + "isnan", + "is-nan", + "is-num", + "is-number", + "isnumber", + "isfinite", + "istype", + "kind", + "math", + "nan", + "num", + "number", + "numeric", + "parseFloat", + "parseInt", + "test", + "type", + "typeof", + "value" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "related": { + "list": [ + "is-plain-object", + "is-primitive", + "isobject", + "kind-of" + ] + }, + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + } + } +} diff --git a/node_modules/jiti/LICENSE b/node_modules/jiti/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..e739abce461d8b2899aaec6529a4af24a417e0fc --- /dev/null +++ b/node_modules/jiti/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Pooya Parsa + +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/jiti/README.md b/node_modules/jiti/README.md new file mode 100644 index 0000000000000000000000000000000000000000..14710c1a183266dbb7bd48a5fdd05a00d8170209 --- /dev/null +++ b/node_modules/jiti/README.md @@ -0,0 +1,152 @@ +# jiti + +> Runtime typescript and ESM support for Node.js + +[![version][npm-v-src]][npm-v-href] +[![downloads][npm-d-src]][npm-d-href] +[![size][size-src]][size-href] + +## Features + +- Seamless typescript and ESM syntax support +- Seamless interoperability between ESM and CommonJS +- Synchronous API to replace `require` +- Super slim and zero dependency +- Smart syntax detection to avoid extra transforms +- CommonJS cache integration +- Filesystem transpile hard cache +- V8 compile cache +- Custom resolve alias + +## Usage + +### Programmatic + +```js +const jiti = require("jiti")(__filename); + +jiti("./path/to/file.ts"); +``` + +You can also pass options as second argument: + +```js +const jiti = require("jiti")(__filename, { debug: true }); +``` + +### CLI + +```bash +jiti index.ts +# or npx jiti index.ts +``` + +### Register require hook + +```bash +node -r jiti/register index.ts +``` + +Alternatively, you can register `jiti` as a require hook programmatically: + +```js +const jiti = require("jiti")(); +const unregister = jiti.register(); +``` + +## Options + +### `debug` + +- Type: Boolean +- Default: `false` +- Environment Variable: `JITI_DEBUG` + +Enable debug to see which files are transpiled + +### `cache` + +- Type: Boolean | String +- Default: `true` +- Environment Variable: `JITI_CACHE` + +Use transpile cache + +If set to `true` will use `node_modules/.cache/jiti` (if exists) or `{TMP_DIR}/node-jiti` + +### `esmResolve` + +- Type: Boolean | String +- Default: `false` +- Environment Variable: `JITI_ESM_RESOLVE` + +Using esm resolution algorithm to support `import` condition. + +### `transform` + +- Type: Function +- Default: Babel (lazy loaded) + +Transform function. See [src/babel](./src/babel.ts) for more details + +### `sourceMaps` + +- Type: Boolean +- Default `false` +- Environment Variable: `JITI_SOURCE_MAPS` + +Add inline source map to transformed source for better debugging. + +### `interopDefault` + +- Type: Boolean +- Default: `false` + +Return the `.default` export of a module at the top-level. + +### `alias` + +- Type: Object +- Default: - +- Environment Variable: `JITI_ALIAS` + +Custom alias map used to resolve ids. + +### `nativeModules` + +- Type: Array +- Default: ['typescript`] +- Environment Variable: `JITI_NATIVE_MODULES` + +List of modules (within `node_modules`) to always use native require for them. + +### `transformModules` + +- Type: Array +- Default: [] +- Environment Variable: `JITI_TRANSFORM_MODULES` + +List of modules (within `node_modules`) to transform them regardless of syntax. + +## Development + +- Clone this repository +- Enable [Corepack](https://github.com/nodejs/corepack) using `corepack enable` +- Install dependencies using `pnpm install` +- Run `pnpm dev` +- Run `pnpm jiti ./test/path/to/file.ts` + +## License + +MIT. Made with 💖 + + + +[npm-v-src]: https://img.shields.io/npm/v/jiti?style=flat-square +[npm-v-href]: https://npmjs.com/package/jiti +[npm-d-src]: https://img.shields.io/npm/dm/jiti?style=flat-square +[npm-d-href]: https://npmjs.com/package/jiti +[github-actions-src]: https://img.shields.io/github/workflow/status/unjs/jiti/ci/master?style=flat-square +[github-actions-href]: https://github.com/unjs/jiti/actions?query=workflow%3Aci +[size-src]: https://packagephobia.now.sh/badge?p=jiti +[size-href]: https://packagephobia.now.sh/result?p=jiti diff --git a/node_modules/jiti/bin/jiti.js b/node_modules/jiti/bin/jiti.js new file mode 100755 index 0000000000000000000000000000000000000000..af44c47d9079940f94ac03c359dee5fd6a6a08e4 --- /dev/null +++ b/node_modules/jiti/bin/jiti.js @@ -0,0 +1,16 @@ +#!/usr/bin/env node + +const { resolve } = require("path"); + +const script = process.argv.splice(2, 1)[0]; + +if (!script) { + // eslint-disable-next-line no-console + console.error("Usage: jiti [...arguments]"); + process.exit(1); +} + +const pwd = process.cwd(); +const jiti = require("..")(pwd); +const resolved = (process.argv[1] = jiti.resolve(resolve(pwd, script))); +jiti(resolved); diff --git a/node_modules/jiti/package.json b/node_modules/jiti/package.json new file mode 100644 index 0000000000000000000000000000000000000000..1f259b1a2771943c8ff440c0633a59f4431b676c --- /dev/null +++ b/node_modules/jiti/package.json @@ -0,0 +1,80 @@ +{ + "name": "jiti", + "version": "1.18.2", + "description": "Runtime typescript and ESM support for Node.js", + "repository": "unjs/jiti", + "license": "MIT", + "main": "./lib/index.js", + "types": "dist/jiti.d.ts", + "bin": "bin/jiti.js", + "files": [ + "lib", + "dist", + "register.js" + ], + "scripts": { + "build": "pnpm clean && cross-env NODE_ENV=production pnpm webpack", + "clean": "rm -rf dist", + "dev": "pnpm clean && pnpm webpack --watch", + "jiti": "cross-env JITI_DEBUG=1 JITI_CACHE=false JITI_REQUIRE_CACHE=false ./bin/jiti.js", + "jiti:legacy": "cross-env JITI_DEBUG=1 npx node@12 ./bin/jiti.js", + "lint": "eslint --ext .ts,.js . && prettier -c src lib test stubs", + "release": "pnpm build && pnpm test && changelogen --release --push && npm publish", + "test": "pnpm lint && vitest run --coverage" + }, + "devDependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-proposal-decorators": "^7.21.0", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.21.0", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-transform-modules-commonjs": "^7.21.2", + "@babel/plugin-transform-typescript": "^7.21.3", + "@babel/preset-typescript": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.3", + "@types/babel__core": "^7.20.0", + "@types/babel__template": "^7.4.1", + "@types/node": "^18.15.3", + "@types/object-hash": "^3.0.2", + "@types/resolve": "^1.20.2", + "@types/semver": "^7.3.13", + "@vitest/coverage-c8": "^0.29.2", + "acorn": "^8.8.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "babel-plugin-parameter-decorator": "^1.0.16", + "babel-plugin-transform-typescript-metadata": "^0.3.2", + "changelogen": "^0.5.1", + "config": "^3.3.9", + "create-require": "^1.1.1", + "cross-env": "^7.0.3", + "destr": "^1.2.2", + "escape-string-regexp": "^5.0.0", + "eslint": "^8.36.0", + "eslint-config-unjs": "^0.1.0", + "esm": "^3.2.25", + "estree-walker": "^3.0.3", + "execa": "^7.1.1", + "fast-glob": "^3.2.12", + "mlly": "^1.2.0", + "object-hash": "^3.0.0", + "pathe": "^1.1.0", + "pirates": "^4.0.5", + "pkg-types": "^1.0.2", + "prettier": "^2.8.4", + "reflect-metadata": "^0.1.13", + "semver": "^7.3.8", + "std-env": "^3.3.2", + "terser-webpack-plugin": "^5.3.7", + "ts-loader": "^9.4.2", + "tslib": "^2.5.0", + "typescript": "^4.9.5", + "vite": "^4.1.4", + "vitest": "^0.29.2", + "webpack": "^5.76.1", + "webpack-cli": "^5.0.1" + }, + "packageManager": "pnpm@7.29.3" +} diff --git a/node_modules/jiti/register.js b/node_modules/jiti/register.js new file mode 100644 index 0000000000000000000000000000000000000000..60aaeb3d093efabb555a35c66169aebf407a162e --- /dev/null +++ b/node_modules/jiti/register.js @@ -0,0 +1,3 @@ +const jiti = require(".")(); + +jiti.register(); diff --git a/node_modules/lilconfig/LICENSE b/node_modules/lilconfig/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..fd866f4bb497067f7e859e04d7cde0388ce61b66 --- /dev/null +++ b/node_modules/lilconfig/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Anton Kastritskiy + +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/lilconfig/package.json b/node_modules/lilconfig/package.json new file mode 100644 index 0000000000000000000000000000000000000000..8e06d1f888944fc876fa58746ea7f9f18c9c8fbd --- /dev/null +++ b/node_modules/lilconfig/package.json @@ -0,0 +1,48 @@ +{ + "name": "lilconfig", + "version": "2.1.0", + "description": "A zero-dependency alternative to cosmiconfig", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "prebuild": "npm run clean", + "build": "tsc --declaration", + "postbuild": "du -h ./dist/*", + "clean": "rm -rf ./dist", + "test": "jest --coverage", + "lint": "eslint ./src/*.ts" + }, + "keywords": [ + "cosmiconfig", + "config", + "configuration", + "search" + ], + "files": [ + "dist/*" + ], + "repository": { + "type": "git", + "url": "https://github.com/antonk52/lilconfig" + }, + "bugs": "https://github.com/antonk52/lilconfig/issues", + "author": "antonk52", + "license": "MIT", + "devDependencies": { + "@types/jest": "^27.0.2", + "@types/node": "^14.18.36", + "@typescript-eslint/eslint-plugin": "^5.54.0", + "@typescript-eslint/parser": "^5.54.0", + "cosmiconfig": "^7.1.0", + "eslint": "^8.35.0", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-prettier": "^4.2.1", + "jest": "^27.3.1", + "prettier": "^2.8.4", + "ts-jest": "27.0.7", + "typescript": "4.4.4" + }, + "engines": { + "node": ">=10" + } +} diff --git a/node_modules/lilconfig/readme.md b/node_modules/lilconfig/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..7b6610dc526bb61abb9737406897ced1c9693339 --- /dev/null +++ b/node_modules/lilconfig/readme.md @@ -0,0 +1,118 @@ +# Lilconfig ⚙️ +[![npm version](https://badge.fury.io/js/lilconfig.svg)](https://badge.fury.io/js/lilconfig) +[![install size](https://packagephobia.now.sh/badge?p=lilconfig)](https://packagephobia.now.sh/result?p=lilconfig) +[![Coverage Status](https://coveralls.io/repos/github/antonk52/lilconfig/badge.svg)](https://coveralls.io/github/antonk52/lilconfig) + +A zero-dependency alternative to [cosmiconfig](https://www.npmjs.com/package/cosmiconfig) with the same API. + +## Installation + +```sh +npm install lilconfig +``` + +## Usage + +```js +import {lilconfig, lilconfigSync} from 'lilconfig'; + +// all keys are optional +const options = { + stopDir: '/Users/you/some/dir', + searchPlaces: ['package.json', 'myapp.conf.js'], + ignoreEmptySearchPlaces: false +} + +lilconfig( + 'myapp', + options // optional +).search() // Promise + +lilconfigSync( + 'myapp', + options // optional +).load(pathToConfig) // LilconfigResult + +/** + * LilconfigResult + * { + * config: any; // your config + * filepath: string; + * } + */ +``` + +## Difference to `cosmiconfig` +Lilconfig does not intend to be 100% compatible with `cosmiconfig` but tries to mimic it where possible. The key differences are: +- **no** support for yaml files out of the box(`lilconfig` attempts to parse files with no extension as JSON instead of YAML). You can still add the support for YAML files by providing a loader, see an [example](#yaml-loader) below. +- **no** cache + +### Options difference between the two. + +|cosmiconfig option | lilconfig | +|------------------------|-----------| +|cache | ❌ | +|loaders | ✅ | +|ignoreEmptySearchPlaces | ✅ | +|packageProp | ✅ | +|searchPlaces | ✅ | +|stopDir | ✅ | +|transform | ✅ | + +## Loaders examples + +### Yaml loader + +If you need the YAML support you can provide your own loader + +```js +import {lilconfig} from 'lilconfig'; +import yaml from 'yaml'; + +function loadYaml(filepath, content) { + return yaml.parse(content); +} + +const options = { + loaders: { + '.yaml': loadYaml, + '.yml': loadYaml, + // loader for files with no extension + noExt: loadYaml + } +}; + +lilconfig('myapp', options) + .search() + .then(result => { + result // {config, filepath} + }); +``` + +### ESM loader + +Lilconfig v2 does not support ESM modules out of the box. However, you can support it with a custom a loader. Note that this will only work with the async `lilconfig` function and won't work with the sync `lilconfigSync`. + +```js +import {lilconfig} from 'lilconfig'; + +const loadEsm = filepath => import(filepath); + +lilconfig('myapp', { + loaders: { + '.js': loadEsm, + '.mjs': loadEsm, + } +}) + .search() + .then(result => { + result // {config, filepath} + + result.config.default // if config uses `export default` + }); +``` + +## Version correlation + +- lilconig v1 → cosmiconfig v6 +- lilconig v2 → cosmiconfig v7 diff --git a/node_modules/lines-and-columns/LICENSE b/node_modules/lines-and-columns/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..12978ece65c197143115c3b06534b6a47dd9c6fd --- /dev/null +++ b/node_modules/lines-and-columns/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Brian Donovan + +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/lines-and-columns/README.md b/node_modules/lines-and-columns/README.md new file mode 100644 index 0000000000000000000000000000000000000000..fa902237ca9e2bf5fb540f31ff26036f3b5fc6f9 --- /dev/null +++ b/node_modules/lines-and-columns/README.md @@ -0,0 +1,33 @@ +# lines-and-columns + +Maps lines and columns to character offsets and back. This is useful for parsers +and other text processors that deal in character ranges but process text with +meaningful lines and columns. + +## Install + +``` +$ npm install [--save] lines-and-columns +``` + +## Usage + +```js +import { LinesAndColumns } from 'lines-and-columns' + +const lines = new LinesAndColumns( + `table { + border: 0 +}` +) + +lines.locationForIndex(9) +// { line: 1, column: 1 } + +lines.indexForLocation({ line: 1, column: 2 }) +// 10 +``` + +## License + +MIT diff --git a/node_modules/lines-and-columns/package.json b/node_modules/lines-and-columns/package.json new file mode 100644 index 0000000000000000000000000000000000000000..a12eb6bf3b0b9574edaaf0722337d40065160947 --- /dev/null +++ b/node_modules/lines-and-columns/package.json @@ -0,0 +1,49 @@ +{ + "name": "lines-and-columns", + "version": "1.2.4", + "description": "Maps lines and columns to character offsets and back.", + "keywords": [ + "lines", + "columns", + "parser" + ], + "homepage": "https://github.com/eventualbuddha/lines-and-columns#readme", + "bugs": { + "url": "https://github.com/eventualbuddha/lines-and-columns/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/eventualbuddha/lines-and-columns.git" + }, + "license": "MIT", + "author": "Brian Donovan ", + "main": "./build/index.js", + "types": "./build/index.d.ts", + "files": [ + "build" + ], + "scripts": { + "build:watch": "tsc --build tsconfig.build.json --watch", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "is-ci test:coverage test:watch", + "test:coverage": "jest --coverage", + "test:watch": "jest --watch" + }, + "devDependencies": { + "@types/jest": "^27.0.3", + "@types/node": "^16.11.9", + "@typescript-eslint/eslint-plugin": "^5.4.0", + "@typescript-eslint/parser": "^5.4.0", + "esbuild": "^0.13.15", + "esbuild-runner": "^2.2.1", + "eslint": "^8.2.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0", + "is-ci-cli": "^2.2.0", + "jest": "^27.3.1", + "prettier": "^2.4.1", + "semantic-release": "^18.0.0", + "typescript": "^4.5.2" + } +} diff --git a/node_modules/merge2/LICENSE b/node_modules/merge2/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..31dd9c722739b8facf4c9c8935ffb1cda06b8c84 --- /dev/null +++ b/node_modules/merge2/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2020 Teambition + +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/merge2/README.md b/node_modules/merge2/README.md new file mode 100644 index 0000000000000000000000000000000000000000..27f8eb99a4d4130da2486130c1205021d47d90c0 --- /dev/null +++ b/node_modules/merge2/README.md @@ -0,0 +1,144 @@ +# merge2 + +Merge multiple streams into one stream in sequence or parallel. + +[![NPM version][npm-image]][npm-url] +[![Build Status][travis-image]][travis-url] +[![Downloads][downloads-image]][downloads-url] + +## Install + +Install with [npm](https://npmjs.org/package/merge2) + +```sh +npm install merge2 +``` + +## Usage + +```js +const gulp = require('gulp') +const merge2 = require('merge2') +const concat = require('gulp-concat') +const minifyHtml = require('gulp-minify-html') +const ngtemplate = require('gulp-ngtemplate') + +gulp.task('app-js', function () { + return merge2( + gulp.src('static/src/tpl/*.html') + .pipe(minifyHtml({empty: true})) + .pipe(ngtemplate({ + module: 'genTemplates', + standalone: true + }) + ), gulp.src([ + 'static/src/js/app.js', + 'static/src/js/locale_zh-cn.js', + 'static/src/js/router.js', + 'static/src/js/tools.js', + 'static/src/js/services.js', + 'static/src/js/filters.js', + 'static/src/js/directives.js', + 'static/src/js/controllers.js' + ]) + ) + .pipe(concat('app.js')) + .pipe(gulp.dest('static/dist/js/')) +}) +``` + +```js +const stream = merge2([stream1, stream2], stream3, {end: false}) +//... +stream.add(stream4, stream5) +//.. +stream.end() +``` + +```js +// equal to merge2([stream1, stream2], stream3) +const stream = merge2() +stream.add([stream1, stream2]) +stream.add(stream3) +``` + +```js +// merge order: +// 1. merge `stream1`; +// 2. merge `stream2` and `stream3` in parallel after `stream1` merged; +// 3. merge 'stream4' after `stream2` and `stream3` merged; +const stream = merge2(stream1, [stream2, stream3], stream4) + +// merge order: +// 1. merge `stream5` and `stream6` in parallel after `stream4` merged; +// 2. merge 'stream7' after `stream5` and `stream6` merged; +stream.add([stream5, stream6], stream7) +``` + +```js +// nest merge +// equal to merge2(stream1, stream2, stream6, stream3, [stream4, stream5]); +const streamA = merge2(stream1, stream2) +const streamB = merge2(stream3, [stream4, stream5]) +const stream = merge2(streamA, streamB) +streamA.add(stream6) +``` + +## API + +```js +const merge2 = require('merge2') +``` + +### merge2() + +### merge2(options) + +### merge2(stream1, stream2, ..., streamN) + +### merge2(stream1, stream2, ..., streamN, options) + +### merge2(stream1, [stream2, stream3, ...], streamN, options) + +return a duplex stream (mergedStream). streams in array will be merged in parallel. + +### mergedStream.add(stream) + +### mergedStream.add(stream1, [stream2, stream3, ...], ...) + +return the mergedStream. + +### mergedStream.on('queueDrain', function() {}) + +It will emit 'queueDrain' when all streams merged. If you set `end === false` in options, this event give you a notice that should add more streams to merge or end the mergedStream. + +#### stream + +*option* +Type: `Readable` or `Duplex` or `Transform` stream. + +#### options + +*option* +Type: `Object`. + +* **end** - `Boolean` - if `end === false` then mergedStream will not be auto ended, you should end by yourself. **Default:** `undefined` + +* **pipeError** - `Boolean` - if `pipeError === true` then mergedStream will emit `error` event from source streams. **Default:** `undefined` + +* **objectMode** - `Boolean` . **Default:** `true` + +`objectMode` and other options(`highWaterMark`, `defaultEncoding` ...) is same as Node.js `Stream`. + +## License + +MIT © [Teambition](https://www.teambition.com) + +[npm-url]: https://npmjs.org/package/merge2 +[npm-image]: http://img.shields.io/npm/v/merge2.svg + +[travis-url]: https://travis-ci.org/teambition/merge2 +[travis-image]: http://img.shields.io/travis/teambition/merge2.svg + +[downloads-url]: https://npmjs.org/package/merge2 +[downloads-image]: http://img.shields.io/npm/dm/merge2.svg?style=flat-square diff --git a/node_modules/merge2/index.js b/node_modules/merge2/index.js new file mode 100644 index 0000000000000000000000000000000000000000..78a61edf0b2eef538732c89dbced53c82010a191 --- /dev/null +++ b/node_modules/merge2/index.js @@ -0,0 +1,144 @@ +'use strict' +/* + * merge2 + * https://github.com/teambition/merge2 + * + * Copyright (c) 2014-2020 Teambition + * Licensed under the MIT license. + */ +const Stream = require('stream') +const PassThrough = Stream.PassThrough +const slice = Array.prototype.slice + +module.exports = merge2 + +function merge2 () { + const streamsQueue = [] + const args = slice.call(arguments) + let merging = false + let options = args[args.length - 1] + + if (options && !Array.isArray(options) && options.pipe == null) { + args.pop() + } else { + options = {} + } + + const doEnd = options.end !== false + const doPipeError = options.pipeError === true + if (options.objectMode == null) { + options.objectMode = true + } + if (options.highWaterMark == null) { + options.highWaterMark = 64 * 1024 + } + const mergedStream = PassThrough(options) + + function addStream () { + for (let i = 0, len = arguments.length; i < len; i++) { + streamsQueue.push(pauseStreams(arguments[i], options)) + } + mergeStream() + return this + } + + function mergeStream () { + if (merging) { + return + } + merging = true + + let streams = streamsQueue.shift() + if (!streams) { + process.nextTick(endStream) + return + } + if (!Array.isArray(streams)) { + streams = [streams] + } + + let pipesCount = streams.length + 1 + + function next () { + if (--pipesCount > 0) { + return + } + merging = false + mergeStream() + } + + function pipe (stream) { + function onend () { + stream.removeListener('merge2UnpipeEnd', onend) + stream.removeListener('end', onend) + if (doPipeError) { + stream.removeListener('error', onerror) + } + next() + } + function onerror (err) { + mergedStream.emit('error', err) + } + // skip ended stream + if (stream._readableState.endEmitted) { + return next() + } + + stream.on('merge2UnpipeEnd', onend) + stream.on('end', onend) + + if (doPipeError) { + stream.on('error', onerror) + } + + stream.pipe(mergedStream, { end: false }) + // compatible for old stream + stream.resume() + } + + for (let i = 0; i < streams.length; i++) { + pipe(streams[i]) + } + + next() + } + + function endStream () { + merging = false + // emit 'queueDrain' when all streams merged. + mergedStream.emit('queueDrain') + if (doEnd) { + mergedStream.end() + } + } + + mergedStream.setMaxListeners(0) + mergedStream.add = addStream + mergedStream.on('unpipe', function (stream) { + stream.emit('merge2UnpipeEnd') + }) + + if (args.length) { + addStream.apply(null, args) + } + return mergedStream +} + +// check and pause streams for pipe. +function pauseStreams (streams, options) { + if (!Array.isArray(streams)) { + // Backwards-compat with old-style streams + if (!streams._readableState && streams.pipe) { + streams = streams.pipe(PassThrough(options)) + } + if (!streams._readableState || !streams.pause || !streams.pipe) { + throw new Error('Only readable stream can be merged.') + } + streams.pause() + } else { + for (let i = 0, len = streams.length; i < len; i++) { + streams[i] = pauseStreams(streams[i], options) + } + } + return streams +} diff --git a/node_modules/merge2/package.json b/node_modules/merge2/package.json new file mode 100644 index 0000000000000000000000000000000000000000..7777307fdece5a62d1e4a956dfaefdad78b4efa2 --- /dev/null +++ b/node_modules/merge2/package.json @@ -0,0 +1,43 @@ +{ + "name": "merge2", + "description": "Merge multiple streams into one stream in sequence or parallel.", + "authors": [ + "Yan Qing " + ], + "license": "MIT", + "version": "1.4.1", + "main": "./index.js", + "repository": { + "type": "git", + "url": "git@github.com:teambition/merge2.git" + }, + "homepage": "https://github.com/teambition/merge2", + "keywords": [ + "merge2", + "multiple", + "sequence", + "parallel", + "merge", + "stream", + "merge stream", + "sync" + ], + "engines": { + "node": ">= 8" + }, + "dependencies": {}, + "devDependencies": { + "standard": "^14.3.4", + "through2": "^3.0.1", + "thunks": "^4.9.6", + "tman": "^1.10.0", + "to-through": "^2.0.0" + }, + "scripts": { + "test": "standard && tman" + }, + "files": [ + "README.md", + "index.js" + ] +} diff --git a/node_modules/micromatch/LICENSE b/node_modules/micromatch/LICENSE new file mode 100755 index 0000000000000000000000000000000000000000..9af4a67d206f24ecdbb5fdff2839041ca0bbd346 --- /dev/null +++ b/node_modules/micromatch/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present, 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/micromatch/README.md b/node_modules/micromatch/README.md new file mode 100644 index 0000000000000000000000000000000000000000..fd563365c926e2a1bdaa1f6832cf950f786a4f46 --- /dev/null +++ b/node_modules/micromatch/README.md @@ -0,0 +1,1011 @@ +# micromatch [![NPM version](https://img.shields.io/npm/v/micromatch.svg?style=flat)](https://www.npmjs.com/package/micromatch) [![NPM monthly downloads](https://img.shields.io/npm/dm/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![NPM total downloads](https://img.shields.io/npm/dt/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![Tests](https://github.com/micromatch/micromatch/actions/workflows/test.yml/badge.svg)](https://github.com/micromatch/micromatch/actions/workflows/test.yml) + +> Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Table of Contents + +
+Details + +- [Install](#install) +- [Quickstart](#quickstart) +- [Why use micromatch?](#why-use-micromatch) + * [Matching features](#matching-features) +- [Switching to micromatch](#switching-to-micromatch) + * [From minimatch](#from-minimatch) + * [From multimatch](#from-multimatch) +- [API](#api) +- [Options](#options) +- [Options Examples](#options-examples) + * [options.basename](#optionsbasename) + * [options.bash](#optionsbash) + * [options.expandRange](#optionsexpandrange) + * [options.format](#optionsformat) + * [options.ignore](#optionsignore) + * [options.matchBase](#optionsmatchbase) + * [options.noextglob](#optionsnoextglob) + * [options.nonegate](#optionsnonegate) + * [options.noglobstar](#optionsnoglobstar) + * [options.nonull](#optionsnonull) + * [options.nullglob](#optionsnullglob) + * [options.onIgnore](#optionsonignore) + * [options.onMatch](#optionsonmatch) + * [options.onResult](#optionsonresult) + * [options.posixSlashes](#optionsposixslashes) + * [options.unescape](#optionsunescape) +- [Extended globbing](#extended-globbing) + * [Extglobs](#extglobs) + * [Braces](#braces) + * [Regex character classes](#regex-character-classes) + * [Regex groups](#regex-groups) + * [POSIX bracket expressions](#posix-bracket-expressions) +- [Notes](#notes) + * [Bash 4.3 parity](#bash-43-parity) + * [Backslashes](#backslashes) +- [Benchmarks](#benchmarks) + * [Running benchmarks](#running-benchmarks) + * [Latest results](#latest-results) +- [Contributing](#contributing) +- [About](#about) + +
+ +## Install + +Install with [npm](https://www.npmjs.com/) (requires [Node.js](https://nodejs.org/en/) >=8.6): + +```sh +$ npm install --save micromatch +``` + +## Quickstart + +```js +const micromatch = require('micromatch'); +// micromatch(list, patterns[, options]); +``` + +The [main export](#micromatch) takes a list of strings and one or more glob patterns: + +```js +console.log(micromatch(['foo', 'bar', 'baz', 'qux'], ['f*', 'b*'])) //=> ['foo', 'bar', 'baz'] +console.log(micromatch(['foo', 'bar', 'baz', 'qux'], ['*', '!b*'])) //=> ['foo', 'qux'] +``` + +Use [.isMatch()](#ismatch) to for boolean matching: + +```js +console.log(micromatch.isMatch('foo', 'f*')) //=> true +console.log(micromatch.isMatch('foo', ['b*', 'f*'])) //=> true +``` + +[Switching](#switching-to-micromatch) from minimatch and multimatch is easy! + +
+ +## Why use micromatch? + +> micromatch is a [replacement](#switching-to-micromatch) for minimatch and multimatch + +* Supports all of the same matching features as [minimatch](https://github.com/isaacs/minimatch) and [multimatch](https://github.com/sindresorhus/multimatch) +* More complete support for the Bash 4.3 specification than minimatch and multimatch. Micromatch passes _all of the spec tests_ from bash, including some that bash still fails. +* **Fast & Performant** - Loads in about 5ms and performs [fast matches](#benchmarks). +* **Glob matching** - Using wildcards (`*` and `?`), globstars (`**`) for nested directories +* **[Advanced globbing](#extended-globbing)** - Supports [extglobs](#extglobs), [braces](#braces-1), and [POSIX brackets](#posix-bracket-expressions), and support for escaping special characters with `\` or quotes. +* **Accurate** - Covers more scenarios [than minimatch](https://github.com/yarnpkg/yarn/pull/3339) +* **Well tested** - More than 5,000 [test assertions](./test) +* **Windows support** - More reliable windows support than minimatch and multimatch. +* **[Safe](https://github.com/micromatch/braces#braces-is-safe)** - Micromatch is not subject to DoS with brace patterns like minimatch and multimatch. + +### Matching features + +* Support for multiple glob patterns (no need for wrappers like multimatch) +* Wildcards (`**`, `*.js`) +* Negation (`'!a/*.js'`, `'*!(b).js'`) +* [extglobs](#extglobs) (`+(x|y)`, `!(a|b)`) +* [POSIX character classes](#posix-bracket-expressions) (`[[:alpha:][:digit:]]`) +* [brace expansion](https://github.com/micromatch/braces) (`foo/{1..5}.md`, `bar/{a,b,c}.js`) +* regex character classes (`foo-[1-5].js`) +* regex logical "or" (`foo/(abc|xyz).js`) + +You can mix and match these features to create whatever patterns you need! + +## Switching to micromatch + +_(There is one notable difference between micromatch and minimatch in regards to how backslashes are handled. See [the notes about backslashes](#backslashes) for more information.)_ + +### From minimatch + +Use [micromatch.isMatch()](#ismatch) instead of `minimatch()`: + +```js +console.log(micromatch.isMatch('foo', 'b*')); //=> false +``` + +Use [micromatch.match()](#match) instead of `minimatch.match()`: + +```js +console.log(micromatch.match(['foo', 'bar'], 'b*')); //=> 'bar' +``` + +### From multimatch + +Same signature: + +```js +console.log(micromatch(['foo', 'bar', 'baz'], ['f*', '*z'])); //=> ['foo', 'baz'] +``` + +## API + +**Params** + +* `list` **{String|Array}**: List of strings to match. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) +* `returns` **{Array}**: Returns an array of matches + +**Example** + +```js +const mm = require('micromatch'); +// mm(list, patterns[, options]); + +console.log(mm(['a.js', 'a.txt'], ['*.js'])); +//=> [ 'a.js' ] +``` + +### [.matcher](index.js#L104) + +Returns a matcher function from the given glob `pattern` and `options`. The returned function takes a string to match as its only argument and returns true if the string is a match. + +**Params** + +* `pattern` **{String}**: Glob pattern +* `options` **{Object}** +* `returns` **{Function}**: Returns a matcher function. + +**Example** + +```js +const mm = require('micromatch'); +// mm.matcher(pattern[, options]); + +const isMatch = mm.matcher('*.!(*a)'); +console.log(isMatch('a.a')); //=> false +console.log(isMatch('a.b')); //=> true +``` + +### [.isMatch](index.js#L123) + +Returns true if **any** of the given glob `patterns` match the specified `string`. + +**Params** + +* `str` **{String}**: The string to test. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `[options]` **{Object}**: See available [options](#options). +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const mm = require('micromatch'); +// mm.isMatch(string, patterns[, options]); + +console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true +console.log(mm.isMatch('a.a', 'b.*')); //=> false +``` + +### [.not](index.js#L148) + +Returns a list of strings that _**do not match any**_ of the given `patterns`. + +**Params** + +* `list` **{Array}**: Array of strings to match. +* `patterns` **{String|Array}**: One or more glob pattern to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Array}**: Returns an array of strings that **do not match** the given patterns. + +**Example** + +```js +const mm = require('micromatch'); +// mm.not(list, patterns[, options]); + +console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); +//=> ['b.b', 'c.c'] +``` + +### [.contains](index.js#L188) + +Returns true if the given `string` contains the given pattern. Similar to [.isMatch](#isMatch) but the pattern can match any part of the string. + +**Params** + +* `str` **{String}**: The string to match. +* `patterns` **{String|Array}**: Glob pattern to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if any of the patterns matches any part of `str`. + +**Example** + +```js +var mm = require('micromatch'); +// mm.contains(string, pattern[, options]); + +console.log(mm.contains('aa/bb/cc', '*b')); +//=> true +console.log(mm.contains('aa/bb/cc', '*d')); +//=> false +``` + +### [.matchKeys](index.js#L230) + +Filter the keys of the given object with the given `glob` pattern and `options`. Does not attempt to match nested keys. If you need this feature, use [glob-object](https://github.com/jonschlinkert/glob-object) instead. + +**Params** + +* `object` **{Object}**: The object with keys to filter. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Object}**: Returns an object with only keys that match the given patterns. + +**Example** + +```js +const mm = require('micromatch'); +// mm.matchKeys(object, patterns[, options]); + +const obj = { aa: 'a', ab: 'b', ac: 'c' }; +console.log(mm.matchKeys(obj, '*b')); +//=> { ab: 'b' } +``` + +### [.some](index.js#L259) + +Returns true if some of the strings in the given `list` match any of the given glob `patterns`. + +**Params** + +* `list` **{String|Array}**: The string or array of strings to test. Returns as soon as the first match is found. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if any `patterns` matches any of the strings in `list` + +**Example** + +```js +const mm = require('micromatch'); +// mm.some(list, patterns[, options]); + +console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); +// true +console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); +// false +``` + +### [.every](index.js#L295) + +Returns true if every string in the given `list` matches any of the given glob `patterns`. + +**Params** + +* `list` **{String|Array}**: The string or array of strings to test. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if all `patterns` matches all of the strings in `list` + +**Example** + +```js +const mm = require('micromatch'); +// mm.every(list, patterns[, options]); + +console.log(mm.every('foo.js', ['foo.js'])); +// true +console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); +// true +console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); +// false +console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); +// false +``` + +### [.all](index.js#L334) + +Returns true if **all** of the given `patterns` match the specified string. + +**Params** + +* `str` **{String|Array}**: The string to test. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const mm = require('micromatch'); +// mm.all(string, patterns[, options]); + +console.log(mm.all('foo.js', ['foo.js'])); +// true + +console.log(mm.all('foo.js', ['*.js', '!foo.js'])); +// false + +console.log(mm.all('foo.js', ['*.js', 'foo.js'])); +// true + +console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); +// true +``` + +### [.capture](index.js#L361) + +Returns an array of matches captured by `pattern` in `string, or`null` if the pattern did not match. + +**Params** + +* `glob` **{String}**: Glob pattern to use for matching. +* `input` **{String}**: String to match +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Array|null}**: Returns an array of captures if the input matches the glob pattern, otherwise `null`. + +**Example** + +```js +const mm = require('micromatch'); +// mm.capture(pattern, string[, options]); + +console.log(mm.capture('test/*.js', 'test/foo.js')); +//=> ['foo'] +console.log(mm.capture('test/*.js', 'foo/bar.css')); +//=> null +``` + +### [.makeRe](index.js#L387) + +Create a regular expression from the given glob `pattern`. + +**Params** + +* `pattern` **{String}**: A glob pattern to convert to regex. +* `options` **{Object}** +* `returns` **{RegExp}**: Returns a regex created from the given pattern. + +**Example** + +```js +const mm = require('micromatch'); +// mm.makeRe(pattern[, options]); + +console.log(mm.makeRe('*.js')); +//=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ +``` + +### [.scan](index.js#L403) + +Scan a glob pattern to separate the pattern into segments. Used by the [split](#split) method. + +**Params** + +* `pattern` **{String}** +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with + +**Example** + +```js +const mm = require('micromatch'); +const state = mm.scan(pattern[, options]); +``` + +### [.parse](index.js#L419) + +Parse a glob pattern to create the source string for a regular expression. + +**Params** + +* `glob` **{String}** +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with useful properties and output to be used as regex source string. + +**Example** + +```js +const mm = require('micromatch'); +const state = mm.parse(pattern[, options]); +``` + +### [.braces](index.js#L446) + +Process the given brace `pattern`. + +**Params** + +* `pattern` **{String}**: String with brace pattern to process. +* `options` **{Object}**: Any [options](#options) to change how expansion is performed. See the [braces](https://github.com/micromatch/braces) library for all available options. +* `returns` **{Array}** + +**Example** + +```js +const { braces } = require('micromatch'); +console.log(braces('foo/{a,b,c}/bar')); +//=> [ 'foo/(a|b|c)/bar' ] + +console.log(braces('foo/{a,b,c}/bar', { expand: true })); +//=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ] +``` + +## Options + +| **Option** | **Type** | **Default value** | **Description** | +| --- | --- | --- | --- | +| `basename` | `boolean` | `false` | If set, then patterns without slashes will be matched against the basename of the path if it contains slashes. For example, `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. | +| `bash` | `boolean` | `false` | Follow bash matching rules more strictly - disallows backslashes as escape characters, and treats single stars as globstars (`**`). | +| `capture` | `boolean` | `undefined` | Return regex matches in supporting methods. | +| `contains` | `boolean` | `undefined` | Allows glob to match any part of the given string(s). | +| `cwd` | `string` | `process.cwd()` | Current working directory. Used by `picomatch.split()` | +| `debug` | `boolean` | `undefined` | Debug regular expressions when an error is thrown. | +| `dot` | `boolean` | `false` | Match dotfiles. Otherwise dotfiles are ignored unless a `.` is explicitly defined in the pattern. | +| `expandRange` | `function` | `undefined` | Custom function for expanding ranges in brace patterns, such as `{a..z}`. The function receives the range values as two arguments, and it must return a string to be used in the generated regex. It's recommended that returned strings be wrapped in parentheses. This option is overridden by the `expandBrace` option. | +| `failglob` | `boolean` | `false` | Similar to the `failglob` behavior in Bash, throws an error when no matches are found. Based on the bash option of the same name. | +| `fastpaths` | `boolean` | `true` | To speed up processing, full parsing is skipped for a handful common glob patterns. Disable this behavior by setting this option to `false`. | +| `flags` | `boolean` | `undefined` | Regex flags to use in the generated regex. If defined, the `nocase` option will be overridden. | +| [format](#optionsformat) | `function` | `undefined` | Custom function for formatting the returned string. This is useful for removing leading slashes, converting Windows paths to Posix paths, etc. | +| `ignore` | `array\|string` | `undefined` | One or more glob patterns for excluding strings that should not be matched from the result. | +| `keepQuotes` | `boolean` | `false` | Retain quotes in the generated regex, since quotes may also be used as an alternative to backslashes. | +| `literalBrackets` | `boolean` | `undefined` | When `true`, brackets in the glob pattern will be escaped so that only literal brackets will be matched. | +| `lookbehinds` | `boolean` | `true` | Support regex positive and negative lookbehinds. Note that you must be using Node 8.1.10 or higher to enable regex lookbehinds. | +| `matchBase` | `boolean` | `false` | Alias for `basename` | +| `maxLength` | `boolean` | `65536` | Limit the max length of the input string. An error is thrown if the input string is longer than this value. | +| `nobrace` | `boolean` | `false` | Disable brace matching, so that `{a,b}` and `{1..3}` would be treated as literal characters. | +| `nobracket` | `boolean` | `undefined` | Disable matching with regex brackets. | +| `nocase` | `boolean` | `false` | Perform case-insensitive matching. Equivalent to the regex `i` flag. Note that this option is ignored when the `flags` option is defined. | +| `nodupes` | `boolean` | `true` | Deprecated, use `nounique` instead. This option will be removed in a future major release. By default duplicates are removed. Disable uniquification by setting this option to false. | +| `noext` | `boolean` | `false` | Alias for `noextglob` | +| `noextglob` | `boolean` | `false` | Disable support for matching with [extglobs](#extglobs) (like `+(a\|b)`) | +| `noglobstar` | `boolean` | `false` | Disable support for matching nested directories with globstars (`**`) | +| `nonegate` | `boolean` | `false` | Disable support for negating with leading `!` | +| `noquantifiers` | `boolean` | `false` | Disable support for regex quantifiers (like `a{1,2}`) and treat them as brace patterns to be expanded. | +| [onIgnore](#optionsonIgnore) | `function` | `undefined` | Function to be called on ignored items. | +| [onMatch](#optionsonMatch) | `function` | `undefined` | Function to be called on matched items. | +| [onResult](#optionsonResult) | `function` | `undefined` | Function to be called on all items, regardless of whether or not they are matched or ignored. | +| `posix` | `boolean` | `false` | Support [POSIX character classes](#posix-bracket-expressions) ("posix brackets"). | +| `posixSlashes` | `boolean` | `undefined` | Convert all slashes in file paths to forward slashes. This does not convert slashes in the glob pattern itself | +| `prepend` | `string` | `undefined` | String to prepend to the generated regex used for matching. | +| `regex` | `boolean` | `false` | Use regular expression rules for `+` (instead of matching literal `+`), and for stars that follow closing parentheses or brackets (as in `)*` and `]*`). | +| `strictBrackets` | `boolean` | `undefined` | Throw an error if brackets, braces, or parens are imbalanced. | +| `strictSlashes` | `boolean` | `undefined` | When true, picomatch won't match trailing slashes with single stars. | +| `unescape` | `boolean` | `undefined` | Remove preceding backslashes from escaped glob characters before creating the regular expression to perform matches. | +| `unixify` | `boolean` | `undefined` | Alias for `posixSlashes`, for backwards compatitibility. | + +## Options Examples + +### options.basename + +Allow glob patterns without slashes to match a file path based on its basename. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `matchBase`. + +**Type**: `Boolean` + +**Default**: `false` + +**Example** + +```js +micromatch(['a/b.js', 'a/c.md'], '*.js'); +//=> [] + +micromatch(['a/b.js', 'a/c.md'], '*.js', { basename: true }); +//=> ['a/b.js'] +``` + +### options.bash + +Enabled by default, this option enforces bash-like behavior with stars immediately following a bracket expression. Bash bracket expressions are similar to regex character classes, but unlike regex, a star following a bracket expression **does not repeat the bracketed characters**. Instead, the star is treated the same as any other star. + +**Type**: `Boolean` + +**Default**: `true` + +**Example** + +```js +const files = ['abc', 'ajz']; +console.log(micromatch(files, '[a-c]*')); +//=> ['abc', 'ajz'] + +console.log(micromatch(files, '[a-c]*', { bash: false })); +``` + +### options.expandRange + +**Type**: `function` + +**Default**: `undefined` + +Custom function for expanding ranges in brace patterns. The [fill-range](https://github.com/jonschlinkert/fill-range) library is ideal for this purpose, or you can use custom code to do whatever you need. + +**Example** + +The following example shows how to create a glob that matches a numeric folder name between `01` and `25`, with leading zeros. + +```js +const fill = require('fill-range'); +const regex = micromatch.makeRe('foo/{01..25}/bar', { + expandRange(a, b) { + return `(${fill(a, b, { toRegex: true })})`; + } +}); + +console.log(regex) +//=> /^(?:foo\/((?:0[1-9]|1[0-9]|2[0-5]))\/bar)$/ + +console.log(regex.test('foo/00/bar')) // false +console.log(regex.test('foo/01/bar')) // true +console.log(regex.test('foo/10/bar')) // true +console.log(regex.test('foo/22/bar')) // true +console.log(regex.test('foo/25/bar')) // true +console.log(regex.test('foo/26/bar')) // false +``` + +### options.format + +**Type**: `function` + +**Default**: `undefined` + +Custom function for formatting strings before they're matched. + +**Example** + +```js +// strip leading './' from strings +const format = str => str.replace(/^\.\//, ''); +const isMatch = picomatch('foo/*.js', { format }); +console.log(isMatch('./foo/bar.js')) //=> true +``` + +### options.ignore + +String or array of glob patterns to match files to ignore. + +**Type**: `String|Array` + +**Default**: `undefined` + +```js +const isMatch = micromatch.matcher('*', { ignore: 'f*' }); +console.log(isMatch('foo')) //=> false +console.log(isMatch('bar')) //=> true +console.log(isMatch('baz')) //=> true +``` + +### options.matchBase + +Alias for [options.basename](#options-basename). + +### options.noextglob + +Disable extglob support, so that [extglobs](#extglobs) are regarded as literal characters. + +**Type**: `Boolean` + +**Default**: `undefined` + +**Examples** + +```js +console.log(micromatch(['a/z', 'a/b', 'a/!(z)'], 'a/!(z)')); +//=> ['a/b', 'a/!(z)'] + +console.log(micromatch(['a/z', 'a/b', 'a/!(z)'], 'a/!(z)', { noextglob: true })); +//=> ['a/!(z)'] (matches only as literal characters) +``` + +### options.nonegate + +Disallow negation (`!`) patterns, and treat leading `!` as a literal character to match. + +**Type**: `Boolean` + +**Default**: `undefined` + +### options.noglobstar + +Disable matching with globstars (`**`). + +**Type**: `Boolean` + +**Default**: `undefined` + +```js +micromatch(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**'); +//=> ['a/b', 'a/b/c', 'a/b/c/d'] + +micromatch(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**', {noglobstar: true}); +//=> ['a/b'] +``` + +### options.nonull + +Alias for [options.nullglob](#options-nullglob). + +### options.nullglob + +If `true`, when no matches are found the actual (arrayified) glob pattern is returned instead of an empty array. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `nonull`. + +**Type**: `Boolean` + +**Default**: `undefined` + +### options.onIgnore + +```js +const onIgnore = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); + // { glob: '*', regex: /^(?:(?!\.)(?=.)[^\/]*?\/?)$/, input: 'foo', output: 'foo' } +}; + +const isMatch = micromatch.matcher('*', { onIgnore, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +### options.onMatch + +```js +const onMatch = ({ glob, regex, input, output }) => { + console.log({ input, output }); + // { input: 'some\\path', output: 'some/path' } + // { input: 'some\\path', output: 'some/path' } + // { input: 'some\\path', output: 'some/path' } +}; + +const isMatch = micromatch.matcher('**', { onMatch, posixSlashes: true }); +isMatch('some\\path'); +isMatch('some\\path'); +isMatch('some\\path'); +``` + +### options.onResult + +```js +const onResult = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = micromatch('*', { onResult, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +### options.posixSlashes + +Convert path separators on returned files to posix/unix-style forward slashes. Aliased as `unixify` for backwards compatibility. + +**Type**: `Boolean` + +**Default**: `true` on windows, `false` everywhere else. + +**Example** + +```js +console.log(micromatch.match(['a\\b\\c'], 'a/**')); +//=> ['a/b/c'] + +console.log(micromatch.match(['a\\b\\c'], { posixSlashes: false })); +//=> ['a\\b\\c'] +``` + +### options.unescape + +Remove backslashes from escaped glob characters before creating the regular expression to perform matches. + +**Type**: `Boolean` + +**Default**: `undefined` + +**Example** + +In this example we want to match a literal `*`: + +```js +console.log(micromatch.match(['abc', 'a\\*c'], 'a\\*c')); +//=> ['a\\*c'] + +console.log(micromatch.match(['abc', 'a\\*c'], 'a\\*c', { unescape: true })); +//=> ['a*c'] +``` + +
+
+ +## Extended globbing + +Micromatch supports the following extended globbing features. + +### Extglobs + +Extended globbing, as described by the bash man page: + +| **pattern** | **regex equivalent** | **description** | +| --- | --- | --- | +| `?(pattern)` | `(pattern)?` | Matches zero or one occurrence of the given patterns | +| `*(pattern)` | `(pattern)*` | Matches zero or more occurrences of the given patterns | +| `+(pattern)` | `(pattern)+` | Matches one or more occurrences of the given patterns | +| `@(pattern)` | `(pattern)` * | Matches one of the given patterns | +| `!(pattern)` | N/A (equivalent regex is much more complicated) | Matches anything except one of the given patterns | + +* Note that `@` isn't a regex character. + +### Braces + +Brace patterns can be used to match specific ranges or sets of characters. + +**Example** + +The pattern `{f,b}*/{1..3}/{b,q}*` would match any of following strings: + +``` +foo/1/bar +foo/2/bar +foo/3/bar +baz/1/qux +baz/2/qux +baz/3/qux +``` + +Visit [braces](https://github.com/micromatch/braces) to see the full range of features and options related to brace expansion, or to create brace matching or expansion related issues. + +### Regex character classes + +Given the list: `['a.js', 'b.js', 'c.js', 'd.js', 'E.js']`: + +* `[ac].js`: matches both `a` and `c`, returning `['a.js', 'c.js']` +* `[b-d].js`: matches from `b` to `d`, returning `['b.js', 'c.js', 'd.js']` +* `a/[A-Z].js`: matches and uppercase letter, returning `['a/E.md']` + +Learn about [regex character classes](http://www.regular-expressions.info/charclass.html). + +### Regex groups + +Given `['a.js', 'b.js', 'c.js', 'd.js', 'E.js']`: + +* `(a|c).js`: would match either `a` or `c`, returning `['a.js', 'c.js']` +* `(b|d).js`: would match either `b` or `d`, returning `['b.js', 'd.js']` +* `(b|[A-Z]).js`: would match either `b` or an uppercase letter, returning `['b.js', 'E.js']` + +As with regex, parens can be nested, so patterns like `((a|b)|c)/b` will work. Although brace expansion might be friendlier to use, depending on preference. + +### POSIX bracket expressions + +POSIX brackets are intended to be more user-friendly than regex character classes. This of course is in the eye of the beholder. + +**Example** + +```js +console.log(micromatch.isMatch('a1', '[[:alpha:][:digit:]]')) //=> true +console.log(micromatch.isMatch('a1', '[[:alpha:][:alpha:]]')) //=> false +``` + +*** + +## Notes + +### Bash 4.3 parity + +Whenever possible matching behavior is based on behavior Bash 4.3, which is mostly consistent with minimatch. + +However, it's suprising how many edge cases and rabbit holes there are with glob matching, and since there is no real glob specification, and micromatch is more accurate than both Bash and minimatch, there are cases where best-guesses were made for behavior. In a few cases where Bash had no answers, we used wildmatch (used by git) as a fallback. + +### Backslashes + +There is an important, notable difference between minimatch and micromatch _in regards to how backslashes are handled_ in glob patterns. + +* Micromatch exclusively and explicitly reserves backslashes for escaping characters in a glob pattern, even on windows, which is consistent with bash behavior. _More importantly, unescaping globs can result in unsafe regular expressions_. +* Minimatch converts all backslashes to forward slashes, which means you can't use backslashes to escape any characters in your glob patterns. + +We made this decision for micromatch for a couple of reasons: + +* Consistency with bash conventions. +* Glob patterns are not filepaths. They are a type of [regular language](https://en.wikipedia.org/wiki/Regular_language) that is converted to a JavaScript regular expression. Thus, when forward slashes are defined in a glob pattern, the resulting regular expression will match windows or POSIX path separators just fine. + +**A note about joining paths to globs** + +Note that when you pass something like `path.join('foo', '*')` to micromatch, you are creating a filepath and expecting it to still work as a glob pattern. This causes problems on windows, since the `path.sep` is `\\`. + +In other words, since `\\` is reserved as an escape character in globs, on windows `path.join('foo', '*')` would result in `foo\\*`, which tells micromatch to match `*` as a literal character. This is the same behavior as bash. + +To solve this, you might be inspired to do something like `'foo\\*'.replace(/\\/g, '/')`, but this causes another, potentially much more serious, problem. + +## Benchmarks + +### Running benchmarks + +Install dependencies for running benchmarks: + +```sh +$ cd bench && npm install +``` + +Run the benchmarks: + +```sh +$ npm run bench +``` + +### Latest results + +As of March 24, 2022 (longer bars are better): + +```sh +# .makeRe star + micromatch x 2,232,802 ops/sec ±2.34% (89 runs sampled)) + minimatch x 781,018 ops/sec ±6.74% (92 runs sampled)) + +# .makeRe star; dot=true + micromatch x 1,863,453 ops/sec ±0.74% (93 runs sampled) + minimatch x 723,105 ops/sec ±0.75% (93 runs sampled) + +# .makeRe globstar + micromatch x 1,624,179 ops/sec ±2.22% (91 runs sampled) + minimatch x 1,117,230 ops/sec ±2.78% (86 runs sampled)) + +# .makeRe globstars + micromatch x 1,658,642 ops/sec ±0.86% (92 runs sampled) + minimatch x 741,224 ops/sec ±1.24% (89 runs sampled)) + +# .makeRe with leading star + micromatch x 1,525,014 ops/sec ±1.63% (90 runs sampled) + minimatch x 561,074 ops/sec ±3.07% (89 runs sampled) + +# .makeRe - braces + micromatch x 172,478 ops/sec ±2.37% (78 runs sampled) + minimatch x 96,087 ops/sec ±2.34% (88 runs sampled))) + +# .makeRe braces - range (expanded) + micromatch x 26,973 ops/sec ±0.84% (89 runs sampled) + minimatch x 3,023 ops/sec ±0.99% (90 runs sampled)) + +# .makeRe braces - range (compiled) + micromatch x 152,892 ops/sec ±1.67% (83 runs sampled) + minimatch x 992 ops/sec ±3.50% (89 runs sampled)d)) + +# .makeRe braces - nested ranges (expanded) + micromatch x 15,816 ops/sec ±13.05% (80 runs sampled) + minimatch x 2,953 ops/sec ±1.64% (91 runs sampled) + +# .makeRe braces - nested ranges (compiled) + micromatch x 110,881 ops/sec ±1.85% (82 runs sampled) + minimatch x 1,008 ops/sec ±1.51% (91 runs sampled) + +# .makeRe braces - set (compiled) + micromatch x 134,930 ops/sec ±3.54% (63 runs sampled)) + minimatch x 43,242 ops/sec ±0.60% (93 runs sampled) + +# .makeRe braces - nested sets (compiled) + micromatch x 94,455 ops/sec ±1.74% (69 runs sampled)) + minimatch x 27,720 ops/sec ±1.84% (93 runs sampled)) +``` + +## Contributing + +All contributions are welcome! Please read [the contributing guide](.github/contributing.md) to get started. + +**Bug reports** + +Please create an issue if you encounter a bug or matching behavior that doesn't seem correct. If you find a matching-related issue, please: + +* [research existing issues first](../../issues) (open and closed) +* visit the [GNU Bash documentation](https://www.gnu.org/software/bash/manual/) to see how Bash deals with the pattern +* visit the [minimatch](https://github.com/isaacs/minimatch) documentation to cross-check expected behavior in node.js +* if all else fails, since there is no real specification for globs we will probably need to discuss expected behavior and decide how to resolve it. which means any detail you can provide to help with this discussion would be greatly appreciated. + +**Platform issues** + +It's important to us that micromatch work consistently on all platforms. If you encounter any platform-specific matching or path related issues, please let us know (pull requests are also greatly appreciated). + +## About + +
+Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. + +
+ +
+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 +``` + +
+ +### Related projects + +You might also be interested in these projects: + +* [braces](https://www.npmjs.com/package/braces): Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support… [more](https://github.com/micromatch/braces) | [homepage](https://github.com/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.") +* [expand-brackets](https://www.npmjs.com/package/expand-brackets): Expand POSIX bracket expressions (character classes) in glob patterns. | [homepage](https://github.com/micromatch/expand-brackets "Expand POSIX bracket expressions (character classes) in glob patterns.") +* [extglob](https://www.npmjs.com/package/extglob): Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob… [more](https://github.com/micromatch/extglob) | [homepage](https://github.com/micromatch/extglob "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.") +* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`") +* [nanomatch](https://www.npmjs.com/package/nanomatch): Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash… [more](https://github.com/micromatch/nanomatch) | [homepage](https://github.com/micromatch/nanomatch "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 512 | [jonschlinkert](https://github.com/jonschlinkert) | +| 12 | [es128](https://github.com/es128) | +| 9 | [danez](https://github.com/danez) | +| 8 | [doowb](https://github.com/doowb) | +| 6 | [paulmillr](https://github.com/paulmillr) | +| 5 | [mrmlnc](https://github.com/mrmlnc) | +| 3 | [DrPizza](https://github.com/DrPizza) | +| 2 | [TrySound](https://github.com/TrySound) | +| 2 | [mceIdo](https://github.com/mceIdo) | +| 2 | [Glazy](https://github.com/Glazy) | +| 2 | [MartinKolarik](https://github.com/MartinKolarik) | +| 2 | [antonyk](https://github.com/antonyk) | +| 2 | [Tvrqvoise](https://github.com/Tvrqvoise) | +| 1 | [amilajack](https://github.com/amilajack) | +| 1 | [Cslove](https://github.com/Cslove) | +| 1 | [devongovett](https://github.com/devongovett) | +| 1 | [DianeLooney](https://github.com/DianeLooney) | +| 1 | [UltCombo](https://github.com/UltCombo) | +| 1 | [frangio](https://github.com/frangio) | +| 1 | [joyceerhl](https://github.com/joyceerhl) | +| 1 | [juszczykjakub](https://github.com/juszczykjakub) | +| 1 | [muescha](https://github.com/muescha) | +| 1 | [sebdeckers](https://github.com/sebdeckers) | +| 1 | [tomByrer](https://github.com/tomByrer) | +| 1 | [fidian](https://github.com/fidian) | +| 1 | [curbengh](https://github.com/curbengh) | +| 1 | [simlu](https://github.com/simlu) | +| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | +| 1 | [yvele](https://github.com/yvele) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2022, [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 March 24, 2022._ \ No newline at end of file diff --git a/node_modules/micromatch/index.js b/node_modules/micromatch/index.js new file mode 100644 index 0000000000000000000000000000000000000000..1fad7f72450de64016c76e70173b4e3a37ab103d --- /dev/null +++ b/node_modules/micromatch/index.js @@ -0,0 +1,467 @@ +'use strict'; + +const util = require('util'); +const braces = require('braces'); +const picomatch = require('picomatch'); +const utils = require('picomatch/lib/utils'); +const isEmptyString = val => val === '' || val === './'; + +/** + * Returns an array of strings that match one or more glob patterns. + * + * ```js + * const mm = require('micromatch'); + * // mm(list, patterns[, options]); + * + * console.log(mm(['a.js', 'a.txt'], ['*.js'])); + * //=> [ 'a.js' ] + * ``` + * @param {String|Array} `list` List of strings to match. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) + * @return {Array} Returns an array of matches + * @summary false + * @api public + */ + +const micromatch = (list, patterns, options) => { + patterns = [].concat(patterns); + list = [].concat(list); + + let omit = new Set(); + let keep = new Set(); + let items = new Set(); + let negatives = 0; + + let onResult = state => { + items.add(state.output); + if (options && options.onResult) { + options.onResult(state); + } + }; + + for (let i = 0; i < patterns.length; i++) { + let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); + let negated = isMatch.state.negated || isMatch.state.negatedExtglob; + if (negated) negatives++; + + for (let item of list) { + let matched = isMatch(item, true); + + let match = negated ? !matched.isMatch : matched.isMatch; + if (!match) continue; + + if (negated) { + omit.add(matched.output); + } else { + omit.delete(matched.output); + keep.add(matched.output); + } + } + } + + let result = negatives === patterns.length ? [...items] : [...keep]; + let matches = result.filter(item => !omit.has(item)); + + if (options && matches.length === 0) { + if (options.failglob === true) { + throw new Error(`No matches found for "${patterns.join(', ')}"`); + } + + if (options.nonull === true || options.nullglob === true) { + return options.unescape ? patterns.map(p => p.replace(/\\/g, '')) : patterns; + } + } + + return matches; +}; + +/** + * Backwards compatibility + */ + +micromatch.match = micromatch; + +/** + * Returns a matcher function from the given glob `pattern` and `options`. + * The returned function takes a string to match as its only argument and returns + * true if the string is a match. + * + * ```js + * const mm = require('micromatch'); + * // mm.matcher(pattern[, options]); + * + * const isMatch = mm.matcher('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true + * ``` + * @param {String} `pattern` Glob pattern + * @param {Object} `options` + * @return {Function} Returns a matcher function. + * @api public + */ + +micromatch.matcher = (pattern, options) => picomatch(pattern, options); + +/** + * Returns true if **any** of the given glob `patterns` match the specified `string`. + * + * ```js + * const mm = require('micromatch'); + * // mm.isMatch(string, patterns[, options]); + * + * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(mm.isMatch('a.a', 'b.*')); //=> false + * ``` + * @param {String} `str` The string to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `[options]` See available [options](#options). + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + +/** + * Backwards compatibility + */ + +micromatch.any = micromatch.isMatch; + +/** + * Returns a list of strings that _**do not match any**_ of the given `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.not(list, patterns[, options]); + * + * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); + * //=> ['b.b', 'c.c'] + * ``` + * @param {Array} `list` Array of strings to match. + * @param {String|Array} `patterns` One or more glob pattern to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Array} Returns an array of strings that **do not match** the given patterns. + * @api public + */ + +micromatch.not = (list, patterns, options = {}) => { + patterns = [].concat(patterns).map(String); + let result = new Set(); + let items = []; + + let onResult = state => { + if (options.onResult) options.onResult(state); + items.push(state.output); + }; + + let matches = new Set(micromatch(list, patterns, { ...options, onResult })); + + for (let item of items) { + if (!matches.has(item)) { + result.add(item); + } + } + return [...result]; +}; + +/** + * Returns true if the given `string` contains the given pattern. Similar + * to [.isMatch](#isMatch) but the pattern can match any part of the string. + * + * ```js + * var mm = require('micromatch'); + * // mm.contains(string, pattern[, options]); + * + * console.log(mm.contains('aa/bb/cc', '*b')); + * //=> true + * console.log(mm.contains('aa/bb/cc', '*d')); + * //=> false + * ``` + * @param {String} `str` The string to match. + * @param {String|Array} `patterns` Glob pattern to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any of the patterns matches any part of `str`. + * @api public + */ + +micromatch.contains = (str, pattern, options) => { + if (typeof str !== 'string') { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + } + + if (Array.isArray(pattern)) { + return pattern.some(p => micromatch.contains(str, p, options)); + } + + if (typeof pattern === 'string') { + if (isEmptyString(str) || isEmptyString(pattern)) { + return false; + } + + if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) { + return true; + } + } + + return micromatch.isMatch(str, pattern, { ...options, contains: true }); +}; + +/** + * Filter the keys of the given object with the given `glob` pattern + * and `options`. Does not attempt to match nested keys. If you need this feature, + * use [glob-object][] instead. + * + * ```js + * const mm = require('micromatch'); + * // mm.matchKeys(object, patterns[, options]); + * + * const obj = { aa: 'a', ab: 'b', ac: 'c' }; + * console.log(mm.matchKeys(obj, '*b')); + * //=> { ab: 'b' } + * ``` + * @param {Object} `object` The object with keys to filter. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Object} Returns an object with only keys that match the given patterns. + * @api public + */ + +micromatch.matchKeys = (obj, patterns, options) => { + if (!utils.isObject(obj)) { + throw new TypeError('Expected the first argument to be an object'); + } + let keys = micromatch(Object.keys(obj), patterns, options); + let res = {}; + for (let key of keys) res[key] = obj[key]; + return res; +}; + +/** + * Returns true if some of the strings in the given `list` match any of the given glob `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.some(list, patterns[, options]); + * + * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); + * // true + * console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); + * // false + * ``` + * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list` + * @api public + */ + +micromatch.some = (list, patterns, options) => { + let items = [].concat(list); + + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (items.some(item => isMatch(item))) { + return true; + } + } + return false; +}; + +/** + * Returns true if every string in the given `list` matches + * any of the given glob `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.every(list, patterns[, options]); + * + * console.log(mm.every('foo.js', ['foo.js'])); + * // true + * console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); + * // true + * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); + * // false + * console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); + * // false + * ``` + * @param {String|Array} `list` The string or array of strings to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list` + * @api public + */ + +micromatch.every = (list, patterns, options) => { + let items = [].concat(list); + + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (!items.every(item => isMatch(item))) { + return false; + } + } + return true; +}; + +/** + * Returns true if **all** of the given `patterns` match + * the specified string. + * + * ```js + * const mm = require('micromatch'); + * // mm.all(string, patterns[, options]); + * + * console.log(mm.all('foo.js', ['foo.js'])); + * // true + * + * console.log(mm.all('foo.js', ['*.js', '!foo.js'])); + * // false + * + * console.log(mm.all('foo.js', ['*.js', 'foo.js'])); + * // true + * + * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); + * // true + * ``` + * @param {String|Array} `str` The string to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +micromatch.all = (str, patterns, options) => { + if (typeof str !== 'string') { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + } + + return [].concat(patterns).every(p => picomatch(p, options)(str)); +}; + +/** + * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match. + * + * ```js + * const mm = require('micromatch'); + * // mm.capture(pattern, string[, options]); + * + * console.log(mm.capture('test/*.js', 'test/foo.js')); + * //=> ['foo'] + * console.log(mm.capture('test/*.js', 'foo/bar.css')); + * //=> null + * ``` + * @param {String} `glob` Glob pattern to use for matching. + * @param {String} `input` String to match + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`. + * @api public + */ + +micromatch.capture = (glob, input, options) => { + let posix = utils.isWindows(options); + let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); + let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); + + if (match) { + return match.slice(1).map(v => v === void 0 ? '' : v); + } +}; + +/** + * Create a regular expression from the given glob `pattern`. + * + * ```js + * const mm = require('micromatch'); + * // mm.makeRe(pattern[, options]); + * + * console.log(mm.makeRe('*.js')); + * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ + * ``` + * @param {String} `pattern` A glob pattern to convert to regex. + * @param {Object} `options` + * @return {RegExp} Returns a regex created from the given pattern. + * @api public + */ + +micromatch.makeRe = (...args) => picomatch.makeRe(...args); + +/** + * Scan a glob pattern to separate the pattern into segments. Used + * by the [split](#split) method. + * + * ```js + * const mm = require('micromatch'); + * const state = mm.scan(pattern[, options]); + * ``` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Object} Returns an object with + * @api public + */ + +micromatch.scan = (...args) => picomatch.scan(...args); + +/** + * Parse a glob pattern to create the source string for a regular + * expression. + * + * ```js + * const mm = require('micromatch'); + * const state = mm.parse(pattern[, options]); + * ``` + * @param {String} `glob` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as regex source string. + * @api public + */ + +micromatch.parse = (patterns, options) => { + let res = []; + for (let pattern of [].concat(patterns || [])) { + for (let str of braces(String(pattern), options)) { + res.push(picomatch.parse(str, options)); + } + } + return res; +}; + +/** + * Process the given brace `pattern`. + * + * ```js + * const { braces } = require('micromatch'); + * console.log(braces('foo/{a,b,c}/bar')); + * //=> [ 'foo/(a|b|c)/bar' ] + * + * console.log(braces('foo/{a,b,c}/bar', { expand: true })); + * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ] + * ``` + * @param {String} `pattern` String with brace pattern to process. + * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options. + * @return {Array} + * @api public + */ + +micromatch.braces = (pattern, options) => { + if (typeof pattern !== 'string') throw new TypeError('Expected a string'); + if ((options && options.nobrace === true) || !/\{.*\}/.test(pattern)) { + return [pattern]; + } + return braces(pattern, options); +}; + +/** + * Expand braces + */ + +micromatch.braceExpand = (pattern, options) => { + if (typeof pattern !== 'string') throw new TypeError('Expected a string'); + return micromatch.braces(pattern, { ...options, expand: true }); +}; + +/** + * Expose micromatch + */ + +module.exports = micromatch; diff --git a/node_modules/micromatch/package.json b/node_modules/micromatch/package.json new file mode 100644 index 0000000000000000000000000000000000000000..6061d5be74139dfa3d9c164642985c02113d9055 --- /dev/null +++ b/node_modules/micromatch/package.json @@ -0,0 +1,119 @@ +{ + "name": "micromatch", + "description": "Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch.", + "version": "4.0.5", + "homepage": "https://github.com/micromatch/micromatch", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "(https://github.com/DianeLooney)", + "Amila Welihinda (amilajack.com)", + "Bogdan Chadkin (https://github.com/TrySound)", + "Brian Woodward (https://twitter.com/doowb)", + "Devon Govett (http://badassjs.com)", + "Elan Shanker (https://github.com/es128)", + "Fabrício Matté (https://ultcombo.js.org)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Martin Kolárik (https://kolarik.sk)", + "Olsten Larck (https://i.am.charlike.online)", + "Paul Miller (paulmillr.com)", + "Tom Byrer (https://github.com/tomByrer)", + "Tyler Akins (http://rumkin.com)", + "Peter Bright (https://github.com/drpizza)", + "Kuba Juszczyk (https://github.com/ku8ar)" + ], + "repository": "micromatch/micromatch", + "bugs": { + "url": "https://github.com/micromatch/micromatch/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=8.6" + }, + "scripts": { + "test": "mocha" + }, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "devDependencies": { + "fill-range": "^7.0.1", + "gulp-format-md": "^2.0.0", + "minimatch": "^5.0.1", + "mocha": "^9.2.2", + "time-require": "github:jonschlinkert/time-require" + }, + "keywords": [ + "bash", + "bracket", + "character-class", + "expand", + "expansion", + "expression", + "extglob", + "extglobs", + "file", + "files", + "filter", + "find", + "glob", + "globbing", + "globs", + "globstar", + "lookahead", + "lookaround", + "lookbehind", + "match", + "matcher", + "matches", + "matching", + "micromatch", + "minimatch", + "multimatch", + "negate", + "negation", + "path", + "pattern", + "patterns", + "posix", + "regex", + "regexp", + "regular", + "shell", + "star", + "wildcard" + ], + "verb": { + "toc": "collapsible", + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + }, + "related": { + "list": [ + "braces", + "expand-brackets", + "extglob", + "fill-range", + "nanomatch" + ] + }, + "reflinks": [ + "extglob", + "fill-range", + "glob-object", + "minimatch", + "multimatch" + ] + } +} diff --git a/node_modules/minimatch/LICENSE b/node_modules/minimatch/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..19129e315fe593965a2fdd50ec0d1253bcbd2ece --- /dev/null +++ b/node_modules/minimatch/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/minimatch/README.md b/node_modules/minimatch/README.md new file mode 100644 index 0000000000000000000000000000000000000000..33ede1d6eef25201cc1c14aab2bf3932ebb62d21 --- /dev/null +++ b/node_modules/minimatch/README.md @@ -0,0 +1,230 @@ +# minimatch + +A minimal matching utility. + +[![Build Status](https://travis-ci.org/isaacs/minimatch.svg?branch=master)](http://travis-ci.org/isaacs/minimatch) + + +This is the matching library used internally by npm. + +It works by converting glob expressions into JavaScript `RegExp` +objects. + +## Usage + +```javascript +var minimatch = require("minimatch") + +minimatch("bar.foo", "*.foo") // true! +minimatch("bar.foo", "*.bar") // false! +minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! +``` + +## Features + +Supports these glob features: + +* Brace Expansion +* Extended glob matching +* "Globstar" `**` matching + +See: + +* `man sh` +* `man bash` +* `man 3 fnmatch` +* `man 5 gitignore` + +## Minimatch Class + +Create a minimatch object by instantiating the `minimatch.Minimatch` class. + +```javascript +var Minimatch = require("minimatch").Minimatch +var mm = new Minimatch(pattern, options) +``` + +### Properties + +* `pattern` The original pattern the minimatch object represents. +* `options` The options supplied to the constructor. +* `set` A 2-dimensional array of regexp or string expressions. + Each row in the + array corresponds to a brace-expanded pattern. Each item in the row + corresponds to a single path-part. For example, the pattern + `{a,b/c}/d` would expand to a set of patterns like: + + [ [ a, d ] + , [ b, c, d ] ] + + If a portion of the pattern doesn't have any "magic" in it + (that is, it's something like `"foo"` rather than `fo*o?`), then it + will be left as a string rather than converted to a regular + expression. + +* `regexp` Created by the `makeRe` method. A single regular expression + expressing the entire pattern. This is useful in cases where you wish + to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. +* `negate` True if the pattern is negated. +* `comment` True if the pattern is a comment. +* `empty` True if the pattern is `""`. + +### Methods + +* `makeRe` Generate the `regexp` member if necessary, and return it. + Will return `false` if the pattern is invalid. +* `match(fname)` Return true if the filename matches the pattern, or + false otherwise. +* `matchOne(fileArray, patternArray, partial)` Take a `/`-split + filename, and match it against a single row in the `regExpSet`. This + method is mainly for internal use, but is exposed so that it can be + used by a glob-walker that needs to avoid excessive filesystem calls. + +All other methods are internal, and will be called as necessary. + +### minimatch(path, pattern, options) + +Main export. Tests a path against the pattern using the options. + +```javascript +var isJS = minimatch(file, "*.js", { matchBase: true }) +``` + +### minimatch.filter(pattern, options) + +Returns a function that tests its +supplied argument, suitable for use with `Array.filter`. Example: + +```javascript +var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) +``` + +### minimatch.match(list, pattern, options) + +Match against the list of +files, in the style of fnmatch or glob. If nothing is matched, and +options.nonull is set, then return a list containing the pattern itself. + +```javascript +var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) +``` + +### minimatch.makeRe(pattern, options) + +Make a regular expression object from the pattern. + +## Options + +All options are `false` by default. + +### debug + +Dump a ton of stuff to stderr. + +### nobrace + +Do not expand `{a,b}` and `{1..3}` brace sets. + +### noglobstar + +Disable `**` matching against multiple folder names. + +### dot + +Allow patterns to match filenames starting with a period, even if +the pattern does not explicitly have a period in that spot. + +Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` +is set. + +### noext + +Disable "extglob" style patterns like `+(a|b)`. + +### nocase + +Perform a case-insensitive match. + +### nonull + +When a match is not found by `minimatch.match`, return a list containing +the pattern itself if this option is set. When not set, an empty list +is returned if there are no matches. + +### matchBase + +If set, then patterns without slashes will be matched +against the basename of the path if it contains slashes. For example, +`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. + +### nocomment + +Suppress the behavior of treating `#` at the start of a pattern as a +comment. + +### nonegate + +Suppress the behavior of treating a leading `!` character as negation. + +### flipNegate + +Returns from negate expressions the same as if they were not negated. +(Ie, true on a hit, false on a miss.) + +### partial + +Compare a partial path to a pattern. As long as the parts of the path that +are present are not contradicted by the pattern, it will be treated as a +match. This is useful in applications where you're walking through a +folder structure, and don't yet have the full path, but want to ensure that +you do not walk down paths that can never be a match. + +For example, + +```js +minimatch('/a/b', '/a/*/c/d', { partial: true }) // true, might be /a/b/c/d +minimatch('/a/b', '/**/d', { partial: true }) // true, might be /a/b/.../d +minimatch('/x/y/z', '/a/**/z', { partial: true }) // false, because x !== a +``` + +### allowWindowsEscape + +Windows path separator `\` is by default converted to `/`, which +prohibits the usage of `\` as a escape character. This flag skips that +behavior and allows using the escape character. + +## Comparisons to other fnmatch/glob implementations + +While strict compliance with the existing standards is a worthwhile +goal, some discrepancies exist between minimatch and other +implementations, and are intentional. + +If the pattern starts with a `!` character, then it is negated. Set the +`nonegate` flag to suppress this behavior, and treat leading `!` +characters normally. This is perhaps relevant if you wish to start the +pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` +characters at the start of a pattern will negate the pattern multiple +times. + +If a pattern starts with `#`, then it is treated as a comment, and +will not match anything. Use `\#` to match a literal `#` at the +start of a line, or set the `nocomment` flag to suppress this behavior. + +The double-star character `**` is supported by default, unless the +`noglobstar` flag is set. This is supported in the manner of bsdglob +and bash 4.1, where `**` only has special significance if it is the only +thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but +`a/**b` will not. + +If an escaped pattern has no matches, and the `nonull` flag is set, +then minimatch.match returns the pattern as-provided, rather than +interpreting the character escapes. For example, +`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than +`"*a?"`. This is akin to setting the `nullglob` option in bash, except +that it does not resolve escaped pattern characters. + +If brace expansion is not disabled, then it is performed before any +other interpretation of the glob pattern. Thus, a pattern like +`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded +**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are +checked for validity. Since those two are valid, matching proceeds. diff --git a/node_modules/minimatch/minimatch.js b/node_modules/minimatch/minimatch.js new file mode 100644 index 0000000000000000000000000000000000000000..fda45ade7cfc351fbcd76877d50b4b5f643c37a3 --- /dev/null +++ b/node_modules/minimatch/minimatch.js @@ -0,0 +1,947 @@ +module.exports = minimatch +minimatch.Minimatch = Minimatch + +var path = (function () { try { return require('path') } catch (e) {}}()) || { + sep: '/' +} +minimatch.sep = path.sep + +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = require('brace-expansion') + +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} + +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' + +// * => any number of characters +var star = qmark + '*?' + +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + b = b || {} + var t = {} + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || typeof def !== 'object' || !Object.keys(def).length) { + return minimatch + } + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + m.Minimatch.defaults = function defaults (options) { + return orig.defaults(ext(def, options)).Minimatch + } + + m.filter = function filter (pattern, options) { + return orig.filter(pattern, ext(def, options)) + } + + m.defaults = function defaults (options) { + return orig.defaults(ext(def, options)) + } + + m.makeRe = function makeRe (pattern, options) { + return orig.makeRe(pattern, ext(def, options)) + } + + m.braceExpand = function braceExpand (pattern, options) { + return orig.braceExpand(pattern, ext(def, options)) + } + + m.match = function (list, pattern, options) { + return orig.match(list, pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + return minimatch.defaults(def).Minimatch +} + +function minimatch (p, pattern, options) { + assertValidPattern(pattern) + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + assertValidPattern(pattern) + + if (!options) options = {} + + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (!options.allowWindowsEscape && path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + this.partial = !!options.partial + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function () {} + +Minimatch.prototype.make = make +function make () { + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) } + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + assertValidPattern(pattern) + + // Thanks to Yeting Li for + // improving this regexp to avoid a ReDOS vulnerability. + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +var MAX_PATTERN_LENGTH = 1024 * 64 +var assertValidPattern = function (pattern) { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern') + } + + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long') + } +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + assertValidPattern(pattern) + + var options = this.options + + // shortcuts + if (pattern === '**') { + if (!options.noglobstar) + return GLOBSTAR + else + pattern = '*' + } + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } + + switch (c) { + /* istanbul ignore next */ + case '/': { + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + } + + case '\\': + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } + + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + + clearStateChar() + re += '|' + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '[': case '.': case '(': addPatternStart = true + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) /* istanbul ignore next - should be impossible */ { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) /* istanbul ignore next - should be impossible */ { + this.regexp = false + } + return this.regexp +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = function match (f, partial) { + if (typeof partial === 'undefined') partial = this.partial + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + /* istanbul ignore if */ + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + /* istanbul ignore if */ + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + hit = f === p + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else /* istanbul ignore else */ if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + return (fi === fl - 1) && (file[fi] === '') + } + + // should be unreachable. + /* istanbul ignore next */ + throw new Error('wtf?') +} + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') +} + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} diff --git a/node_modules/minimatch/package.json b/node_modules/minimatch/package.json new file mode 100644 index 0000000000000000000000000000000000000000..566efdfe45cb80710f6a14075f7e360d392edbd7 --- /dev/null +++ b/node_modules/minimatch/package.json @@ -0,0 +1,33 @@ +{ + "author": "Isaac Z. Schlueter (http://blog.izs.me)", + "name": "minimatch", + "description": "a glob matcher in javascript", + "version": "3.1.2", + "publishConfig": { + "tag": "v3-legacy" + }, + "repository": { + "type": "git", + "url": "git://github.com/isaacs/minimatch.git" + }, + "main": "minimatch.js", + "scripts": { + "test": "tap", + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --all; git push origin --tags" + }, + "engines": { + "node": "*" + }, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "devDependencies": { + "tap": "^15.1.6" + }, + "license": "ISC", + "files": [ + "minimatch.js" + ] +} diff --git a/node_modules/mz/HISTORY.md b/node_modules/mz/HISTORY.md new file mode 100644 index 0000000000000000000000000000000000000000..6ebee21db896ba29798ccdd7627d26c534c6d8c3 --- /dev/null +++ b/node_modules/mz/HISTORY.md @@ -0,0 +1,66 @@ + +2.7.0 / 2017-09-13 +================== + + * feat: support fs.copyFile (#58) + +2.6.0 / 2016-11-22 +================== + + * Added fdatasync to fs api (#46) + +2.5.0 / 2016-11-04 +================== + + * feat: support fs.mkdtemp + +2.4.0 / 2016-03-23 +================== + + * add `fs.truncate()` [#34](https://github.com/normalize/mz/pull/34) + +2.3.1 / 2016-02-01 +================== + + * update `any-promise@v1` + +2.3.0 / 2016-01-30 +================== + + * feat(package): switch to `any-promise` to support more promise engines + +2.2.0 / 2016-01-24 +================== + + * feat(package): add index.js to files + +2.1.0 / 2015-10-15 +================== + + * support for readline library + +2.0.0 / 2015-05-24 +================== + + * support callbacks as well + +1.2.0 / 2014-12-16 +================== + + * refactor promisification to `thenify` and `thenify-all` + +1.1.0 / 2014-11-14 +================== + + * use `graceful-fs` if available + +1.0.1 / 2014-08-18 +================== + + * don't use `bluebird.promisify()` - unnecessarily wraps runtime errors, causing issues + +1.0.0 / 2014-06-18 +================== + + * use `bluebird` by default if found + * support node 0.8 diff --git a/node_modules/mz/LICENSE b/node_modules/mz/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..1835f3d9f5acb61a4dbbcb5f655f74503471d956 --- /dev/null +++ b/node_modules/mz/LICENSE @@ -0,0 +1,22 @@ + +The MIT License (MIT) + +Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and 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/mz/README.md b/node_modules/mz/README.md new file mode 100644 index 0000000000000000000000000000000000000000..50d6557ca9eaa238fc50ed0c07b185d5a105445c --- /dev/null +++ b/node_modules/mz/README.md @@ -0,0 +1,106 @@ + +# MZ - Modernize node.js + +[![NPM version][npm-image]][npm-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![Dependency Status][david-image]][david-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +Modernize node.js to current ECMAScript specifications! +node.js will not update their API to ES6+ [for a while](https://github.com/joyent/node/issues/7549). +This library is a wrapper for various aspects of node.js' API. + +## Installation and Usage + +Set `mz` as a dependency and install it. + +```bash +npm i mz +``` + +Then prefix the relevant `require()`s with `mz/`: + +```js +var fs = require('mz/fs') + +fs.exists(__filename).then(function (exists) { + if (exists) // do something +}) +``` + +With ES2017, this will allow you to use async functions cleanly with node's core API: + +```js +const fs = require('mz/fs') + + +async function doSomething () { + if (await fs.exists(__filename)) // do something +} +``` + +## Promisification + +Many node methods are converted into promises. +Any properties that are deprecated or aren't asynchronous will simply be proxied. +The modules wrapped are: + +- `child_process` +- `crypto` +- `dns` +- `fs` (uses `graceful-fs` if available) +- `readline` +- `zlib` + +```js +var exec = require('mz/child_process').exec + +exec('node --version').then(function (stdout) { + console.log(stdout) +}) +``` + +## Promise Engine + +`mz` uses [`any-promise`](https://github.com/kevinbeaty/any-promise). + +## FAQ + +### Can I use this in production? + +Yes, Node 4.x ships with stable promises support. For older engines, +you should probably install your own promise implementation and register it with +`require('any-promise/register')('bluebird')`. + +### Will this make my app faster? + +Nope, probably slower actually. + +### Can I add more features? + +Sure. +Open an issue. + +Currently, the plans are to eventually support: + +- New APIs in node.js that are not available in older versions of node +- ECMAScript7 Streams + +[bluebird]: https://github.com/petkaantonov/bluebird + +[npm-image]: https://img.shields.io/npm/v/mz.svg?style=flat-square +[npm-url]: https://npmjs.org/package/mz +[github-tag]: http://img.shields.io/github/tag/normalize/mz.svg?style=flat-square +[github-url]: https://github.com/normalize/mz/tags +[travis-image]: https://img.shields.io/travis/normalize/mz.svg?style=flat-square +[travis-url]: https://travis-ci.org/normalize/mz +[coveralls-image]: https://img.shields.io/coveralls/normalize/mz.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/normalize/mz?branch=master +[david-image]: http://img.shields.io/david/normalize/mz.svg?style=flat-square +[david-url]: https://david-dm.org/normalize/mz +[license-image]: http://img.shields.io/npm/l/mz.svg?style=flat-square +[license-url]: LICENSE +[downloads-image]: http://img.shields.io/npm/dm/mz.svg?style=flat-square +[downloads-url]: https://npmjs.org/package/mz diff --git a/node_modules/mz/child_process.js b/node_modules/mz/child_process.js new file mode 100644 index 0000000000000000000000000000000000000000..06d5d9e3ca12cd1ee179f8dfd5ad1cd4b6e3187b --- /dev/null +++ b/node_modules/mz/child_process.js @@ -0,0 +1,8 @@ + +require('thenify-all').withCallback( + require('child_process'), + exports, [ + 'exec', + 'execFile', + ] +) diff --git a/node_modules/mz/crypto.js b/node_modules/mz/crypto.js new file mode 100644 index 0000000000000000000000000000000000000000..d8cff57f5e09da25905678ae6710869a6ef07d2d --- /dev/null +++ b/node_modules/mz/crypto.js @@ -0,0 +1,9 @@ + +require('thenify-all').withCallback( + require('crypto'), + exports, [ + 'pbkdf2', + 'pseudoRandomBytes', + 'randomBytes' + ] +) diff --git a/node_modules/mz/dns.js b/node_modules/mz/dns.js new file mode 100644 index 0000000000000000000000000000000000000000..c1035822971acdc3b5a03f416072f1b3ddafd510 --- /dev/null +++ b/node_modules/mz/dns.js @@ -0,0 +1,16 @@ + +require('thenify-all').withCallback( + require('dns'), + exports, [ + 'lookup', + 'resolve', + 'resolve4', + 'resolve6', + 'resolveCname', + 'resolveMx', + 'resolveNs', + 'resolveSrv', + 'resolveTxt', + 'reverse' + ] +) diff --git a/node_modules/mz/fs.js b/node_modules/mz/fs.js new file mode 100644 index 0000000000000000000000000000000000000000..1cfd2d776b0f6981d0d6941c533afcdf68c6cd68 --- /dev/null +++ b/node_modules/mz/fs.js @@ -0,0 +1,62 @@ + +var Promise = require('any-promise') +var fs +try { + fs = require('graceful-fs') +} catch(err) { + fs = require('fs') +} + +var api = [ + 'appendFile', + 'chmod', + 'chown', + 'close', + 'fchmod', + 'fchown', + 'fdatasync', + 'fstat', + 'fsync', + 'ftruncate', + 'futimes', + 'lchown', + 'link', + 'lstat', + 'mkdir', + 'open', + 'read', + 'readFile', + 'readdir', + 'readlink', + 'realpath', + 'rename', + 'rmdir', + 'stat', + 'symlink', + 'truncate', + 'unlink', + 'utimes', + 'write', + 'writeFile' +] + +typeof fs.access === 'function' && api.push('access') +typeof fs.copyFile === 'function' && api.push('copyFile') +typeof fs.mkdtemp === 'function' && api.push('mkdtemp') + +require('thenify-all').withCallback(fs, exports, api) + +exports.exists = function (filename, callback) { + // callback + if (typeof callback === 'function') { + return fs.stat(filename, function (err) { + callback(null, !err); + }) + } + // or promise + return new Promise(function (resolve) { + fs.stat(filename, function (err) { + resolve(!err) + }) + }) +} diff --git a/node_modules/mz/index.js b/node_modules/mz/index.js new file mode 100644 index 0000000000000000000000000000000000000000..cef508dc4c0be0f437914db472911a008e72dd2a --- /dev/null +++ b/node_modules/mz/index.js @@ -0,0 +1,8 @@ +module.exports = { + fs: require('./fs'), + dns: require('./dns'), + zlib: require('./zlib'), + crypto: require('./crypto'), + readline: require('./readline'), + child_process: require('./child_process') +} diff --git a/node_modules/mz/package.json b/node_modules/mz/package.json new file mode 100644 index 0000000000000000000000000000000000000000..de8d542cff88b294b7ae0d84e43fc67407dbbc5b --- /dev/null +++ b/node_modules/mz/package.json @@ -0,0 +1,44 @@ +{ + "name": "mz", + "description": "modernize node.js to current ECMAScript standards", + "version": "2.7.0", + "author": { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com", + "twitter": "https://twitter.com/jongleberry" + }, + "license": "MIT", + "repository": "normalize/mz", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + }, + "devDependencies": { + "istanbul": "^0.4.0", + "bluebird": "^3.0.0", + "mocha": "^3.0.0" + }, + "scripts": { + "test": "mocha --reporter spec", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot" + }, + "keywords": [ + "promisify", + "promise", + "thenify", + "then", + "es6" + ], + "files": [ + "index.js", + "child_process.js", + "crypto.js", + "dns.js", + "fs.js", + "readline.js", + "zlib.js" + ] +} diff --git a/node_modules/mz/readline.js b/node_modules/mz/readline.js new file mode 100644 index 0000000000000000000000000000000000000000..eb70c46f08cb42a6a8d50b49adddf751684fe1f1 --- /dev/null +++ b/node_modules/mz/readline.js @@ -0,0 +1,64 @@ +var readline = require('readline') +var Promise = require('any-promise') +var objectAssign = require('object-assign') +var Interface = readline.Interface + +function wrapCompleter (completer) { + if (completer.length === 2) return completer + + return function (line, cb) { + var result = completer(line) + + if (typeof result.then !== 'function') { + return cb(null, result) + } + + result.catch(cb).then(function (result) { + process.nextTick(function () { cb(null, result) }) + }) + } +} + +function InterfaceAsPromised (input, output, completer, terminal) { + if (arguments.length === 1) { + var options = input + + if (typeof options.completer === 'function') { + options = objectAssign({}, options, { + completer: wrapCompleter(options.completer) + }) + } + + Interface.call(this, options) + } else { + if (typeof completer === 'function') { + completer = wrapCompleter(completer) + } + + Interface.call(this, input, output, completer, terminal) + } +} + +InterfaceAsPromised.prototype = Object.create(Interface.prototype) + +InterfaceAsPromised.prototype.question = function (question, callback) { + if (typeof callback === 'function') { + return Interface.prototype.question.call(this, question, callback) + } + + var self = this + return new Promise(function (resolve) { + Interface.prototype.question.call(self, question, resolve) + }) +} + +objectAssign(exports, readline, { + Interface: InterfaceAsPromised, + createInterface: function (input, output, completer, terminal) { + if (arguments.length === 1) { + return new InterfaceAsPromised(input) + } + + return new InterfaceAsPromised(input, output, completer, terminal) + } +}) diff --git a/node_modules/mz/zlib.js b/node_modules/mz/zlib.js new file mode 100644 index 0000000000000000000000000000000000000000..a05c26a6abba33c8a87cde2928251257652fc5a4 --- /dev/null +++ b/node_modules/mz/zlib.js @@ -0,0 +1,13 @@ + +require('thenify-all').withCallback( + require('zlib'), + exports, [ + 'deflate', + 'deflateRaw', + 'gzip', + 'gunzip', + 'inflate', + 'inflateRaw', + 'unzip', + ] +) diff --git a/node_modules/nanoid/LICENSE b/node_modules/nanoid/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..37f56aa49f8e009ed7e582cb3e905a1e0d1666fd --- /dev/null +++ b/node_modules/nanoid/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2017 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/nanoid/README.md b/node_modules/nanoid/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a4abd9200d2e04ab75d94a99456941eb3f3de2da --- /dev/null +++ b/node_modules/nanoid/README.md @@ -0,0 +1,39 @@ +# Nano ID + +Nano ID logo by Anton Lovchikov + +**English** | [Русский](./README.ru.md) | [简体中文](./README.zh-CN.md) | [Bahasa Indonesia](./README.id-ID.md) + +A tiny, secure, URL-friendly, unique string ID generator for JavaScript. + +> “An amazing level of senseless perfectionism, +> which is simply impossible not to respect.” + +* **Small.** 130 bytes (minified and gzipped). No dependencies. + [Size Limit] controls the size. +* **Fast.** It is 2 times faster than UUID. +* **Safe.** It uses hardware random generator. Can be used in clusters. +* **Short IDs.** It uses a larger alphabet than UUID (`A-Za-z0-9_-`). + So ID size was reduced from 36 to 21 symbols. +* **Portable.** Nano ID was ported + to [20 programming languages](#other-programming-languages). + +```js +import { nanoid } from 'nanoid' +model.id = nanoid() //=> "V1StGXR8_Z5jdHi6B-myT" +``` + +Supports modern browsers, IE [with Babel], Node.js and React Native. + +[online tool]: https://gitpod.io/#https://github.com/ai/nanoid/ +[with Babel]: https://developer.epages.com/blog/coding/how-to-transpile-node-modules-with-babel-and-webpack-in-a-monorepo/ +[Size Limit]: https://github.com/ai/size-limit + + + Sponsored by Evil Martians + + +## Docs +Read **[full docs](https://github.com/ai/nanoid#readme)** on GitHub. diff --git a/node_modules/nanoid/async/index.browser.cjs b/node_modules/nanoid/async/index.browser.cjs new file mode 100644 index 0000000000000000000000000000000000000000..7e5bba837bfafefd92fab6492045dc1a7451c7f9 --- /dev/null +++ b/node_modules/nanoid/async/index.browser.cjs @@ -0,0 +1,34 @@ +let random = async bytes => crypto.getRandomValues(new Uint8Array(bytes)) +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + return async (size = defaultSize) => { + let id = '' + while (true) { + let bytes = crypto.getRandomValues(new Uint8Array(step)) + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} +let nanoid = async (size = 21) => { + let id = '' + let bytes = crypto.getRandomValues(new Uint8Array(size)) + while (size--) { + let byte = bytes[size] & 63 + if (byte < 36) { + id += byte.toString(36) + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase() + } else if (byte < 63) { + id += '_' + } else { + id += '-' + } + } + return id +} +module.exports = { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.browser.js b/node_modules/nanoid/async/index.browser.js new file mode 100644 index 0000000000000000000000000000000000000000..5ece04d63f7ab97d592f095e9e8c959424091ea5 --- /dev/null +++ b/node_modules/nanoid/async/index.browser.js @@ -0,0 +1,34 @@ +let random = async bytes => crypto.getRandomValues(new Uint8Array(bytes)) +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + return async (size = defaultSize) => { + let id = '' + while (true) { + let bytes = crypto.getRandomValues(new Uint8Array(step)) + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} +let nanoid = async (size = 21) => { + let id = '' + let bytes = crypto.getRandomValues(new Uint8Array(size)) + while (size--) { + let byte = bytes[size] & 63 + if (byte < 36) { + id += byte.toString(36) + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase() + } else if (byte < 63) { + id += '_' + } else { + id += '-' + } + } + return id +} +export { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.cjs b/node_modules/nanoid/async/index.cjs new file mode 100644 index 0000000000000000000000000000000000000000..50db10573d6aee1caf9527ef28cc6731c40e1139 --- /dev/null +++ b/node_modules/nanoid/async/index.cjs @@ -0,0 +1,35 @@ +let crypto = require('crypto') +let { urlAlphabet } = require('../url-alphabet/index.cjs') +let random = bytes => + new Promise((resolve, reject) => { + crypto.randomFill(Buffer.allocUnsafe(bytes), (err, buf) => { + if (err) { + reject(err) + } else { + resolve(buf) + } + }) + }) +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + let tick = (id, size = defaultSize) => + random(step).then(bytes => { + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + return tick(id, size) + }) + return size => tick('', size) +} +let nanoid = (size = 21) => + random(size).then(bytes => { + let id = '' + while (size--) { + id += urlAlphabet[bytes[size] & 63] + } + return id + }) +module.exports = { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.d.ts b/node_modules/nanoid/async/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9e919658b82e66e3bd39800232da5a469c8d13a8 --- /dev/null +++ b/node_modules/nanoid/async/index.d.ts @@ -0,0 +1,56 @@ +/** + * Generate secure URL-friendly unique ID. The non-blocking version. + * + * By default, the ID will have 21 symbols to have a collision probability + * similar to UUID v4. + * + * ```js + * import { nanoid } from 'nanoid/async' + * nanoid().then(id => { + * model.id = id + * }) + * ``` + * + * @param size Size of the ID. The default size is 21. + * @returns A promise with a random string. + */ +export function nanoid(size?: number): Promise + +/** + * A low-level function. + * Generate secure unique ID with custom alphabet. The non-blocking version. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * @param alphabet Alphabet used to generate the ID. + * @param defaultSize Size of the ID. The default size is 21. + * @returns A function that returns a promise with a random string. + * + * ```js + * import { customAlphabet } from 'nanoid/async' + * const nanoid = customAlphabet('0123456789абвгдеё', 5) + * nanoid().then(id => { + * model.id = id //=> "8ё56а" + * }) + * ``` + */ +export function customAlphabet( + alphabet: string, + defaultSize?: number +): (size?: number) => Promise + +/** + * Generate an array of random bytes collected from hardware noise. + * + * ```js + * import { random } from 'nanoid/async' + * random(5).then(bytes => { + * bytes //=> [10, 67, 212, 67, 89] + * }) + * ``` + * + * @param bytes Size of the array. + * @returns A promise with a random bytes array. + */ +export function random(bytes: number): Promise diff --git a/node_modules/nanoid/async/index.js b/node_modules/nanoid/async/index.js new file mode 100644 index 0000000000000000000000000000000000000000..803fad6f4d20e4795efff7c015aeec4a6d08a2f0 --- /dev/null +++ b/node_modules/nanoid/async/index.js @@ -0,0 +1,35 @@ +import crypto from 'crypto' +import { urlAlphabet } from '../url-alphabet/index.js' +let random = bytes => + new Promise((resolve, reject) => { + crypto.randomFill(Buffer.allocUnsafe(bytes), (err, buf) => { + if (err) { + reject(err) + } else { + resolve(buf) + } + }) + }) +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + let tick = (id, size = defaultSize) => + random(step).then(bytes => { + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + return tick(id, size) + }) + return size => tick('', size) +} +let nanoid = (size = 21) => + random(size).then(bytes => { + let id = '' + while (size--) { + id += urlAlphabet[bytes[size] & 63] + } + return id + }) +export { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.native.js b/node_modules/nanoid/async/index.native.js new file mode 100644 index 0000000000000000000000000000000000000000..5cb3d57ad17a8f6db4a6e0afa8257de62f650138 --- /dev/null +++ b/node_modules/nanoid/async/index.native.js @@ -0,0 +1,26 @@ +import { getRandomBytesAsync } from 'expo-random' +import { urlAlphabet } from '../url-alphabet/index.js' +let random = getRandomBytesAsync +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + let tick = (id, size = defaultSize) => + random(step).then(bytes => { + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + return tick(id, size) + }) + return size => tick('', size) +} +let nanoid = (size = 21) => + random(size).then(bytes => { + let id = '' + while (size--) { + id += urlAlphabet[bytes[size] & 63] + } + return id + }) +export { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/package.json b/node_modules/nanoid/async/package.json new file mode 100644 index 0000000000000000000000000000000000000000..578cdb4cb9babb17e4e08b4f6a30c2e195d2afed --- /dev/null +++ b/node_modules/nanoid/async/package.json @@ -0,0 +1,12 @@ +{ + "type": "module", + "main": "index.cjs", + "module": "index.js", + "react-native": { + "./index.js": "./index.native.js" + }, + "browser": { + "./index.js": "./index.browser.js", + "./index.cjs": "./index.browser.cjs" + } +} \ No newline at end of file diff --git a/node_modules/nanoid/bin/nanoid.cjs b/node_modules/nanoid/bin/nanoid.cjs new file mode 100755 index 0000000000000000000000000000000000000000..c76db0faa81f6d683c4a18a212f804fb70cf8143 --- /dev/null +++ b/node_modules/nanoid/bin/nanoid.cjs @@ -0,0 +1,55 @@ +#!/usr/bin/env node + +let { nanoid, customAlphabet } = require('..') + +function print(msg) { + process.stdout.write(msg + '\n') +} + +function error(msg) { + process.stderr.write(msg + '\n') + process.exit(1) +} + +if (process.argv.includes('--help') || process.argv.includes('-h')) { + print(` + Usage + $ nanoid [options] + + Options + -s, --size Generated ID size + -a, --alphabet Alphabet to use + -h, --help Show this help + + Examples + $ nanoid --s 15 + S9sBF77U6sDB8Yg + + $ nanoid --size 10 --alphabet abc + bcabababca`) + process.exit() +} + +let alphabet, size +for (let i = 2; i < process.argv.length; i++) { + let arg = process.argv[i] + if (arg === '--size' || arg === '-s') { + size = Number(process.argv[i + 1]) + i += 1 + if (Number.isNaN(size) || size <= 0) { + error('Size must be positive integer') + } + } else if (arg === '--alphabet' || arg === '-a') { + alphabet = process.argv[i + 1] + i += 1 + } else { + error('Unknown argument ' + arg) + } +} + +if (alphabet) { + let customNanoid = customAlphabet(alphabet, size) + print(customNanoid()) +} else { + print(nanoid(size)) +} diff --git a/node_modules/nanoid/index.browser.cjs b/node_modules/nanoid/index.browser.cjs new file mode 100644 index 0000000000000000000000000000000000000000..f800d6f4895fbd363f4c0c11ee40e1ba3bb5ab7f --- /dev/null +++ b/node_modules/nanoid/index.browser.cjs @@ -0,0 +1,34 @@ +let { urlAlphabet } = require('./url-alphabet/index.cjs') +let random = bytes => crypto.getRandomValues(new Uint8Array(bytes)) +let customRandom = (alphabet, defaultSize, getRandom) => { + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + let j = step + while (j--) { + id += alphabet[bytes[j] & mask] || '' + if (id.length === size) return id + } + } + } +} +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) +let nanoid = (size = 21) => + crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => { + byte &= 63 + if (byte < 36) { + id += byte.toString(36) + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase() + } else if (byte > 62) { + id += '-' + } else { + id += '_' + } + return id + }, '') +module.exports = { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/index.browser.js b/node_modules/nanoid/index.browser.js new file mode 100644 index 0000000000000000000000000000000000000000..8b3139b09e34d03b814f729b985159796bf2f636 --- /dev/null +++ b/node_modules/nanoid/index.browser.js @@ -0,0 +1,34 @@ +import { urlAlphabet } from './url-alphabet/index.js' +let random = bytes => crypto.getRandomValues(new Uint8Array(bytes)) +let customRandom = (alphabet, defaultSize, getRandom) => { + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + let j = step + while (j--) { + id += alphabet[bytes[j] & mask] || '' + if (id.length === size) return id + } + } + } +} +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) +let nanoid = (size = 21) => + crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => { + byte &= 63 + if (byte < 36) { + id += byte.toString(36) + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase() + } else if (byte > 62) { + id += '-' + } else { + id += '_' + } + return id + }, '') +export { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/index.cjs b/node_modules/nanoid/index.cjs new file mode 100644 index 0000000000000000000000000000000000000000..0fa85e9dac9624d732c9651a6b97ac942dc3d64d --- /dev/null +++ b/node_modules/nanoid/index.cjs @@ -0,0 +1,45 @@ +let crypto = require('crypto') +let { urlAlphabet } = require('./url-alphabet/index.cjs') +const POOL_SIZE_MULTIPLIER = 128 +let pool, poolOffset +let fillPool = bytes => { + if (!pool || pool.length < bytes) { + pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER) + crypto.randomFillSync(pool) + poolOffset = 0 + } else if (poolOffset + bytes > pool.length) { + crypto.randomFillSync(pool) + poolOffset = 0 + } + poolOffset += bytes +} +let random = bytes => { + fillPool((bytes -= 0)) + return pool.subarray(poolOffset - bytes, poolOffset) +} +let customRandom = (alphabet, defaultSize, getRandom) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) +let nanoid = (size = 21) => { + fillPool((size -= 0)) + let id = '' + for (let i = poolOffset - size; i < poolOffset; i++) { + id += urlAlphabet[pool[i] & 63] + } + return id +} +module.exports = { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/index.d.ts b/node_modules/nanoid/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3e111a39de010f548d397f06f8f964191834b869 --- /dev/null +++ b/node_modules/nanoid/index.d.ts @@ -0,0 +1,91 @@ +/** + * Generate secure URL-friendly unique ID. + * + * By default, the ID will have 21 symbols to have a collision probability + * similar to UUID v4. + * + * ```js + * import { nanoid } from 'nanoid' + * model.id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqL" + * ``` + * + * @param size Size of the ID. The default size is 21. + * @returns A random string. + */ +export function nanoid(size?: number): string + +/** + * Generate secure unique ID with custom alphabet. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * @param alphabet Alphabet used to generate the ID. + * @param defaultSize Size of the ID. The default size is 21. + * @returns A random string generator. + * + * ```js + * const { customAlphabet } = require('nanoid') + * const nanoid = customAlphabet('0123456789абвгдеё', 5) + * nanoid() //=> "8ё56а" + * ``` + */ +export function customAlphabet( + alphabet: string, + defaultSize?: number +): (size?: number) => string + +/** + * Generate unique ID with custom random generator and alphabet. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * ```js + * import { customRandom } from 'nanoid/format' + * + * const nanoid = customRandom('abcdef', 5, size => { + * const random = [] + * for (let i = 0; i < size; i++) { + * random.push(randomByte()) + * } + * return random + * }) + * + * nanoid() //=> "fbaef" + * ``` + * + * @param alphabet Alphabet used to generate a random string. + * @param size Size of the random string. + * @param random A random bytes generator. + * @returns A random string generator. + */ +export function customRandom( + alphabet: string, + size: number, + random: (bytes: number) => Uint8Array +): () => string + +/** + * URL safe symbols. + * + * ```js + * import { urlAlphabet } from 'nanoid' + * const nanoid = customAlphabet(urlAlphabet, 10) + * nanoid() //=> "Uakgb_J5m9" + * ``` + */ +export const urlAlphabet: string + +/** + * Generate an array of random bytes collected from hardware noise. + * + * ```js + * import { customRandom, random } from 'nanoid' + * const nanoid = customRandom("abcdef", 5, random) + * ``` + * + * @param bytes Size of the array. + * @returns An array of random bytes. + */ +export function random(bytes: number): Uint8Array diff --git a/node_modules/nanoid/index.js b/node_modules/nanoid/index.js new file mode 100644 index 0000000000000000000000000000000000000000..21e155fca8691d663aef6b96f4448d0bd9f1a780 --- /dev/null +++ b/node_modules/nanoid/index.js @@ -0,0 +1,45 @@ +import crypto from 'crypto' +import { urlAlphabet } from './url-alphabet/index.js' +const POOL_SIZE_MULTIPLIER = 128 +let pool, poolOffset +let fillPool = bytes => { + if (!pool || pool.length < bytes) { + pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER) + crypto.randomFillSync(pool) + poolOffset = 0 + } else if (poolOffset + bytes > pool.length) { + crypto.randomFillSync(pool) + poolOffset = 0 + } + poolOffset += bytes +} +let random = bytes => { + fillPool((bytes -= 0)) + return pool.subarray(poolOffset - bytes, poolOffset) +} +let customRandom = (alphabet, defaultSize, getRandom) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) +let nanoid = (size = 21) => { + fillPool((size -= 0)) + let id = '' + for (let i = poolOffset - size; i < poolOffset; i++) { + id += urlAlphabet[pool[i] & 63] + } + return id +} +export { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/nanoid.js b/node_modules/nanoid/nanoid.js new file mode 100644 index 0000000000000000000000000000000000000000..ec242eadc85e4b0ef546c8fdc771f7e9d7d2f081 --- /dev/null +++ b/node_modules/nanoid/nanoid.js @@ -0,0 +1 @@ +export let nanoid=(t=21)=>crypto.getRandomValues(new Uint8Array(t)).reduce(((t,e)=>t+=(e&=63)<36?e.toString(36):e<62?(e-26).toString(36).toUpperCase():e<63?"_":"-"),""); \ No newline at end of file diff --git a/node_modules/nanoid/non-secure/index.cjs b/node_modules/nanoid/non-secure/index.cjs new file mode 100644 index 0000000000000000000000000000000000000000..09d57cdc0625d51bd1109b4ce2818e9553005eed --- /dev/null +++ b/node_modules/nanoid/non-secure/index.cjs @@ -0,0 +1,21 @@ +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' +let customAlphabet = (alphabet, defaultSize = 21) => { + return (size = defaultSize) => { + let id = '' + let i = size + while (i--) { + id += alphabet[(Math.random() * alphabet.length) | 0] + } + return id + } +} +let nanoid = (size = 21) => { + let id = '' + let i = size + while (i--) { + id += urlAlphabet[(Math.random() * 64) | 0] + } + return id +} +module.exports = { nanoid, customAlphabet } diff --git a/node_modules/nanoid/non-secure/index.d.ts b/node_modules/nanoid/non-secure/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4965322d636016d678fccdd94c3aacdf1fc50075 --- /dev/null +++ b/node_modules/nanoid/non-secure/index.d.ts @@ -0,0 +1,33 @@ +/** + * Generate URL-friendly unique ID. This method uses the non-secure + * predictable random generator with bigger collision probability. + * + * ```js + * import { nanoid } from 'nanoid/non-secure' + * model.id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqL" + * ``` + * + * @param size Size of the ID. The default size is 21. + * @returns A random string. + */ +export function nanoid(size?: number): string + +/** + * Generate a unique ID based on a custom alphabet. + * This method uses the non-secure predictable random generator + * with bigger collision probability. + * + * @param alphabet Alphabet used to generate the ID. + * @param defaultSize Size of the ID. The default size is 21. + * @returns A random string generator. + * + * ```js + * import { customAlphabet } from 'nanoid/non-secure' + * const nanoid = customAlphabet('0123456789абвгдеё', 5) + * model.id = //=> "8ё56а" + * ``` + */ +export function customAlphabet( + alphabet: string, + defaultSize?: number +): (size?: number) => string diff --git a/node_modules/nanoid/non-secure/index.js b/node_modules/nanoid/non-secure/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e7e19adf23e9b2f2561aa8a6cdbd6bb30a33a8bb --- /dev/null +++ b/node_modules/nanoid/non-secure/index.js @@ -0,0 +1,21 @@ +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' +let customAlphabet = (alphabet, defaultSize = 21) => { + return (size = defaultSize) => { + let id = '' + let i = size + while (i--) { + id += alphabet[(Math.random() * alphabet.length) | 0] + } + return id + } +} +let nanoid = (size = 21) => { + let id = '' + let i = size + while (i--) { + id += urlAlphabet[(Math.random() * 64) | 0] + } + return id +} +export { nanoid, customAlphabet } diff --git a/node_modules/nanoid/non-secure/package.json b/node_modules/nanoid/non-secure/package.json new file mode 100644 index 0000000000000000000000000000000000000000..9930d6ad1671e19bfddbdeeb9bbcdeab83dc00ba --- /dev/null +++ b/node_modules/nanoid/non-secure/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "main": "index.cjs", + "module": "index.js", + "react-native": "index.js" +} \ No newline at end of file diff --git a/node_modules/nanoid/package.json b/node_modules/nanoid/package.json new file mode 100644 index 0000000000000000000000000000000000000000..19d7d7a5e9f1ff955c765ba2f83331920884f7a7 --- /dev/null +++ b/node_modules/nanoid/package.json @@ -0,0 +1,66 @@ +{ + "name": "nanoid", + "version": "3.3.6", + "description": "A tiny (116 bytes), secure URL-friendly unique string ID generator", + "keywords": [ + "uuid", + "random", + "id", + "url" + ], + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "repository": "ai/nanoid", + "browser": { + "./index.js": "./index.browser.js", + "./async/index.js": "./async/index.browser.js", + "./async/index.cjs": "./async/index.browser.cjs", + "./index.cjs": "./index.browser.cjs" + }, + "react-native": "index.js", + "bin": "./bin/nanoid.cjs", + "sideEffects": false, + "types": "./index.d.ts", + "type": "module", + "main": "index.cjs", + "module": "index.js", + "exports": { + ".": { + "types": "./index.d.ts", + "browser": "./index.browser.js", + "require": "./index.cjs", + "import": "./index.js", + "default": "./index.js" + }, + "./index.d.ts": "./index.d.ts", + "./package.json": "./package.json", + "./async/package.json": "./async/package.json", + "./async": { + "browser": "./async/index.browser.js", + "require": "./async/index.cjs", + "import": "./async/index.js", + "default": "./async/index.js" + }, + "./non-secure/package.json": "./non-secure/package.json", + "./non-secure": { + "require": "./non-secure/index.cjs", + "import": "./non-secure/index.js", + "default": "./non-secure/index.js" + }, + "./url-alphabet/package.json": "./url-alphabet/package.json", + "./url-alphabet": { + "require": "./url-alphabet/index.cjs", + "import": "./url-alphabet/index.js", + "default": "./url-alphabet/index.js" + } + } +} \ No newline at end of file diff --git a/node_modules/nanoid/url-alphabet/index.cjs b/node_modules/nanoid/url-alphabet/index.cjs new file mode 100644 index 0000000000000000000000000000000000000000..757b709ccabe50fe68c6c85dbb1656b35bb03f5b --- /dev/null +++ b/node_modules/nanoid/url-alphabet/index.cjs @@ -0,0 +1,3 @@ +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' +module.exports = { urlAlphabet } diff --git a/node_modules/nanoid/url-alphabet/index.js b/node_modules/nanoid/url-alphabet/index.js new file mode 100644 index 0000000000000000000000000000000000000000..c2782e592e541a8ec8bd07038e997e63a16beb70 --- /dev/null +++ b/node_modules/nanoid/url-alphabet/index.js @@ -0,0 +1,3 @@ +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' +export { urlAlphabet } diff --git a/node_modules/nanoid/url-alphabet/package.json b/node_modules/nanoid/url-alphabet/package.json new file mode 100644 index 0000000000000000000000000000000000000000..9930d6ad1671e19bfddbdeeb9bbcdeab83dc00ba --- /dev/null +++ b/node_modules/nanoid/url-alphabet/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "main": "index.cjs", + "module": "index.js", + "react-native": "index.js" +} \ No newline at end of file diff --git a/node_modules/normalize-path/LICENSE b/node_modules/normalize-path/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..d32ab4426a5f6bd7986ed80df4073bbf997903d1 --- /dev/null +++ b/node_modules/normalize-path/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/normalize-path/README.md b/node_modules/normalize-path/README.md new file mode 100644 index 0000000000000000000000000000000000000000..726d4d6891a295fbd2706d7c98ba72f09b8a4a6b --- /dev/null +++ b/node_modules/normalize-path/README.md @@ -0,0 +1,127 @@ +# normalize-path [![NPM version](https://img.shields.io/npm/v/normalize-path.svg?style=flat)](https://www.npmjs.com/package/normalize-path) [![NPM monthly downloads](https://img.shields.io/npm/dm/normalize-path.svg?style=flat)](https://npmjs.org/package/normalize-path) [![NPM total downloads](https://img.shields.io/npm/dt/normalize-path.svg?style=flat)](https://npmjs.org/package/normalize-path) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/normalize-path.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/normalize-path) + +> Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled. + +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 normalize-path +``` + +## Usage + +```js +const normalize = require('normalize-path'); + +console.log(normalize('\\foo\\bar\\baz\\')); +//=> '/foo/bar/baz' +``` + +**win32 namespaces** + +```js +console.log(normalize('\\\\?\\UNC\\Server01\\user\\docs\\Letter.txt')); +//=> '//?/UNC/Server01/user/docs/Letter.txt' + +console.log(normalize('\\\\.\\CdRomX')); +//=> '//./CdRomX' +``` + +**Consecutive slashes** + +Condenses multiple consecutive forward slashes (except for leading slashes in win32 namespaces) to a single slash. + +```js +console.log(normalize('.//foo//bar///////baz/')); +//=> './foo/bar/baz' +``` + +### Trailing slashes + +By default trailing slashes are removed. Pass `false` as the last argument to disable this behavior and _**keep** trailing slashes_: + +```js +console.log(normalize('foo\\bar\\baz\\', false)); //=> 'foo/bar/baz/' +console.log(normalize('./foo/bar/baz/', false)); //=> './foo/bar/baz/' +``` + +## Release history + +### v3.0 + +No breaking changes in this release. + +* a check was added to ensure that [win32 namespaces](https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces) are handled properly by win32 `path.parse()` after a path has been normalized by this library. +* a minor optimization was made to simplify how the trailing separator was handled + +## 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 +``` + +
+ +### Related projects + +Other useful path-related libraries: + +* [contains-path](https://www.npmjs.com/package/contains-path): Return true if a file path contains the given path. | [homepage](https://github.com/jonschlinkert/contains-path "Return true if a file path contains the given path.") +* [is-absolute](https://www.npmjs.com/package/is-absolute): Returns true if a file path is absolute. Does not rely on the path module… [more](https://github.com/jonschlinkert/is-absolute) | [homepage](https://github.com/jonschlinkert/is-absolute "Returns true if a file path is absolute. Does not rely on the path module and can be used as a polyfill for node.js native `path.isAbolute`.") +* [is-relative](https://www.npmjs.com/package/is-relative): Returns `true` if the path appears to be relative. | [homepage](https://github.com/jonschlinkert/is-relative "Returns `true` if the path appears to be relative.") +* [parse-filepath](https://www.npmjs.com/package/parse-filepath): Pollyfill for node.js `path.parse`, parses a filepath into an object. | [homepage](https://github.com/jonschlinkert/parse-filepath "Pollyfill for node.js `path.parse`, parses a filepath into an object.") +* [path-ends-with](https://www.npmjs.com/package/path-ends-with): Return `true` if a file path ends with the given string/suffix. | [homepage](https://github.com/jonschlinkert/path-ends-with "Return `true` if a file path ends with the given string/suffix.") +* [unixify](https://www.npmjs.com/package/unixify): Convert Windows file paths to unix paths. | [homepage](https://github.com/jonschlinkert/unixify "Convert Windows file paths to unix paths.") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 35 | [jonschlinkert](https://github.com/jonschlinkert) | +| 1 | [phated](https://github.com/phated) | + +### Author + +**Jon Schlinkert** + +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) + +### License + +Copyright © 2018, [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.6.0, on April 19, 2018._ \ No newline at end of file diff --git a/node_modules/normalize-path/index.js b/node_modules/normalize-path/index.js new file mode 100644 index 0000000000000000000000000000000000000000..6fac553a30915ee38b6c1552b8df343da69f3926 --- /dev/null +++ b/node_modules/normalize-path/index.js @@ -0,0 +1,35 @@ +/*! + * normalize-path + * + * Copyright (c) 2014-2018, Jon Schlinkert. + * Released under the MIT License. + */ + +module.exports = function(path, stripTrailing) { + if (typeof path !== 'string') { + throw new TypeError('expected path to be a string'); + } + + if (path === '\\' || path === '/') return '/'; + + var len = path.length; + if (len <= 1) return path; + + // ensure that win32 namespaces has two leading slashes, so that the path is + // handled properly by the win32 version of path.parse() after being normalized + // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces + var prefix = ''; + if (len > 4 && path[3] === '\\') { + var ch = path[2]; + if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') { + path = path.slice(2); + prefix = '//'; + } + } + + var segs = path.split(/[/\\]+/); + if (stripTrailing !== false && segs[segs.length - 1] === '') { + segs.pop(); + } + return prefix + segs.join('/'); +}; diff --git a/node_modules/normalize-path/package.json b/node_modules/normalize-path/package.json new file mode 100644 index 0000000000000000000000000000000000000000..ad61098a8a8fc51a4be93b25769a47959abd5ade --- /dev/null +++ b/node_modules/normalize-path/package.json @@ -0,0 +1,77 @@ +{ + "name": "normalize-path", + "description": "Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled.", + "version": "3.0.0", + "homepage": "https://github.com/jonschlinkert/normalize-path", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Blaine Bublitz (https://twitter.com/BlaineBublitz)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)" + ], + "repository": "jonschlinkert/normalize-path", + "bugs": { + "url": "https://github.com/jonschlinkert/normalize-path/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "devDependencies": { + "gulp-format-md": "^1.0.0", + "minimist": "^1.2.0", + "mocha": "^3.5.3" + }, + "keywords": [ + "absolute", + "backslash", + "delimiter", + "file", + "file-path", + "filepath", + "fix", + "forward", + "fp", + "fs", + "normalize", + "path", + "relative", + "separator", + "slash", + "slashes", + "trailing", + "unix", + "urix" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "related": { + "description": "Other useful path-related libraries:", + "list": [ + "contains-path", + "is-absolute", + "is-relative", + "parse-filepath", + "path-ends-with", + "path-ends-with", + "unixify" + ] + }, + "lint": { + "reflinks": true + } + } +} diff --git a/node_modules/object-assign/index.js b/node_modules/object-assign/index.js new file mode 100644 index 0000000000000000000000000000000000000000..0930cf8890b9af66125c222c29d7bd75614ac6b4 --- /dev/null +++ b/node_modules/object-assign/index.js @@ -0,0 +1,90 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; diff --git a/node_modules/object-assign/license b/node_modules/object-assign/license new file mode 100644 index 0000000000000000000000000000000000000000..654d0bfe943437d43242325b1fbcff5f400d84ee --- /dev/null +++ b/node_modules/object-assign/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +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/object-assign/package.json b/node_modules/object-assign/package.json new file mode 100644 index 0000000000000000000000000000000000000000..503eb1e6d0f5a1404c8e7f6c09fbda7e40fd29b4 --- /dev/null +++ b/node_modules/object-assign/package.json @@ -0,0 +1,42 @@ +{ + "name": "object-assign", + "version": "4.1.1", + "description": "ES2015 `Object.assign()` ponyfill", + "license": "MIT", + "repository": "sindresorhus/object-assign", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "xo && ava", + "bench": "matcha bench.js" + }, + "files": [ + "index.js" + ], + "keywords": [ + "object", + "assign", + "extend", + "properties", + "es2015", + "ecmascript", + "harmony", + "ponyfill", + "prollyfill", + "polyfill", + "shim", + "browser" + ], + "devDependencies": { + "ava": "^0.16.0", + "lodash": "^4.16.4", + "matcha": "^0.7.0", + "xo": "^0.16.0" + } +} diff --git a/node_modules/object-assign/readme.md b/node_modules/object-assign/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..1be09d35c776cc0e9cc59519c2de6b9eecf8aa68 --- /dev/null +++ b/node_modules/object-assign/readme.md @@ -0,0 +1,61 @@ +# object-assign [![Build Status](https://travis-ci.org/sindresorhus/object-assign.svg?branch=master)](https://travis-ci.org/sindresorhus/object-assign) + +> ES2015 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) [ponyfill](https://ponyfill.com) + + +## Use the built-in + +Node.js 4 and up, as well as every evergreen browser (Chrome, Edge, Firefox, Opera, Safari), +support `Object.assign()` :tada:. If you target only those environments, then by all +means, use `Object.assign()` instead of this package. + + +## Install + +``` +$ npm install --save object-assign +``` + + +## Usage + +```js +const objectAssign = require('object-assign'); + +objectAssign({foo: 0}, {bar: 1}); +//=> {foo: 0, bar: 1} + +// multiple sources +objectAssign({foo: 0}, {bar: 1}, {baz: 2}); +//=> {foo: 0, bar: 1, baz: 2} + +// overwrites equal keys +objectAssign({foo: 0}, {foo: 1}, {foo: 2}); +//=> {foo: 2} + +// ignores null and undefined sources +objectAssign({foo: 0}, null, {bar: 1}, undefined); +//=> {foo: 0, bar: 1} +``` + + +## API + +### objectAssign(target, [source, ...]) + +Assigns enumerable own properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones. + + +## Resources + +- [ES2015 spec - Object.assign](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign) + + +## Related + +- [deep-assign](https://github.com/sindresorhus/deep-assign) - Recursive `Object.assign()` + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/node_modules/object-hash/LICENSE b/node_modules/object-hash/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..6ea185fae6b93a21dd4faf5659c313f4bcd4904c --- /dev/null +++ b/node_modules/object-hash/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2014 object-hash 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/object-hash/index.js b/node_modules/object-hash/index.js new file mode 100644 index 0000000000000000000000000000000000000000..962bf62887fd3b08c1665a40fc073ac997385f46 --- /dev/null +++ b/node_modules/object-hash/index.js @@ -0,0 +1,453 @@ +'use strict'; + +var crypto = require('crypto'); + +/** + * Exported function + * + * Options: + * + * - `algorithm` hash algo to be used by this instance: *'sha1', 'md5' + * - `excludeValues` {true|*false} hash object keys, values ignored + * - `encoding` hash encoding, supports 'buffer', '*hex', 'binary', 'base64' + * - `ignoreUnknown` {true|*false} ignore unknown object types + * - `replacer` optional function that replaces values before hashing + * - `respectFunctionProperties` {*true|false} consider function properties when hashing + * - `respectFunctionNames` {*true|false} consider 'name' property of functions for hashing + * - `respectType` {*true|false} Respect special properties (prototype, constructor) + * when hashing to distinguish between types + * - `unorderedArrays` {true|*false} Sort all arrays before hashing + * - `unorderedSets` {*true|false} Sort `Set` and `Map` instances before hashing + * * = default + * + * @param {object} object value to hash + * @param {object} options hashing options + * @return {string} hash value + * @api public + */ +exports = module.exports = objectHash; + +function objectHash(object, options){ + options = applyDefaults(object, options); + + return hash(object, options); +} + +/** + * Exported sugar methods + * + * @param {object} object value to hash + * @return {string} hash value + * @api public + */ +exports.sha1 = function(object){ + return objectHash(object); +}; +exports.keys = function(object){ + return objectHash(object, {excludeValues: true, algorithm: 'sha1', encoding: 'hex'}); +}; +exports.MD5 = function(object){ + return objectHash(object, {algorithm: 'md5', encoding: 'hex'}); +}; +exports.keysMD5 = function(object){ + return objectHash(object, {algorithm: 'md5', encoding: 'hex', excludeValues: true}); +}; + +// Internals +var hashes = crypto.getHashes ? crypto.getHashes().slice() : ['sha1', 'md5']; +hashes.push('passthrough'); +var encodings = ['buffer', 'hex', 'binary', 'base64']; + +function applyDefaults(object, sourceOptions){ + sourceOptions = sourceOptions || {}; + + // create a copy rather than mutating + var options = {}; + options.algorithm = sourceOptions.algorithm || 'sha1'; + options.encoding = sourceOptions.encoding || 'hex'; + options.excludeValues = sourceOptions.excludeValues ? true : false; + options.algorithm = options.algorithm.toLowerCase(); + options.encoding = options.encoding.toLowerCase(); + options.ignoreUnknown = sourceOptions.ignoreUnknown !== true ? false : true; // default to false + options.respectType = sourceOptions.respectType === false ? false : true; // default to true + options.respectFunctionNames = sourceOptions.respectFunctionNames === false ? false : true; + options.respectFunctionProperties = sourceOptions.respectFunctionProperties === false ? false : true; + options.unorderedArrays = sourceOptions.unorderedArrays !== true ? false : true; // default to false + options.unorderedSets = sourceOptions.unorderedSets === false ? false : true; // default to false + options.unorderedObjects = sourceOptions.unorderedObjects === false ? false : true; // default to true + options.replacer = sourceOptions.replacer || undefined; + options.excludeKeys = sourceOptions.excludeKeys || undefined; + + if(typeof object === 'undefined') { + throw new Error('Object argument required.'); + } + + // if there is a case-insensitive match in the hashes list, accept it + // (i.e. SHA256 for sha256) + for (var i = 0; i < hashes.length; ++i) { + if (hashes[i].toLowerCase() === options.algorithm.toLowerCase()) { + options.algorithm = hashes[i]; + } + } + + if(hashes.indexOf(options.algorithm) === -1){ + throw new Error('Algorithm "' + options.algorithm + '" not supported. ' + + 'supported values: ' + hashes.join(', ')); + } + + if(encodings.indexOf(options.encoding) === -1 && + options.algorithm !== 'passthrough'){ + throw new Error('Encoding "' + options.encoding + '" not supported. ' + + 'supported values: ' + encodings.join(', ')); + } + + return options; +} + +/** Check if the given function is a native function */ +function isNativeFunction(f) { + if ((typeof f) !== 'function') { + return false; + } + var exp = /^function\s+\w*\s*\(\s*\)\s*{\s+\[native code\]\s+}$/i; + return exp.exec(Function.prototype.toString.call(f)) != null; +} + +function hash(object, options) { + var hashingStream; + + if (options.algorithm !== 'passthrough') { + hashingStream = crypto.createHash(options.algorithm); + } else { + hashingStream = new PassThrough(); + } + + if (typeof hashingStream.write === 'undefined') { + hashingStream.write = hashingStream.update; + hashingStream.end = hashingStream.update; + } + + var hasher = typeHasher(options, hashingStream); + hasher.dispatch(object); + if (!hashingStream.update) { + hashingStream.end(''); + } + + if (hashingStream.digest) { + return hashingStream.digest(options.encoding === 'buffer' ? undefined : options.encoding); + } + + var buf = hashingStream.read(); + if (options.encoding === 'buffer') { + return buf; + } + + return buf.toString(options.encoding); +} + +/** + * Expose streaming API + * + * @param {object} object Value to serialize + * @param {object} options Options, as for hash() + * @param {object} stream A stream to write the serializiation to + * @api public + */ +exports.writeToStream = function(object, options, stream) { + if (typeof stream === 'undefined') { + stream = options; + options = {}; + } + + options = applyDefaults(object, options); + + return typeHasher(options, stream).dispatch(object); +}; + +function typeHasher(options, writeTo, context){ + context = context || []; + var write = function(str) { + if (writeTo.update) { + return writeTo.update(str, 'utf8'); + } else { + return writeTo.write(str, 'utf8'); + } + }; + + return { + dispatch: function(value){ + if (options.replacer) { + value = options.replacer(value); + } + + var type = typeof value; + if (value === null) { + type = 'null'; + } + + //console.log("[DEBUG] Dispatch: ", value, "->", type, " -> ", "_" + type); + + return this['_' + type](value); + }, + _object: function(object) { + var pattern = (/\[object (.*)\]/i); + var objString = Object.prototype.toString.call(object); + var objType = pattern.exec(objString); + if (!objType) { // object type did not match [object ...] + objType = 'unknown:[' + objString + ']'; + } else { + objType = objType[1]; // take only the class name + } + + objType = objType.toLowerCase(); + + var objectNumber = null; + + if ((objectNumber = context.indexOf(object)) >= 0) { + return this.dispatch('[CIRCULAR:' + objectNumber + ']'); + } else { + context.push(object); + } + + if (typeof Buffer !== 'undefined' && Buffer.isBuffer && Buffer.isBuffer(object)) { + write('buffer:'); + return write(object); + } + + if(objType !== 'object' && objType !== 'function' && objType !== 'asyncfunction') { + if(this['_' + objType]) { + this['_' + objType](object); + } else if (options.ignoreUnknown) { + return write('[' + objType + ']'); + } else { + throw new Error('Unknown object type "' + objType + '"'); + } + }else{ + var keys = Object.keys(object); + if (options.unorderedObjects) { + keys = keys.sort(); + } + // Make sure to incorporate special properties, so + // Types with different prototypes will produce + // a different hash and objects derived from + // different functions (`new Foo`, `new Bar`) will + // produce different hashes. + // We never do this for native functions since some + // seem to break because of that. + if (options.respectType !== false && !isNativeFunction(object)) { + keys.splice(0, 0, 'prototype', '__proto__', 'constructor'); + } + + if (options.excludeKeys) { + keys = keys.filter(function(key) { return !options.excludeKeys(key); }); + } + + write('object:' + keys.length + ':'); + var self = this; + return keys.forEach(function(key){ + self.dispatch(key); + write(':'); + if(!options.excludeValues) { + self.dispatch(object[key]); + } + write(','); + }); + } + }, + _array: function(arr, unordered){ + unordered = typeof unordered !== 'undefined' ? unordered : + options.unorderedArrays !== false; // default to options.unorderedArrays + + var self = this; + write('array:' + arr.length + ':'); + if (!unordered || arr.length <= 1) { + return arr.forEach(function(entry) { + return self.dispatch(entry); + }); + } + + // the unordered case is a little more complicated: + // since there is no canonical ordering on objects, + // i.e. {a:1} < {a:2} and {a:1} > {a:2} are both false, + // we first serialize each entry using a PassThrough stream + // before sorting. + // also: we can’t use the same context array for all entries + // since the order of hashing should *not* matter. instead, + // we keep track of the additions to a copy of the context array + // and add all of them to the global context array when we’re done + var contextAdditions = []; + var entries = arr.map(function(entry) { + var strm = new PassThrough(); + var localContext = context.slice(); // make copy + var hasher = typeHasher(options, strm, localContext); + hasher.dispatch(entry); + // take only what was added to localContext and append it to contextAdditions + contextAdditions = contextAdditions.concat(localContext.slice(context.length)); + return strm.read().toString(); + }); + context = context.concat(contextAdditions); + entries.sort(); + return this._array(entries, false); + }, + _date: function(date){ + return write('date:' + date.toJSON()); + }, + _symbol: function(sym){ + return write('symbol:' + sym.toString()); + }, + _error: function(err){ + return write('error:' + err.toString()); + }, + _boolean: function(bool){ + return write('bool:' + bool.toString()); + }, + _string: function(string){ + write('string:' + string.length + ':'); + write(string.toString()); + }, + _function: function(fn){ + write('fn:'); + if (isNativeFunction(fn)) { + this.dispatch('[native]'); + } else { + this.dispatch(fn.toString()); + } + + if (options.respectFunctionNames !== false) { + // Make sure we can still distinguish native functions + // by their name, otherwise String and Function will + // have the same hash + this.dispatch("function-name:" + String(fn.name)); + } + + if (options.respectFunctionProperties) { + this._object(fn); + } + }, + _number: function(number){ + return write('number:' + number.toString()); + }, + _xml: function(xml){ + return write('xml:' + xml.toString()); + }, + _null: function() { + return write('Null'); + }, + _undefined: function() { + return write('Undefined'); + }, + _regexp: function(regex){ + return write('regex:' + regex.toString()); + }, + _uint8array: function(arr){ + write('uint8array:'); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + _uint8clampedarray: function(arr){ + write('uint8clampedarray:'); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + _int8array: function(arr){ + write('int8array:'); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + _uint16array: function(arr){ + write('uint16array:'); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + _int16array: function(arr){ + write('int16array:'); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + _uint32array: function(arr){ + write('uint32array:'); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + _int32array: function(arr){ + write('int32array:'); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + _float32array: function(arr){ + write('float32array:'); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + _float64array: function(arr){ + write('float64array:'); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + _arraybuffer: function(arr){ + write('arraybuffer:'); + return this.dispatch(new Uint8Array(arr)); + }, + _url: function(url) { + return write('url:' + url.toString(), 'utf8'); + }, + _map: function(map) { + write('map:'); + var arr = Array.from(map); + return this._array(arr, options.unorderedSets !== false); + }, + _set: function(set) { + write('set:'); + var arr = Array.from(set); + return this._array(arr, options.unorderedSets !== false); + }, + _file: function(file) { + write('file:'); + return this.dispatch([file.name, file.size, file.type, file.lastModfied]); + }, + _blob: function() { + if (options.ignoreUnknown) { + return write('[blob]'); + } + + throw Error('Hashing Blob objects is currently not supported\n' + + '(see https://github.com/puleos/object-hash/issues/26)\n' + + 'Use "options.replacer" or "options.ignoreUnknown"\n'); + }, + _domwindow: function() { return write('domwindow'); }, + _bigint: function(number){ + return write('bigint:' + number.toString()); + }, + /* Node.js standard native objects */ + _process: function() { return write('process'); }, + _timer: function() { return write('timer'); }, + _pipe: function() { return write('pipe'); }, + _tcp: function() { return write('tcp'); }, + _udp: function() { return write('udp'); }, + _tty: function() { return write('tty'); }, + _statwatcher: function() { return write('statwatcher'); }, + _securecontext: function() { return write('securecontext'); }, + _connection: function() { return write('connection'); }, + _zlib: function() { return write('zlib'); }, + _context: function() { return write('context'); }, + _nodescript: function() { return write('nodescript'); }, + _httpparser: function() { return write('httpparser'); }, + _dataview: function() { return write('dataview'); }, + _signal: function() { return write('signal'); }, + _fsevent: function() { return write('fsevent'); }, + _tlswrap: function() { return write('tlswrap'); }, + }; +} + +// Mini-implementation of stream.PassThrough +// We are far from having need for the full implementation, and we can +// make assumptions like "many writes, then only one final read" +// and we can ignore encoding specifics +function PassThrough() { + return { + buf: '', + + write: function(b) { + this.buf += b; + }, + + end: function(b) { + this.buf += b; + }, + + read: function() { + return this.buf; + } + }; +} diff --git a/node_modules/object-hash/package.json b/node_modules/object-hash/package.json new file mode 100644 index 0000000000000000000000000000000000000000..a72557f638b41c66bb77a7903c11ede3685db54b --- /dev/null +++ b/node_modules/object-hash/package.json @@ -0,0 +1,53 @@ +{ + "name": "object-hash", + "version": "3.0.0", + "description": "Generate hashes from javascript objects in node and the browser.", + "homepage": "https://github.com/puleos/object-hash", + "repository": { + "type": "git", + "url": "https://github.com/puleos/object-hash" + }, + "keywords": [ + "object", + "hash", + "sha1", + "md5" + ], + "bugs": { + "url": "https://github.com/puleos/object-hash/issues" + }, + "scripts": { + "test": "node ./node_modules/.bin/mocha test", + "prepublish": "gulp dist" + }, + "author": "Scott Puleo ", + "files": [ + "index.js", + "dist/object_hash.js" + ], + "license": "MIT", + "devDependencies": { + "browserify": "^16.2.3", + "gulp": "^4.0.0", + "gulp-browserify": "^0.5.1", + "gulp-coveralls": "^0.1.4", + "gulp-exec": "^3.0.1", + "gulp-istanbul": "^1.1.3", + "gulp-jshint": "^2.0.0", + "gulp-mocha": "^5.0.0", + "gulp-rename": "^1.2.0", + "gulp-replace": "^1.0.0", + "gulp-uglify": "^3.0.0", + "jshint": "^2.8.0", + "jshint-stylish": "^2.1.0", + "karma": "^4.2.0", + "karma-chrome-launcher": "^2.2.0", + "karma-mocha": "^1.3.0", + "mocha": "^6.2.0" + }, + "engines": { + "node": ">= 6" + }, + "main": "./index.js", + "browser": "./dist/object_hash.js" +} diff --git a/node_modules/object-hash/readme.markdown b/node_modules/object-hash/readme.markdown new file mode 100644 index 0000000000000000000000000000000000000000..c507cf8cec1968ccefa9181a94444795dda43e2d --- /dev/null +++ b/node_modules/object-hash/readme.markdown @@ -0,0 +1,198 @@ +# object-hash + +Generate hashes from objects and values in node and the browser. Uses node.js +crypto module for hashing. Supports SHA1 and many others (depending on the platform) +as well as custom streams (e.g. CRC32). + +[![NPM](https://nodei.co/npm/object-hash.png?downloads=true&downloadRank=true)](https://www.npmjs.com/package/object-hash) + +[![Travis CI](https://secure.travis-ci.org/puleos/object-hash.png?branch=master)](https://secure.travis-ci.org/puleos/object-hash?branch=master) +[![Coverage Status](https://coveralls.io/repos/puleos/object-hash/badge.svg?branch=master&service=github)](https://coveralls.io/github/puleos/object-hash?branch=master) + +* Hash values of any type. +* Supports a keys only option for grouping similar objects with different values. + +```js +var hash = require('object-hash'); + +hash({foo: 'bar'}) // => '67b69634f9880a282c14a0f0cb7ba20cf5d677e9' +hash([1, 2, 2.718, 3.14159]) // => '136b9b88375971dff9f1af09d7356e3e04281951' +``` + +## Versioning Disclaimer + +Starting with version `1.1.8` (released April 2017), new versions will consider +the exact returned hash part of the API contract, i.e. changes that will affect +hash values will be considered `semver-major`. Previous versions may violate +that expectation. + +For more information, see [this discussion](https://github.com/puleos/object-hash/issues/30). + +## hash(value, options) + +Generate a hash from any object or type. Defaults to sha1 with hex encoding. + +* `algorithm` hash algo to be used: 'sha1', 'md5', 'passthrough'. default: sha1 + * This supports the algorithms returned by `crypto.getHashes()`. Note that the default of SHA-1 is not considered secure, and a stronger algorithm should be used if a cryptographical hash is desired. + * This also supports the `passthrough` algorith, which will return the information that would otherwise have been hashed. +* `excludeValues` {true|false} hash object keys, values ignored. default: false +* `encoding` hash encoding, supports 'buffer', 'hex', 'binary', 'base64'. default: hex +* `ignoreUnknown` {true|*false} ignore unknown object types. default: false +* `replacer` optional function that replaces values before hashing. default: accept all values +* `respectFunctionProperties` {true|false} Whether properties on functions are considered when hashing. default: true +* `respectFunctionNames` {true|false} consider `name` property of functions for hashing. default: true +* `respectType` {true|false} Whether special type attributes (`.prototype`, `.__proto__`, `.constructor`) + are hashed. default: true +* `unorderedArrays` {true|false} Sort all arrays before hashing. Note that this affects *all* collections, + i.e. including typed arrays, Sets, Maps, etc. default: false +* `unorderedSets` {true|false} Sort `Set` and `Map` instances before hashing, i.e. make + `hash(new Set([1, 2])) == hash(new Set([2, 1]))` return `true`. default: true +* `unorderedObjects` {true|false} Sort objects before hashing, i.e. make `hash({ x: 1, y: 2 }) === hash({ y: 2, x: 1 })`. default: true +* `excludeKeys` optional function for excluding specific key(s) from hashing, if true is returned then exclude from hash. default: include all keys + +## hash.sha1(value) + +Hash using the sha1 algorithm. + +Note that SHA-1 is not considered secure, and a stronger algorithm should be used if a cryptographical hash is desired. + +*Sugar method, equivalent to* `hash(value, {algorithm: 'sha1'})` + +## hash.keys(value) + +Hash object keys using the sha1 algorithm, values ignored. + +*Sugar method, equivalent to* `hash(value, {excludeValues: true})` + +## hash.MD5(value) + +Hash using the md5 algorithm. + +Note that the MD5 algorithm is not considered secure, and a stronger algorithm should be used if a cryptographical hash is desired. + +*Sugar method, equivalent to* `hash(value, {algorithm: 'md5'})` + +## hash.keysMD5(value) + +Hash object keys using the md5 algorithm, values ignored. + +Note that the MD5 algorithm is not considered secure, and a stronger algorithm should be used if a cryptographical hash is desired. + +*Sugar method, equivalent to* `hash(value, {algorithm: 'md5', excludeValues: true})` + +## hash.writeToStream(value, [options,] stream) + +Write the information that would otherwise have been hashed to a stream, e.g.: + +```js +hash.writeToStream({foo: 'bar', a: 42}, {respectType: false}, process.stdout) +// => e.g. 'object:a:number:42foo:string:bar' +``` + +## Installation + +node: + +```js +npm install object-hash +``` + +browser: */dist/object_hash.js* + +```html + + + +``` + +## Example usage + +```js +var hash = require('object-hash'); + +var peter = { name: 'Peter', stapler: false, friends: ['Joanna', 'Michael', 'Samir'] }; +var michael = { name: 'Michael', stapler: false, friends: ['Peter', 'Samir'] }; +var bob = { name: 'Bob', stapler: true, friends: [] }; + +/*** + * sha1 hex encoding (default) + */ +hash(peter); +// 14fa461bf4b98155e82adc86532938553b4d33a9 +hash(michael); +// 4b2b30e27699979ce46714253bc2213010db039c +hash(bob); +// 38d96106bc8ef3d8bd369b99bb6972702c9826d5 + +/*** + * hash object keys, values ignored + */ +hash(peter, { excludeValues: true }); +// 48f370a772c7496f6c9d2e6d92e920c87dd00a5c +hash(michael, { excludeValues: true }); +// 48f370a772c7496f6c9d2e6d92e920c87dd00a5c +hash.keys(bob); +// 48f370a772c7496f6c9d2e6d92e920c87dd00a5c + +/*** + * hash object, ignore specific key(s) + */ +hash(peter, { excludeKeys: function(key) { + if ( key === 'friends') { + return true; + } + return false; + } +}); +// 66b7d7e64871aa9fda1bdc8e88a28df797648d80 + +/*** + * md5 base64 encoding + */ +hash(peter, { algorithm: 'md5', encoding: 'base64' }); +// 6rkWaaDiG3NynWw4svGH7g== +hash(michael, { algorithm: 'md5', encoding: 'base64' }); +// djXaWpuWVJeOF8Sb6SFFNg== +hash(bob, { algorithm: 'md5', encoding: 'base64' }); +// lFzkw/IJ8/12jZI0rQeS3w== +``` + +## Legacy Browser Support + +IE <= 8 and Opera <= 11 support dropped in version 0.3.0. If you require +legacy browser support you must either use an ES5 shim or use version 0.2.5 +of this module. + +## Development + +```sh-session +git clone https://github.com/puleos/object-hash +``` + +## Node Docker Wrapper + +If you want to stand this up in a docker container, you should take at look +at the [![node-object-hash](https://github.com/bean5/node-object-hash)](https://github.com/bean5/node-object-hash) project. + +### gulp tasks + +* `gulp watch` (default) watch files, test and lint on change/add +* `gulp test` unit tests +* `gulp karma` browser unit tests +* `gulp lint` jshint +* `gulp dist` create browser version in /dist + +## License + +MIT + +## Changelog + +### v2.0.0 + +Only Node.js versions `>= 6.0.0` are being tested in CI now. +No other breaking changes were introduced. diff --git a/node_modules/once/LICENSE b/node_modules/once/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..19129e315fe593965a2fdd50ec0d1253bcbd2ece --- /dev/null +++ b/node_modules/once/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/once/README.md b/node_modules/once/README.md new file mode 100644 index 0000000000000000000000000000000000000000..1f1ffca9330e3ceddd54106e1ba63322fc9751f8 --- /dev/null +++ b/node_modules/once/README.md @@ -0,0 +1,79 @@ +# once + +Only call a function once. + +## usage + +```javascript +var once = require('once') + +function load (file, cb) { + cb = once(cb) + loader.load('file') + loader.once('load', cb) + loader.once('error', cb) +} +``` + +Or add to the Function.prototype in a responsible way: + +```javascript +// only has to be done once +require('once').proto() + +function load (file, cb) { + cb = cb.once() + loader.load('file') + loader.once('load', cb) + loader.once('error', cb) +} +``` + +Ironically, the prototype feature makes this module twice as +complicated as necessary. + +To check whether you function has been called, use `fn.called`. Once the +function is called for the first time the return value of the original +function is saved in `fn.value` and subsequent calls will continue to +return this value. + +```javascript +var once = require('once') + +function load (cb) { + cb = once(cb) + var stream = createStream() + stream.once('data', cb) + stream.once('end', function () { + if (!cb.called) cb(new Error('not found')) + }) +} +``` + +## `once.strict(func)` + +Throw an error if the function is called twice. + +Some functions are expected to be called only once. Using `once` for them would +potentially hide logical errors. + +In the example below, the `greet` function has to call the callback only once: + +```javascript +function greet (name, cb) { + // return is missing from the if statement + // when no name is passed, the callback is called twice + if (!name) cb('Hello anonymous') + cb('Hello ' + name) +} + +function log (msg) { + console.log(msg) +} + +// this will print 'Hello anonymous' but the logical error will be missed +greet(null, once(msg)) + +// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time +greet(null, once.strict(msg)) +``` diff --git a/node_modules/once/once.js b/node_modules/once/once.js new file mode 100644 index 0000000000000000000000000000000000000000..235406736d9d9485bbc0dd0820dd661110da7a4d --- /dev/null +++ b/node_modules/once/once.js @@ -0,0 +1,42 @@ +var wrappy = require('wrappy') +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} diff --git a/node_modules/once/package.json b/node_modules/once/package.json new file mode 100644 index 0000000000000000000000000000000000000000..16815b2fa111936c9681a1b76c5fce98421c1631 --- /dev/null +++ b/node_modules/once/package.json @@ -0,0 +1,33 @@ +{ + "name": "once", + "version": "1.4.0", + "description": "Run a function exactly one time", + "main": "once.js", + "directories": { + "test": "test" + }, + "dependencies": { + "wrappy": "1" + }, + "devDependencies": { + "tap": "^7.0.1" + }, + "scripts": { + "test": "tap test/*.js" + }, + "files": [ + "once.js" + ], + "repository": { + "type": "git", + "url": "git://github.com/isaacs/once" + }, + "keywords": [ + "once", + "function", + "one", + "single" + ], + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC" +} diff --git a/node_modules/path-is-absolute/index.js b/node_modules/path-is-absolute/index.js new file mode 100644 index 0000000000000000000000000000000000000000..22aa6c35607997d2b73fab3e4b831469ca4d5ba1 --- /dev/null +++ b/node_modules/path-is-absolute/index.js @@ -0,0 +1,20 @@ +'use strict'; + +function posix(path) { + return path.charAt(0) === '/'; +} + +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); + + // UNC paths are always absolute + return Boolean(result[2] || isUnc); +} + +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; diff --git a/node_modules/path-is-absolute/license b/node_modules/path-is-absolute/license new file mode 100644 index 0000000000000000000000000000000000000000..654d0bfe943437d43242325b1fbcff5f400d84ee --- /dev/null +++ b/node_modules/path-is-absolute/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +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/path-is-absolute/package.json b/node_modules/path-is-absolute/package.json new file mode 100644 index 0000000000000000000000000000000000000000..91196d5e9c1336c352ade94008fe24bb6f1d69b9 --- /dev/null +++ b/node_modules/path-is-absolute/package.json @@ -0,0 +1,43 @@ +{ + "name": "path-is-absolute", + "version": "1.0.1", + "description": "Node.js 0.12 path.isAbsolute() ponyfill", + "license": "MIT", + "repository": "sindresorhus/path-is-absolute", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "xo && node test.js" + }, + "files": [ + "index.js" + ], + "keywords": [ + "path", + "paths", + "file", + "dir", + "absolute", + "isabsolute", + "is-absolute", + "built-in", + "util", + "utils", + "core", + "ponyfill", + "polyfill", + "shim", + "is", + "detect", + "check" + ], + "devDependencies": { + "xo": "^0.16.0" + } +} diff --git a/node_modules/path-is-absolute/readme.md b/node_modules/path-is-absolute/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..8dbdf5fcb775e16ceffa851db56d47651b20fcaf --- /dev/null +++ b/node_modules/path-is-absolute/readme.md @@ -0,0 +1,59 @@ +# path-is-absolute [![Build Status](https://travis-ci.org/sindresorhus/path-is-absolute.svg?branch=master)](https://travis-ci.org/sindresorhus/path-is-absolute) + +> Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) [ponyfill](https://ponyfill.com) + + +## Install + +``` +$ npm install --save path-is-absolute +``` + + +## Usage + +```js +const pathIsAbsolute = require('path-is-absolute'); + +// Running on Linux +pathIsAbsolute('/home/foo'); +//=> true +pathIsAbsolute('C:/Users/foo'); +//=> false + +// Running on Windows +pathIsAbsolute('C:/Users/foo'); +//=> true +pathIsAbsolute('/home/foo'); +//=> false + +// Running on any OS +pathIsAbsolute.posix('/home/foo'); +//=> true +pathIsAbsolute.posix('C:/Users/foo'); +//=> false +pathIsAbsolute.win32('C:/Users/foo'); +//=> true +pathIsAbsolute.win32('/home/foo'); +//=> false +``` + + +## API + +See the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path). + +### pathIsAbsolute(path) + +### pathIsAbsolute.posix(path) + +POSIX specific version. + +### pathIsAbsolute.win32(path) + +Windows specific version. + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/node_modules/path-parse/LICENSE b/node_modules/path-parse/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..810f3dbea83b538626b466a1aa3d60ed8cf27281 --- /dev/null +++ b/node_modules/path-parse/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Javier Blanco + +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/path-parse/README.md b/node_modules/path-parse/README.md new file mode 100644 index 0000000000000000000000000000000000000000..05097f86aef364d88bab44fac2ce01c2d825ada9 --- /dev/null +++ b/node_modules/path-parse/README.md @@ -0,0 +1,42 @@ +# path-parse [![Build Status](https://travis-ci.org/jbgutierrez/path-parse.svg?branch=master)](https://travis-ci.org/jbgutierrez/path-parse) + +> Node.js [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) [ponyfill](https://ponyfill.com). + +## Install + +``` +$ npm install --save path-parse +``` + +## Usage + +```js +var pathParse = require('path-parse'); + +pathParse('/home/user/dir/file.txt'); +//=> { +// root : "/", +// dir : "/home/user/dir", +// base : "file.txt", +// ext : ".txt", +// name : "file" +// } +``` + +## API + +See [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) docs. + +### pathParse(path) + +### pathParse.posix(path) + +The Posix specific version. + +### pathParse.win32(path) + +The Windows specific version. + +## License + +MIT © [Javier Blanco](http://jbgutierrez.info) diff --git a/node_modules/path-parse/index.js b/node_modules/path-parse/index.js new file mode 100644 index 0000000000000000000000000000000000000000..f062d0a23e6299b2eee1797c6c476159348f147c --- /dev/null +++ b/node_modules/path-parse/index.js @@ -0,0 +1,75 @@ +'use strict'; + +var isWindows = process.platform === 'win32'; + +// Regex to split a windows path into into [dir, root, basename, name, ext] +var splitWindowsRe = + /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/; + +var win32 = {}; + +function win32SplitPath(filename) { + return splitWindowsRe.exec(filename).slice(1); +} + +win32.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = win32SplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[1], + dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3] + }; +}; + + + +// Split a filename into [dir, root, basename, name, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/; +var posix = {}; + + +function posixSplitPath(filename) { + return splitPathRe.exec(filename).slice(1); +} + + +posix.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = posixSplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + + return { + root: allParts[1], + dir: allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3], + }; +}; + + +if (isWindows) + module.exports = win32.parse; +else /* posix */ + module.exports = posix.parse; + +module.exports.posix = posix.parse; +module.exports.win32 = win32.parse; diff --git a/node_modules/path-parse/package.json b/node_modules/path-parse/package.json new file mode 100644 index 0000000000000000000000000000000000000000..36c23f84e7063cc7063844a278fe851afaa5da09 --- /dev/null +++ b/node_modules/path-parse/package.json @@ -0,0 +1,33 @@ +{ + "name": "path-parse", + "version": "1.0.7", + "description": "Node.js path.parse() ponyfill", + "main": "index.js", + "scripts": { + "test": "node test.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/jbgutierrez/path-parse.git" + }, + "keywords": [ + "path", + "paths", + "file", + "dir", + "parse", + "built-in", + "util", + "utils", + "core", + "ponyfill", + "polyfill", + "shim" + ], + "author": "Javier Blanco ", + "license": "MIT", + "bugs": { + "url": "https://github.com/jbgutierrez/path-parse/issues" + }, + "homepage": "https://github.com/jbgutierrez/path-parse#readme" +} diff --git a/node_modules/picocolors/LICENSE b/node_modules/picocolors/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..496098c6e895087565c5b2692d675e4555e794af --- /dev/null +++ b/node_modules/picocolors/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov + +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/picocolors/README.md b/node_modules/picocolors/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8e47aa8eea126388d0773e7f86f91471eb5e2150 --- /dev/null +++ b/node_modules/picocolors/README.md @@ -0,0 +1,21 @@ +# picocolors + +The tiniest and the fastest library for terminal output formatting with ANSI colors. + +```javascript +import pc from "picocolors" + +console.log( + pc.green(`How are ${pc.italic(`you`)} doing?`) +) +``` + +- **No dependencies.** +- **14 times** smaller and **2 times** faster than chalk. +- Used by popular tools like PostCSS, SVGO, Stylelint, and Browserslist. +- Node.js v6+ & browsers support. Support for both CJS and ESM projects. +- TypeScript type declarations included. +- [`NO_COLOR`](https://no-color.org/) friendly. + +## Docs +Read **[full docs](https://github.com/alexeyraspopov/picocolors#readme)** on GitHub. diff --git a/node_modules/picocolors/package.json b/node_modules/picocolors/package.json new file mode 100644 index 0000000000000000000000000000000000000000..85a12d523497c6e82a883208287860eb73562bef --- /dev/null +++ b/node_modules/picocolors/package.json @@ -0,0 +1,25 @@ +{ + "name": "picocolors", + "version": "1.0.0", + "main": "./picocolors.js", + "types": "./picocolors.d.ts", + "browser": { + "./picocolors.js": "./picocolors.browser.js" + }, + "sideEffects": false, + "description": "The tiniest and the fastest library for terminal output formatting with ANSI colors", + "files": [ + "picocolors.*", + "types.ts" + ], + "keywords": [ + "terminal", + "colors", + "formatting", + "cli", + "console" + ], + "author": "Alexey Raspopov", + "repository": "alexeyraspopov/picocolors", + "license": "ISC" +} diff --git a/node_modules/picocolors/picocolors.browser.js b/node_modules/picocolors/picocolors.browser.js new file mode 100644 index 0000000000000000000000000000000000000000..5eb9fbe8b5a0d60e91c88a2851b3b975d70261bf --- /dev/null +++ b/node_modules/picocolors/picocolors.browser.js @@ -0,0 +1,4 @@ +var x=String; +var create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}}; +module.exports=create(); +module.exports.createColors = create; diff --git a/node_modules/picocolors/picocolors.d.ts b/node_modules/picocolors/picocolors.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..94e146a82221e527be835656549ddfb1b41fd0c9 --- /dev/null +++ b/node_modules/picocolors/picocolors.d.ts @@ -0,0 +1,5 @@ +import { Colors } from "./types" + +declare const picocolors: Colors & { createColors: (enabled?: boolean) => Colors } + +export = picocolors diff --git a/node_modules/picocolors/picocolors.js b/node_modules/picocolors/picocolors.js new file mode 100644 index 0000000000000000000000000000000000000000..fdb630451d89b134b069355bb97556e39b0b171a --- /dev/null +++ b/node_modules/picocolors/picocolors.js @@ -0,0 +1,58 @@ +let tty = require("tty") + +let isColorSupported = + !("NO_COLOR" in process.env || process.argv.includes("--no-color")) && + ("FORCE_COLOR" in process.env || + process.argv.includes("--color") || + process.platform === "win32" || + (tty.isatty(1) && process.env.TERM !== "dumb") || + "CI" in process.env) + +let formatter = + (open, close, replace = open) => + input => { + let string = "" + input + let index = string.indexOf(close, open.length) + return ~index + ? open + replaceClose(string, close, replace, index) + close + : open + string + close + } + +let replaceClose = (string, close, replace, index) => { + let start = string.substring(0, index) + replace + let end = string.substring(index + close.length) + let nextIndex = end.indexOf(close) + return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end +} + +let createColors = (enabled = isColorSupported) => ({ + isColorSupported: enabled, + reset: enabled ? s => `\x1b[0m${s}\x1b[0m` : String, + bold: enabled ? formatter("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m") : String, + dim: enabled ? formatter("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m") : String, + italic: enabled ? formatter("\x1b[3m", "\x1b[23m") : String, + underline: enabled ? formatter("\x1b[4m", "\x1b[24m") : String, + inverse: enabled ? formatter("\x1b[7m", "\x1b[27m") : String, + hidden: enabled ? formatter("\x1b[8m", "\x1b[28m") : String, + strikethrough: enabled ? formatter("\x1b[9m", "\x1b[29m") : String, + black: enabled ? formatter("\x1b[30m", "\x1b[39m") : String, + red: enabled ? formatter("\x1b[31m", "\x1b[39m") : String, + green: enabled ? formatter("\x1b[32m", "\x1b[39m") : String, + yellow: enabled ? formatter("\x1b[33m", "\x1b[39m") : String, + blue: enabled ? formatter("\x1b[34m", "\x1b[39m") : String, + magenta: enabled ? formatter("\x1b[35m", "\x1b[39m") : String, + cyan: enabled ? formatter("\x1b[36m", "\x1b[39m") : String, + white: enabled ? formatter("\x1b[37m", "\x1b[39m") : String, + gray: enabled ? formatter("\x1b[90m", "\x1b[39m") : String, + bgBlack: enabled ? formatter("\x1b[40m", "\x1b[49m") : String, + bgRed: enabled ? formatter("\x1b[41m", "\x1b[49m") : String, + bgGreen: enabled ? formatter("\x1b[42m", "\x1b[49m") : String, + bgYellow: enabled ? formatter("\x1b[43m", "\x1b[49m") : String, + bgBlue: enabled ? formatter("\x1b[44m", "\x1b[49m") : String, + bgMagenta: enabled ? formatter("\x1b[45m", "\x1b[49m") : String, + bgCyan: enabled ? formatter("\x1b[46m", "\x1b[49m") : String, + bgWhite: enabled ? formatter("\x1b[47m", "\x1b[49m") : String, +}) + +module.exports = createColors() +module.exports.createColors = createColors diff --git a/node_modules/picocolors/types.ts b/node_modules/picocolors/types.ts new file mode 100644 index 0000000000000000000000000000000000000000..b4bacee4909e7f562fb13f89720c8ae57c4922fc --- /dev/null +++ b/node_modules/picocolors/types.ts @@ -0,0 +1,30 @@ +export type Formatter = (input: string | number | null | undefined) => string + +export interface Colors { + isColorSupported: boolean + reset: Formatter + bold: Formatter + dim: Formatter + italic: Formatter + underline: Formatter + inverse: Formatter + hidden: Formatter + strikethrough: Formatter + black: Formatter + red: Formatter + green: Formatter + yellow: Formatter + blue: Formatter + magenta: Formatter + cyan: Formatter + white: Formatter + gray: Formatter + bgBlack: Formatter + bgRed: Formatter + bgGreen: Formatter + bgYellow: Formatter + bgBlue: Formatter + bgMagenta: Formatter + bgCyan: Formatter + bgWhite: Formatter +} diff --git a/node_modules/picomatch/CHANGELOG.md b/node_modules/picomatch/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..8ccc6c1bab0138d0d4da5e604fcb9608790b1692 --- /dev/null +++ b/node_modules/picomatch/CHANGELOG.md @@ -0,0 +1,136 @@ +# 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. + +
+ +## 2.3.1 (2022-01-02) + +### Fixed + +* Fixes bug when a pattern containing an expression after the closing parenthesis (`/!(*.d).{ts,tsx}`) was incorrectly converted to regexp ([9f241ef](https://github.com/micromatch/picomatch/commit/9f241ef)). + +### Changed + +* Some documentation improvements ([f81d236](https://github.com/micromatch/picomatch/commit/f81d236), [421e0e7](https://github.com/micromatch/picomatch/commit/421e0e7)). + +## 2.3.0 (2021-05-21) + +### Fixed + +* Fixes bug where file names with two dots were not being matched consistently with negation extglobs containing a star ([56083ef](https://github.com/micromatch/picomatch/commit/56083ef)) + +## 2.2.3 (2021-04-10) + +### Fixed + +* Do not skip pattern seperator for square brackets ([fb08a30](https://github.com/micromatch/picomatch/commit/fb08a30)). +* Set negatedExtGlob also if it does not span the whole pattern ([032e3f5](https://github.com/micromatch/picomatch/commit/032e3f5)). + +## 2.2.2 (2020-03-21) + +### Fixed + +* Correctly handle parts of the pattern after parentheses in the `scan` method ([e15b920](https://github.com/micromatch/picomatch/commit/e15b920)). + +## 2.2.1 (2020-01-04) + +* Fixes [#49](https://github.com/micromatch/picomatch/issues/49), so that braces with no sets or ranges are now propertly treated as literals. + +## 2.2.0 (2020-01-04) + +* Disable fastpaths mode for the parse method ([5b8d33f](https://github.com/micromatch/picomatch/commit/5b8d33f)) +* Add `tokens`, `slashes`, and `parts` to the object returned by `picomatch.scan()`. + +## 2.1.0 (2019-10-31) + +* add benchmarks for scan ([4793b92](https://github.com/micromatch/picomatch/commit/4793b92)) +* Add eslint object-curly-spacing rule ([707c650](https://github.com/micromatch/picomatch/commit/707c650)) +* Add prefer-const eslint rule ([5c7501c](https://github.com/micromatch/picomatch/commit/5c7501c)) +* Add support for nonegate in scan API ([275c9b9](https://github.com/micromatch/picomatch/commit/275c9b9)) +* Change lets to consts. Move root import up. ([4840625](https://github.com/micromatch/picomatch/commit/4840625)) +* closes https://github.com/micromatch/picomatch/issues/21 ([766bcb0](https://github.com/micromatch/picomatch/commit/766bcb0)) +* Fix "Extglobs" table in readme ([eb19da8](https://github.com/micromatch/picomatch/commit/eb19da8)) +* fixes https://github.com/micromatch/picomatch/issues/20 ([9caca07](https://github.com/micromatch/picomatch/commit/9caca07)) +* fixes https://github.com/micromatch/picomatch/issues/26 ([fa58f45](https://github.com/micromatch/picomatch/commit/fa58f45)) +* Lint test ([d433a34](https://github.com/micromatch/picomatch/commit/d433a34)) +* lint unit tests ([0159b55](https://github.com/micromatch/picomatch/commit/0159b55)) +* Make scan work with noext ([6c02e03](https://github.com/micromatch/picomatch/commit/6c02e03)) +* minor linting ([c2a2b87](https://github.com/micromatch/picomatch/commit/c2a2b87)) +* minor parser improvements ([197671d](https://github.com/micromatch/picomatch/commit/197671d)) +* remove eslint since it... ([07876fa](https://github.com/micromatch/picomatch/commit/07876fa)) +* remove funding file ([8ebe96d](https://github.com/micromatch/picomatch/commit/8ebe96d)) +* Remove unused funks ([cbc6d54](https://github.com/micromatch/picomatch/commit/cbc6d54)) +* Run eslint during pretest, fix existing eslint findings ([0682367](https://github.com/micromatch/picomatch/commit/0682367)) +* support `noparen` in scan ([3d37569](https://github.com/micromatch/picomatch/commit/3d37569)) +* update changelog ([7b34e77](https://github.com/micromatch/picomatch/commit/7b34e77)) +* update travis ([777f038](https://github.com/micromatch/picomatch/commit/777f038)) +* Use eslint-disable-next-line instead of eslint-disable ([4e7c1fd](https://github.com/micromatch/picomatch/commit/4e7c1fd)) + +## 2.0.7 (2019-05-14) + +* 2.0.7 ([9eb9a71](https://github.com/micromatch/picomatch/commit/9eb9a71)) +* supports lookbehinds ([1f63f7e](https://github.com/micromatch/picomatch/commit/1f63f7e)) +* update .verb.md file with typo change ([2741279](https://github.com/micromatch/picomatch/commit/2741279)) +* fix: typo in README ([0753e44](https://github.com/micromatch/picomatch/commit/0753e44)) + +## 2.0.4 (2019-04-10) + +### Fixed + +- Readme link [fixed](https://github.com/micromatch/picomatch/pull/13/commits/a96ab3aa2b11b6861c23289964613d85563b05df) by @danez. +- `options.capture` now works as expected when fastpaths are enabled. See https://github.com/micromatch/picomatch/pull/12/commits/26aefd71f1cfaf95c37f1c1fcab68a693b037304. Thanks to @DrPizza. + +## 2.0.0 (2019-04-10) + +### Added + +- Adds support for `options.onIgnore`. See the readme for details +- Adds support for `options.onResult`. See the readme for details + +### Breaking changes + +- The unixify option was renamed to `windows` +- caching and all related options and methods have been removed + +## 1.0.0 (2018-11-05) + +- adds `.onMatch` option +- improvements to `.scan` method +- numerous improvements and optimizations for matching and parsing +- better windows path handling + +## 0.1.0 - 2017-04-13 + +First release. + + +[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog diff --git a/node_modules/picomatch/LICENSE b/node_modules/picomatch/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..3608dca25e30b572b6ad6935c8c7918bf70e3d2f --- /dev/null +++ b/node_modules/picomatch/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017-present, 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/picomatch/README.md b/node_modules/picomatch/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b0526e28a319d84a5a7b654d5c93d87aab9350e3 --- /dev/null +++ b/node_modules/picomatch/README.md @@ -0,0 +1,708 @@ +

Picomatch

+ +

+ +version + + +test status + + +coverage status + + +downloads + +

+ +
+
+ +

+Blazing fast and accurate glob matcher written in JavaScript.
+No dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions. +

+ +
+
+ +## Why picomatch? + +* **Lightweight** - No dependencies +* **Minimal** - Tiny API surface. Main export is a function that takes a glob pattern and returns a matcher function. +* **Fast** - Loads in about 2ms (that's several times faster than a [single frame of a HD movie](http://www.endmemo.com/sconvert/framespersecondframespermillisecond.php) at 60fps) +* **Performant** - Use the returned matcher function to speed up repeat matching (like when watching files) +* **Accurate matching** - Using wildcards (`*` and `?`), globstars (`**`) for nested directories, [advanced globbing](#advanced-globbing) with extglobs, braces, and POSIX brackets, and support for escaping special characters with `\` or quotes. +* **Well tested** - Thousands of unit tests + +See the [library comparison](#library-comparisons) to other libraries. + +
+
+ +## Table of Contents + +
Click to expand + +- [Install](#install) +- [Usage](#usage) +- [API](#api) + * [picomatch](#picomatch) + * [.test](#test) + * [.matchBase](#matchbase) + * [.isMatch](#ismatch) + * [.parse](#parse) + * [.scan](#scan) + * [.compileRe](#compilere) + * [.makeRe](#makere) + * [.toRegex](#toregex) +- [Options](#options) + * [Picomatch options](#picomatch-options) + * [Scan Options](#scan-options) + * [Options Examples](#options-examples) +- [Globbing features](#globbing-features) + * [Basic globbing](#basic-globbing) + * [Advanced globbing](#advanced-globbing) + * [Braces](#braces) + * [Matching special characters as literals](#matching-special-characters-as-literals) +- [Library Comparisons](#library-comparisons) +- [Benchmarks](#benchmarks) +- [Philosophies](#philosophies) +- [About](#about) + * [Author](#author) + * [License](#license) + +_(TOC generated by [verb](https://github.com/verbose/verb) using [markdown-toc](https://github.com/jonschlinkert/markdown-toc))_ + +
+ +
+
+ +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +npm install --save picomatch +``` + +
+ +## Usage + +The main export is a function that takes a glob pattern and an options object and returns a function for matching strings. + +```js +const pm = require('picomatch'); +const isMatch = pm('*.js'); + +console.log(isMatch('abcd')); //=> false +console.log(isMatch('a.js')); //=> true +console.log(isMatch('a.md')); //=> false +console.log(isMatch('a/b.js')); //=> false +``` + +
+ +## API + +### [picomatch](lib/picomatch.js#L32) + +Creates a matcher function from one or more glob patterns. The returned function takes a string to match as its first argument, and returns true if the string is a match. The returned matcher function also takes a boolean as the second argument that, when true, returns an object with additional information. + +**Params** + +* `globs` **{String|Array}**: One or more glob patterns. +* `options` **{Object=}** +* `returns` **{Function=}**: Returns a matcher function. + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch(glob[, options]); + +const isMatch = picomatch('*.!(*a)'); +console.log(isMatch('a.a')); //=> false +console.log(isMatch('a.b')); //=> true +``` + +### [.test](lib/picomatch.js#L117) + +Test `input` with the given `regex`. This is used by the main `picomatch()` function to test the input string. + +**Params** + +* `input` **{String}**: String to test. +* `regex` **{RegExp}** +* `returns` **{Object}**: Returns an object with matching info. + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.test(input, regex[, options]); + +console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); +// { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } +``` + +### [.matchBase](lib/picomatch.js#L161) + +Match the basename of a filepath. + +**Params** + +* `input` **{String}**: String to test. +* `glob` **{RegExp|String}**: Glob pattern or regex created by [.makeRe](#makeRe). +* `returns` **{Boolean}** + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.matchBase(input, glob[, options]); +console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true +``` + +### [.isMatch](lib/picomatch.js#L183) + +Returns true if **any** of the given glob `patterns` match the specified `string`. + +**Params** + +* **{String|Array}**: str The string to test. +* **{String|Array}**: patterns One or more glob patterns to use for matching. +* **{Object}**: See available [options](#options). +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.isMatch(string, patterns[, options]); + +console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true +console.log(picomatch.isMatch('a.a', 'b.*')); //=> false +``` + +### [.parse](lib/picomatch.js#L199) + +Parse a glob pattern to create the source string for a regular expression. + +**Params** + +* `pattern` **{String}** +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with useful properties and output to be used as a regex source string. + +**Example** + +```js +const picomatch = require('picomatch'); +const result = picomatch.parse(pattern[, options]); +``` + +### [.scan](lib/picomatch.js#L231) + +Scan a glob pattern to separate the pattern into segments. + +**Params** + +* `input` **{String}**: Glob pattern to scan. +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.scan(input[, options]); + +const result = picomatch.scan('!./foo/*.js'); +console.log(result); +{ prefix: '!./', + input: '!./foo/*.js', + start: 3, + base: 'foo', + glob: '*.js', + isBrace: false, + isBracket: false, + isGlob: true, + isExtglob: false, + isGlobstar: false, + negated: true } +``` + +### [.compileRe](lib/picomatch.js#L245) + +Compile a regular expression from the `state` object returned by the +[parse()](#parse) method. + +**Params** + +* `state` **{Object}** +* `options` **{Object}** +* `returnOutput` **{Boolean}**: Intended for implementors, this argument allows you to return the raw output from the parser. +* `returnState` **{Boolean}**: Adds the state to a `state` property on the returned regex. Useful for implementors and debugging. +* `returns` **{RegExp}** + +### [.makeRe](lib/picomatch.js#L286) + +Create a regular expression from a parsed glob pattern. + +**Params** + +* `state` **{String}**: The object returned from the `.parse` method. +* `options` **{Object}** +* `returnOutput` **{Boolean}**: Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result. +* `returnState` **{Boolean}**: Implementors may use this argument to return the state from the parsed glob with the returned regular expression. +* `returns` **{RegExp}**: Returns a regex created from the given pattern. + +**Example** + +```js +const picomatch = require('picomatch'); +const state = picomatch.parse('*.js'); +// picomatch.compileRe(state[, options]); + +console.log(picomatch.compileRe(state)); +//=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ +``` + +### [.toRegex](lib/picomatch.js#L321) + +Create a regular expression from the given regex source string. + +**Params** + +* `source` **{String}**: Regular expression source string. +* `options` **{Object}** +* `returns` **{RegExp}** + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.toRegex(source[, options]); + +const { output } = picomatch.parse('*.js'); +console.log(picomatch.toRegex(output)); +//=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ +``` + +
+ +## Options + +### Picomatch options + +The following options may be used with the main `picomatch()` function or any of the methods on the picomatch API. + +| **Option** | **Type** | **Default value** | **Description** | +| --- | --- | --- | --- | +| `basename` | `boolean` | `false` | If set, then patterns without slashes will be matched against the basename of the path if it contains slashes. For example, `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. | +| `bash` | `boolean` | `false` | Follow bash matching rules more strictly - disallows backslashes as escape characters, and treats single stars as globstars (`**`). | +| `capture` | `boolean` | `undefined` | Return regex matches in supporting methods. | +| `contains` | `boolean` | `undefined` | Allows glob to match any part of the given string(s). | +| `cwd` | `string` | `process.cwd()` | Current working directory. Used by `picomatch.split()` | +| `debug` | `boolean` | `undefined` | Debug regular expressions when an error is thrown. | +| `dot` | `boolean` | `false` | Enable dotfile matching. By default, dotfiles are ignored unless a `.` is explicitly defined in the pattern, or `options.dot` is true | +| `expandRange` | `function` | `undefined` | Custom function for expanding ranges in brace patterns, such as `{a..z}`. The function receives the range values as two arguments, and it must return a string to be used in the generated regex. It's recommended that returned strings be wrapped in parentheses. | +| `failglob` | `boolean` | `false` | Throws an error if no matches are found. Based on the bash option of the same name. | +| `fastpaths` | `boolean` | `true` | To speed up processing, full parsing is skipped for a handful common glob patterns. Disable this behavior by setting this option to `false`. | +| `flags` | `string` | `undefined` | Regex flags to use in the generated regex. If defined, the `nocase` option will be overridden. | +| [format](#optionsformat) | `function` | `undefined` | Custom function for formatting the returned string. This is useful for removing leading slashes, converting Windows paths to Posix paths, etc. | +| `ignore` | `array\|string` | `undefined` | One or more glob patterns for excluding strings that should not be matched from the result. | +| `keepQuotes` | `boolean` | `false` | Retain quotes in the generated regex, since quotes may also be used as an alternative to backslashes. | +| `literalBrackets` | `boolean` | `undefined` | When `true`, brackets in the glob pattern will be escaped so that only literal brackets will be matched. | +| `matchBase` | `boolean` | `false` | Alias for `basename` | +| `maxLength` | `boolean` | `65536` | Limit the max length of the input string. An error is thrown if the input string is longer than this value. | +| `nobrace` | `boolean` | `false` | Disable brace matching, so that `{a,b}` and `{1..3}` would be treated as literal characters. | +| `nobracket` | `boolean` | `undefined` | Disable matching with regex brackets. | +| `nocase` | `boolean` | `false` | Make matching case-insensitive. Equivalent to the regex `i` flag. Note that this option is overridden by the `flags` option. | +| `nodupes` | `boolean` | `true` | Deprecated, use `nounique` instead. This option will be removed in a future major release. By default duplicates are removed. Disable uniquification by setting this option to false. | +| `noext` | `boolean` | `false` | Alias for `noextglob` | +| `noextglob` | `boolean` | `false` | Disable support for matching with extglobs (like `+(a\|b)`) | +| `noglobstar` | `boolean` | `false` | Disable support for matching nested directories with globstars (`**`) | +| `nonegate` | `boolean` | `false` | Disable support for negating with leading `!` | +| `noquantifiers` | `boolean` | `false` | Disable support for regex quantifiers (like `a{1,2}`) and treat them as brace patterns to be expanded. | +| [onIgnore](#optionsonIgnore) | `function` | `undefined` | Function to be called on ignored items. | +| [onMatch](#optionsonMatch) | `function` | `undefined` | Function to be called on matched items. | +| [onResult](#optionsonResult) | `function` | `undefined` | Function to be called on all items, regardless of whether or not they are matched or ignored. | +| `posix` | `boolean` | `false` | Support POSIX character classes ("posix brackets"). | +| `posixSlashes` | `boolean` | `undefined` | Convert all slashes in file paths to forward slashes. This does not convert slashes in the glob pattern itself | +| `prepend` | `boolean` | `undefined` | String to prepend to the generated regex used for matching. | +| `regex` | `boolean` | `false` | Use regular expression rules for `+` (instead of matching literal `+`), and for stars that follow closing parentheses or brackets (as in `)*` and `]*`). | +| `strictBrackets` | `boolean` | `undefined` | Throw an error if brackets, braces, or parens are imbalanced. | +| `strictSlashes` | `boolean` | `undefined` | When true, picomatch won't match trailing slashes with single stars. | +| `unescape` | `boolean` | `undefined` | Remove backslashes preceding escaped characters in the glob pattern. By default, backslashes are retained. | +| `unixify` | `boolean` | `undefined` | Alias for `posixSlashes`, for backwards compatibility. | + +picomatch has automatic detection for regex positive and negative lookbehinds. If the pattern contains a negative lookbehind, you must be using Node.js >= 8.10 or else picomatch will throw an error. + +### Scan Options + +In addition to the main [picomatch options](#picomatch-options), the following options may also be used with the [.scan](#scan) method. + +| **Option** | **Type** | **Default value** | **Description** | +| --- | --- | --- | --- | +| `tokens` | `boolean` | `false` | When `true`, the returned object will include an array of tokens (objects), representing each path "segment" in the scanned glob pattern | +| `parts` | `boolean` | `false` | When `true`, the returned object will include an array of strings representing each path "segment" in the scanned glob pattern. This is automatically enabled when `options.tokens` is true | + +**Example** + +```js +const picomatch = require('picomatch'); +const result = picomatch.scan('!./foo/*.js', { tokens: true }); +console.log(result); +// { +// prefix: '!./', +// input: '!./foo/*.js', +// start: 3, +// base: 'foo', +// glob: '*.js', +// isBrace: false, +// isBracket: false, +// isGlob: true, +// isExtglob: false, +// isGlobstar: false, +// negated: true, +// maxDepth: 2, +// tokens: [ +// { value: '!./', depth: 0, isGlob: false, negated: true, isPrefix: true }, +// { value: 'foo', depth: 1, isGlob: false }, +// { value: '*.js', depth: 1, isGlob: true } +// ], +// slashes: [ 2, 6 ], +// parts: [ 'foo', '*.js' ] +// } +``` + +
+ +### Options Examples + +#### options.expandRange + +**Type**: `function` + +**Default**: `undefined` + +Custom function for expanding ranges in brace patterns. The [fill-range](https://github.com/jonschlinkert/fill-range) library is ideal for this purpose, or you can use custom code to do whatever you need. + +**Example** + +The following example shows how to create a glob that matches a folder + +```js +const fill = require('fill-range'); +const regex = pm.makeRe('foo/{01..25}/bar', { + expandRange(a, b) { + return `(${fill(a, b, { toRegex: true })})`; + } +}); + +console.log(regex); +//=> /^(?:foo\/((?:0[1-9]|1[0-9]|2[0-5]))\/bar)$/ + +console.log(regex.test('foo/00/bar')) // false +console.log(regex.test('foo/01/bar')) // true +console.log(regex.test('foo/10/bar')) // true +console.log(regex.test('foo/22/bar')) // true +console.log(regex.test('foo/25/bar')) // true +console.log(regex.test('foo/26/bar')) // false +``` + +#### options.format + +**Type**: `function` + +**Default**: `undefined` + +Custom function for formatting strings before they're matched. + +**Example** + +```js +// strip leading './' from strings +const format = str => str.replace(/^\.\//, ''); +const isMatch = picomatch('foo/*.js', { format }); +console.log(isMatch('./foo/bar.js')); //=> true +``` + +#### options.onMatch + +```js +const onMatch = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = picomatch('*', { onMatch }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +#### options.onIgnore + +```js +const onIgnore = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = picomatch('*', { onIgnore, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +#### options.onResult + +```js +const onResult = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = picomatch('*', { onResult, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +
+
+ +## Globbing features + +* [Basic globbing](#basic-globbing) (Wildcard matching) +* [Advanced globbing](#advanced-globbing) (extglobs, posix brackets, brace matching) + +### Basic globbing + +| **Character** | **Description** | +| --- | --- | +| `*` | Matches any character zero or more times, excluding path separators. Does _not match_ path separators or hidden files or directories ("dotfiles"), unless explicitly enabled by setting the `dot` option to `true`. | +| `**` | Matches any character zero or more times, including path separators. Note that `**` will only match path separators (`/`, and `\\` on Windows) when they are the only characters in a path segment. Thus, `foo**/bar` is equivalent to `foo*/bar`, and `foo/a**b/bar` is equivalent to `foo/a*b/bar`, and _more than two_ consecutive stars in a glob path segment are regarded as _a single star_. Thus, `foo/***/bar` is equivalent to `foo/*/bar`. | +| `?` | Matches any character excluding path separators one time. Does _not match_ path separators or leading dots. | +| `[abc]` | Matches any characters inside the brackets. For example, `[abc]` would match the characters `a`, `b` or `c`, and nothing else. | + +#### Matching behavior vs. Bash + +Picomatch's matching features and expected results in unit tests are based on Bash's unit tests and the Bash 4.3 specification, with the following exceptions: + +* Bash will match `foo/bar/baz` with `*`. Picomatch only matches nested directories with `**`. +* Bash greedily matches with negated extglobs. For example, Bash 4.3 says that `!(foo)*` should match `foo` and `foobar`, since the trailing `*` bracktracks to match the preceding pattern. This is very memory-inefficient, and IMHO, also incorrect. Picomatch would return `false` for both `foo` and `foobar`. + +
+ +### Advanced globbing + +* [extglobs](#extglobs) +* [POSIX brackets](#posix-brackets) +* [Braces](#brace-expansion) + +#### Extglobs + +| **Pattern** | **Description** | +| --- | --- | +| `@(pattern)` | Match _only one_ consecutive occurrence of `pattern` | +| `*(pattern)` | Match _zero or more_ consecutive occurrences of `pattern` | +| `+(pattern)` | Match _one or more_ consecutive occurrences of `pattern` | +| `?(pattern)` | Match _zero or **one**_ consecutive occurrences of `pattern` | +| `!(pattern)` | Match _anything but_ `pattern` | + +**Examples** + +```js +const pm = require('picomatch'); + +// *(pattern) matches ZERO or more of "pattern" +console.log(pm.isMatch('a', 'a*(z)')); // true +console.log(pm.isMatch('az', 'a*(z)')); // true +console.log(pm.isMatch('azzz', 'a*(z)')); // true + +// +(pattern) matches ONE or more of "pattern" +console.log(pm.isMatch('a', 'a*(z)')); // true +console.log(pm.isMatch('az', 'a*(z)')); // true +console.log(pm.isMatch('azzz', 'a*(z)')); // true + +// supports multiple extglobs +console.log(pm.isMatch('foo.bar', '!(foo).!(bar)')); // false + +// supports nested extglobs +console.log(pm.isMatch('foo.bar', '!(!(foo)).!(!(bar))')); // true +``` + +#### POSIX brackets + +POSIX classes are disabled by default. Enable this feature by setting the `posix` option to true. + +**Enable POSIX bracket support** + +```js +console.log(pm.makeRe('[[:word:]]+', { posix: true })); +//=> /^(?:(?=.)[A-Za-z0-9_]+\/?)$/ +``` + +**Supported POSIX classes** + +The following named POSIX bracket expressions are supported: + +* `[:alnum:]` - Alphanumeric characters, equ `[a-zA-Z0-9]` +* `[:alpha:]` - Alphabetical characters, equivalent to `[a-zA-Z]`. +* `[:ascii:]` - ASCII characters, equivalent to `[\\x00-\\x7F]`. +* `[:blank:]` - Space and tab characters, equivalent to `[ \\t]`. +* `[:cntrl:]` - Control characters, equivalent to `[\\x00-\\x1F\\x7F]`. +* `[:digit:]` - Numerical digits, equivalent to `[0-9]`. +* `[:graph:]` - Graph characters, equivalent to `[\\x21-\\x7E]`. +* `[:lower:]` - Lowercase letters, equivalent to `[a-z]`. +* `[:print:]` - Print characters, equivalent to `[\\x20-\\x7E ]`. +* `[:punct:]` - Punctuation and symbols, equivalent to `[\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~]`. +* `[:space:]` - Extended space characters, equivalent to `[ \\t\\r\\n\\v\\f]`. +* `[:upper:]` - Uppercase letters, equivalent to `[A-Z]`. +* `[:word:]` - Word characters (letters, numbers and underscores), equivalent to `[A-Za-z0-9_]`. +* `[:xdigit:]` - Hexadecimal digits, equivalent to `[A-Fa-f0-9]`. + +See the [Bash Reference Manual](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html) for more information. + +### Braces + +Picomatch does not do brace expansion. For [brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html) and advanced matching with braces, use [micromatch](https://github.com/micromatch/micromatch) instead. Picomatch has very basic support for braces. + +### Matching special characters as literals + +If you wish to match the following special characters in a filepath, and you want to use these characters in your glob pattern, they must be escaped with backslashes or quotes: + +**Special Characters** + +Some characters that are used for matching in regular expressions are also regarded as valid file path characters on some platforms. + +To match any of the following characters as literals: `$^*+?()[] + +Examples: + +```js +console.log(pm.makeRe('foo/bar \\(1\\)')); +console.log(pm.makeRe('foo/bar \\(1\\)')); +``` + +
+
+ +## Library Comparisons + +The following table shows which features are supported by [minimatch](https://github.com/isaacs/minimatch), [micromatch](https://github.com/micromatch/micromatch), [picomatch](https://github.com/micromatch/picomatch), [nanomatch](https://github.com/micromatch/nanomatch), [extglob](https://github.com/micromatch/extglob), [braces](https://github.com/micromatch/braces), and [expand-brackets](https://github.com/micromatch/expand-brackets). + +| **Feature** | `minimatch` | `micromatch` | `picomatch` | `nanomatch` | `extglob` | `braces` | `expand-brackets` | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Wildcard matching (`*?+`) | ✔ | ✔ | ✔ | ✔ | - | - | - | +| Advancing globbing | ✔ | ✔ | ✔ | - | - | - | - | +| Brace _matching_ | ✔ | ✔ | ✔ | - | - | ✔ | - | +| Brace _expansion_ | ✔ | ✔ | - | - | - | ✔ | - | +| Extglobs | partial | ✔ | ✔ | - | ✔ | - | - | +| Posix brackets | - | ✔ | ✔ | - | - | - | ✔ | +| Regular expression syntax | - | ✔ | ✔ | ✔ | ✔ | - | ✔ | +| File system operations | - | - | - | - | - | - | - | + +
+
+ +## Benchmarks + +Performance comparison of picomatch and minimatch. + +``` +# .makeRe star + picomatch x 1,993,050 ops/sec ±0.51% (91 runs sampled) + minimatch x 627,206 ops/sec ±1.96% (87 runs sampled)) + +# .makeRe star; dot=true + picomatch x 1,436,640 ops/sec ±0.62% (91 runs sampled) + minimatch x 525,876 ops/sec ±0.60% (88 runs sampled) + +# .makeRe globstar + picomatch x 1,592,742 ops/sec ±0.42% (90 runs sampled) + minimatch x 962,043 ops/sec ±1.76% (91 runs sampled)d) + +# .makeRe globstars + picomatch x 1,615,199 ops/sec ±0.35% (94 runs sampled) + minimatch x 477,179 ops/sec ±1.33% (91 runs sampled) + +# .makeRe with leading star + picomatch x 1,220,856 ops/sec ±0.40% (92 runs sampled) + minimatch x 453,564 ops/sec ±1.43% (94 runs sampled) + +# .makeRe - basic braces + picomatch x 392,067 ops/sec ±0.70% (90 runs sampled) + minimatch x 99,532 ops/sec ±2.03% (87 runs sampled)) +``` + +
+
+ +## Philosophies + +The goal of this library is to be blazing fast, without compromising on accuracy. + +**Accuracy** + +The number one of goal of this library is accuracy. However, it's not unusual for different glob implementations to have different rules for matching behavior, even with simple wildcard matching. It gets increasingly more complicated when combinations of different features are combined, like when extglobs are combined with globstars, braces, slashes, and so on: `!(**/{a,b,*/c})`. + +Thus, given that there is no canonical glob specification to use as a single source of truth when differences of opinion arise regarding behavior, sometimes we have to implement our best judgement and rely on feedback from users to make improvements. + +**Performance** + +Although this library performs well in benchmarks, and in most cases it's faster than other popular libraries we benchmarked against, we will always choose accuracy over performance. It's not helpful to anyone if our library is faster at returning the wrong answer. + +
+
+ +## About + +
+Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. + +
+ +
+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 +``` + +
+ +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2017-present, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). diff --git a/node_modules/picomatch/index.js b/node_modules/picomatch/index.js new file mode 100644 index 0000000000000000000000000000000000000000..d2f2bc59d0ac7c40b35c574c45bcedbf26263d75 --- /dev/null +++ b/node_modules/picomatch/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./lib/picomatch'); diff --git a/node_modules/picomatch/package.json b/node_modules/picomatch/package.json new file mode 100644 index 0000000000000000000000000000000000000000..3db22d408f024ad3b0de10acc3a7c0ce4200c0e8 --- /dev/null +++ b/node_modules/picomatch/package.json @@ -0,0 +1,81 @@ +{ + "name": "picomatch", + "description": "Blazing fast and accurate glob matcher written in JavaScript, with no dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.", + "version": "2.3.1", + "homepage": "https://github.com/micromatch/picomatch", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "funding": "https://github.com/sponsors/jonschlinkert", + "repository": "micromatch/picomatch", + "bugs": { + "url": "https://github.com/micromatch/picomatch/issues" + }, + "license": "MIT", + "files": [ + "index.js", + "lib" + ], + "main": "index.js", + "engines": { + "node": ">=8.6" + }, + "scripts": { + "lint": "eslint --cache --cache-location node_modules/.cache/.eslintcache --report-unused-disable-directives --ignore-path .gitignore .", + "mocha": "mocha --reporter dot", + "test": "npm run lint && npm run mocha", + "test:ci": "npm run test:cover", + "test:cover": "nyc npm run mocha" + }, + "devDependencies": { + "eslint": "^6.8.0", + "fill-range": "^7.0.1", + "gulp-format-md": "^2.0.0", + "mocha": "^6.2.2", + "nyc": "^15.0.0", + "time-require": "github:jonschlinkert/time-require" + }, + "keywords": [ + "glob", + "match", + "picomatch" + ], + "nyc": { + "reporter": [ + "html", + "lcov", + "text-summary" + ] + }, + "verb": { + "toc": { + "render": true, + "method": "preWrite", + "maxdepth": 3 + }, + "layout": "empty", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + }, + "related": { + "list": [ + "braces", + "micromatch" + ] + }, + "reflinks": [ + "braces", + "expand-brackets", + "extglob", + "fill-range", + "micromatch", + "minimatch", + "nanomatch", + "picomatch" + ] + } +} diff --git a/node_modules/pify/index.js b/node_modules/pify/index.js new file mode 100644 index 0000000000000000000000000000000000000000..7c720ebee88727c284b6e7e56687d11ce59a0ea1 --- /dev/null +++ b/node_modules/pify/index.js @@ -0,0 +1,68 @@ +'use strict'; + +var processFn = function (fn, P, opts) { + return function () { + var that = this; + var args = new Array(arguments.length); + + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + + return new P(function (resolve, reject) { + args.push(function (err, result) { + if (err) { + reject(err); + } else if (opts.multiArgs) { + var results = new Array(arguments.length - 1); + + for (var i = 1; i < arguments.length; i++) { + results[i - 1] = arguments[i]; + } + + resolve(results); + } else { + resolve(result); + } + }); + + fn.apply(that, args); + }); + }; +}; + +var pify = module.exports = function (obj, P, opts) { + if (typeof P !== 'function') { + opts = P; + P = Promise; + } + + opts = opts || {}; + opts.exclude = opts.exclude || [/.+Sync$/]; + + var filter = function (key) { + var match = function (pattern) { + return typeof pattern === 'string' ? key === pattern : pattern.test(key); + }; + + return opts.include ? opts.include.some(match) : !opts.exclude.some(match); + }; + + var ret = typeof obj === 'function' ? function () { + if (opts.excludeMain) { + return obj.apply(this, arguments); + } + + return processFn(obj, P, opts).apply(this, arguments); + } : {}; + + return Object.keys(obj).reduce(function (ret, key) { + var x = obj[key]; + + ret[key] = typeof x === 'function' && filter(key) ? processFn(x, P, opts) : x; + + return ret; + }, ret); +}; + +pify.all = pify; diff --git a/node_modules/pify/license b/node_modules/pify/license new file mode 100644 index 0000000000000000000000000000000000000000..654d0bfe943437d43242325b1fbcff5f400d84ee --- /dev/null +++ b/node_modules/pify/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +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/pify/package.json b/node_modules/pify/package.json new file mode 100644 index 0000000000000000000000000000000000000000..311d1982e074fda1a645369cb0141a97a8e0ccf2 --- /dev/null +++ b/node_modules/pify/package.json @@ -0,0 +1,48 @@ +{ + "name": "pify", + "version": "2.3.0", + "description": "Promisify a callback-style function", + "license": "MIT", + "repository": "sindresorhus/pify", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "xo && ava && npm run optimization-test", + "optimization-test": "node --allow-natives-syntax optimization-test.js" + }, + "files": [ + "index.js" + ], + "keywords": [ + "promise", + "promises", + "promisify", + "denodify", + "denodeify", + "callback", + "cb", + "node", + "then", + "thenify", + "convert", + "transform", + "wrap", + "wrapper", + "bind", + "to", + "async", + "es2015" + ], + "devDependencies": { + "ava": "*", + "pinkie-promise": "^1.0.0", + "v8-natives": "0.0.2", + "xo": "*" + } +} diff --git a/node_modules/pify/readme.md b/node_modules/pify/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..c79ca8bf643927e9106b2c64ecd87d8bdabaf309 --- /dev/null +++ b/node_modules/pify/readme.md @@ -0,0 +1,119 @@ +# pify [![Build Status](https://travis-ci.org/sindresorhus/pify.svg?branch=master)](https://travis-ci.org/sindresorhus/pify) + +> Promisify a callback-style function + + +## Install + +``` +$ npm install --save pify +``` + + +## Usage + +```js +const fs = require('fs'); +const pify = require('pify'); + +// promisify a single function + +pify(fs.readFile)('package.json', 'utf8').then(data => { + console.log(JSON.parse(data).name); + //=> 'pify' +}); + +// or promisify all methods in a module + +pify(fs).readFile('package.json', 'utf8').then(data => { + console.log(JSON.parse(data).name); + //=> 'pify' +}); +``` + + +## API + +### pify(input, [promiseModule], [options]) + +Returns a promise wrapped version of the supplied function or module. + +#### input + +Type: `function`, `object` + +Callback-style function or module whose methods you want to promisify. + +#### promiseModule + +Type: `function` + +Custom promise module to use instead of the native one. + +Check out [`pinkie-promise`](https://github.com/floatdrop/pinkie-promise) if you need a tiny promise polyfill. + +#### options + +##### multiArgs + +Type: `boolean` +Default: `false` + +By default, the promisified function will only return the second argument from the callback, which works fine for most APIs. This option can be useful for modules like `request` that return multiple arguments. Turning this on will make it return an array of all arguments from the callback, excluding the error argument, instead of just the second argument. + +```js +const request = require('request'); +const pify = require('pify'); + +pify(request, {multiArgs: true})('https://sindresorhus.com').then(result => { + const [httpResponse, body] = result; +}); +``` + +##### include + +Type: `array` of (`string`|`regex`) + +Methods in a module to promisify. Remaining methods will be left untouched. + +##### exclude + +Type: `array` of (`string`|`regex`) +Default: `[/.+Sync$/]` + +Methods in a module **not** to promisify. Methods with names ending with `'Sync'` are excluded by default. + +##### excludeMain + +Type: `boolean` +Default: `false` + +By default, if given module is a function itself, this function will be promisified. Turn this option on if you want to promisify only methods of the module. + +```js +const pify = require('pify'); + +function fn() { + return true; +} + +fn.method = (data, callback) => { + setImmediate(() => { + callback(data, null); + }); +}; + +// promisify methods but not fn() +const promiseFn = pify(fn, {excludeMain: true}); + +if (promiseFn()) { + promiseFn.method('hi').then(data => { + console.log(data); + }); +} +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pirates/LICENSE b/node_modules/pirates/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..acc7a0e085ca1a08cc5cb55a846ea9404b59f203 --- /dev/null +++ b/node_modules/pirates/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016-2018 Ari Porad + +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/pirates/README.md b/node_modules/pirates/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f61065ef134e95b8bab6b0a67183d7a9670b6914 --- /dev/null +++ b/node_modules/pirates/README.md @@ -0,0 +1,69 @@ +# Pirates [![Coverage][codecov-badge]][codecov-link] + +### Properly hijack require + +[codecov-badge]: https://img.shields.io/codecov/c/github/danez/pirates/master.svg?style=flat "codecov" +[codecov-link]: https://codecov.io/gh/danez/pirates "codecov" + +## Why? + +Two reasons: +1. Babel and istanbul were breaking each other. +2. Everyone seemed to re-invent the wheel on this, and everyone wanted a solution that was DRY, simple, easy to use, +and made everything Just Work™, while allowing multiple require hooks, in a fashion similar to calling `super`. + +For some context, see [the Babel issue thread][] which started this all, then [the nyc issue thread][], where +discussion was moved (as we began to discuss just using the code nyc had developed), and finally to [#1][issue-1] +where discussion was finally moved. + +[the Babel issue thread]: https://github.com/babel/babel/pull/3062 "Babel Issue Thread" +[the nyc issue thread]: https://github.com/bcoe/nyc/issues/70 "NYC Issue Thread" +[issue-1]: https://github.com/danez/pirates/issues/1 "Issue #1" + +## Installation + + npm install --save pirates + +## Usage + +Using pirates is really easy: +```javascript +// my-module/register.js +const addHook = require('pirates').addHook; +// Or if you use ES modules +// import { addHook } from 'pirates'; + +function matcher(filename) { + // Here, you can inspect the filename to determine if it should be hooked or + // not. Just return a truthy/falsey. Files in node_modules are automatically ignored, + // unless otherwise specified in options (see below). + + // TODO: Implement your logic here + return true; +} + +const revert = addHook( + (code, filename) => code.replace('@@foo', 'console.log(\'foo\');'), + { exts: ['.js'], matcher } +); + +// And later, if you want to un-hook require, you can just do: +revert(); +``` + +## API + +### pirates.addHook(hook, [opts={ [matcher: true], [exts: ['.js']], [ignoreNodeModules: true] }]); +Add a require hook. `hook` must be a function that takes `(code, filename)`, and returns the modified code. `opts` is +an optional options object. Available options are: `matcher`, which is a function that accepts a filename, and +returns a truthy value if the file should be hooked (defaults to a function that always returns true), falsey if +otherwise; `exts`, which is an array of extensions to hook, they should begin with `.` (defaults to `['.js']`); +`ignoreNodeModules`, if true, any file in a `node_modules` folder wont be hooked (the matcher also wont be called), +if false, then the matcher will be called for any files in `node_modules` (defaults to true). + + +## Projects that use Pirates + +See the [wiki page](https://github.com/danez/pirates/wiki/Projects-using-Pirates). If you add Pirates to your project, +(And you should! It works best if everyone uses it. Then we can have a happy world full of happy require hooks!), please +add yourself to the wiki. diff --git a/node_modules/pirates/index.d.ts b/node_modules/pirates/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b2d8ce6694b4ecec705a0e2ae0e47026b83c9091 --- /dev/null +++ b/node_modules/pirates/index.d.ts @@ -0,0 +1,82 @@ +/* (c) 2015 Ari Porad (@ariporad) . License: ariporad.mit-license.org */ + +/** + * The hook. Accepts the code of the module and the filename. + */ +declare type Hook = (code: string, filename: string) => string; + +/** + * A matcher function, will be called with path to a file. + * + * Should return truthy if the file should be hooked, falsy otherwise. + */ +declare type Matcher = (path: string) => boolean; + +/** + * Reverts the hook when called. + */ +declare type RevertFunction = () => void; +interface Options { + /** + * The extensions to hook. Should start with '.' (ex. ['.js']). + * + * Takes precedence over `exts`, `extension` and `ext`. + * + * @alias exts + * @alias extension + * @alias ext + * @default ['.js'] + */ + extensions?: ReadonlyArray | string; + + /** + * The extensions to hook. Should start with '.' (ex. ['.js']). + * + * Takes precedence over `extension` and `ext`. + * + * @alias extension + * @alias ext + * @default ['.js'] + */ + exts?: ReadonlyArray | string; + + /** + * The extensions to hook. Should start with '.' (ex. ['.js']). + * + * Takes precedence over `ext`. + * + * @alias ext + * @default ['.js'] + */ + extension?: ReadonlyArray | string; + + /** + * The extensions to hook. Should start with '.' (ex. ['.js']). + * + * @default ['.js'] + */ + ext?: ReadonlyArray | string; + + /** + * A matcher function, will be called with path to a file. + * + * Should return truthy if the file should be hooked, falsy otherwise. + */ + matcher?: Matcher | null; + + /** + * Auto-ignore node_modules. Independent of any matcher. + * + * @default true + */ + ignoreNodeModules?: boolean; +} + +/** + * Add a require hook. + * + * @param hook The hook. Accepts the code of the module and the filename. Required. + * @returns The `revert` function. Reverts the hook when called. + */ +export declare function addHook(hook: Hook, opts?: Options): RevertFunction; +export {}; diff --git a/node_modules/pirates/package.json b/node_modules/pirates/package.json new file mode 100644 index 0000000000000000000000000000000000000000..47bd38460845d640c7d921d5b817f9b91dfe830c --- /dev/null +++ b/node_modules/pirates/package.json @@ -0,0 +1,74 @@ +{ + "name": "pirates", + "description": "Properly hijack require", + "main": "lib/index.js", + "types": "index.d.ts", + "scripts": { + "clean": "rimraf lib", + "build": "babel src -d lib", + "test": "cross-env BABEL_ENV=test yarn run build && nyc ava", + "lint": "eslint --report-unused-disable-directives .", + "prepublishOnly": "yarn run build" + }, + "files": [ + "lib", + "index.d.ts" + ], + "repository": { + "type": "git", + "url": "https://github.com/danez/pirates.git" + }, + "engines": { + "node": ">= 6" + }, + "author": { + "name": "Ari Porad", + "email": "ari@ariporad.com", + "url": "http://ariporad.com" + }, + "devDependencies": { + "@babel/cli": "7.16.7", + "@babel/core": "7.16.7", + "@babel/preset-env": "7.16.7", + "ava": "1.4.1", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "10.1.0", + "babel-plugin-istanbul": "5.2.0", + "cross-env": "5.2.1", + "decache": "4.6.1", + "eslint": "5.16.0", + "eslint-config-prettier": "4.3.0", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-prettier": "3.4.1", + "mock-require": "3.0.3", + "nyc": "13.3.0", + "prettier": "1.19.1", + "rewire": "4.0.1", + "rimraf": "3.0.2" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/danez/pirates/issues" + }, + "homepage": "https://github.com/danez/pirates#readme", + "ava": { + "files": [ + "test/*.js" + ], + "sources": [ + "lib/**/*.js" + ] + }, + "nyc": { + "include": [ + "src/*.js" + ], + "reporter": [ + "json", + "text" + ], + "sourceMap": false, + "instrument": false + }, + "version": "4.0.5" +} diff --git a/node_modules/postcss-import/LICENSE b/node_modules/postcss-import/LICENSE new file mode 100755 index 0000000000000000000000000000000000000000..13983fbfc985b55e3716947d0b4debd35e021964 --- /dev/null +++ b/node_modules/postcss-import/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Maxime Thirouin, Jason Campbell & Kevin Mårtensson + +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/postcss-import/README.md b/node_modules/postcss-import/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f0ce11ec56469aa91abfcfa2e3aeecee2d976453 --- /dev/null +++ b/node_modules/postcss-import/README.md @@ -0,0 +1,227 @@ +# postcss-import + +[![Build](https://img.shields.io/travis/postcss/postcss-import/master)](https://travis-ci.org/postcss/postcss-import) +[![Version](https://img.shields.io/npm/v/postcss-import)](https://github.com/postcss/postcss-import/blob/master/CHANGELOG.md) +[![postcss compatibility](https://img.shields.io/npm/dependency-version/postcss-import/peer/postcss)](https://postcss.org/) + +> [PostCSS](https://github.com/postcss/postcss) plugin to transform `@import` +rules by inlining content. + +This plugin can consume local files, node modules or web_modules. +To resolve path of an `@import` rule, it can look into root directory +(by default `process.cwd()`), `web_modules`, `node_modules` +or local modules. +_When importing a module, it will look for `index.css` or file referenced in +`package.json` in the `style` or `main` fields._ +You can also provide manually multiples paths where to look at. + +**Notes:** + +- **This plugin should probably be used as the first plugin of your list. +This way, other plugins will work on the AST as if there were only a single file +to process, and will probably work as you can expect**. +- This plugin works great with +[postcss-url](https://github.com/postcss/postcss-url) plugin, +which will allow you to adjust assets `url()` (or even inline them) after +inlining imported files. +- In order to optimize output, **this plugin will only import a file once** on +a given scope (root, media query...). +Tests are made from the path & the content of imported files (using a hash +table). +If this behavior is not what you want, look at `skipDuplicates` option +- If you are looking for **Glob Imports**, you can use [postcss-import-ext-glob](https://github.com/dimitrinicolas/postcss-import-ext-glob) to extend postcss-import. +- Imports which are not modified (by `options.filter` or because they are remote + imports) are moved to the top of the output. +- **This plugin attempts to follow the CSS `@import` spec**; `@import` + statements must precede all other statements (besides `@charset`). + +## Installation + +```console +$ npm install -D postcss-import +``` + +## Usage + +Unless your stylesheet is in the same place where you run postcss +(`process.cwd()`), you will need to use `from` option to make relative imports +work. + +```js +// dependencies +const fs = require("fs") +const postcss = require("postcss") +const atImport = require("postcss-import") + +// css to be processed +const css = fs.readFileSync("css/input.css", "utf8") + +// process css +postcss() + .use(atImport()) + .process(css, { + // `from` option is needed here + from: "css/input.css" + }) + .then((result) => { + const output = result.css + + console.log(output) + }) +``` + +`css/input.css`: + +```css +/* can consume `node_modules`, `web_modules` or local modules */ +@import "cssrecipes-defaults"; /* == @import "../node_modules/cssrecipes-defaults/index.css"; */ +@import "normalize.css"; /* == @import "../node_modules/normalize.css/normalize.css"; */ + +@import "foo.css"; /* relative to css/ according to `from` option above */ + +@import "bar.css" (min-width: 25em); + +body { + background: black; +} +``` + +will give you: + +```css +/* ... content of ../node_modules/cssrecipes-defaults/index.css */ +/* ... content of ../node_modules/normalize.css/normalize.css */ + +/* ... content of css/foo.css */ + +@media (min-width: 25em) { +/* ... content of css/bar.css */ +} + +body { + background: black; +} +``` + +Checkout the [tests](test) for more examples. + +### Options + +### `filter` +Type: `Function` +Default: `() => true` + +Only transform imports for which the test function returns `true`. Imports for +which the test function returns `false` will be left as is. The function gets +the path to import as an argument and should return a boolean. + +#### `root` + +Type: `String` +Default: `process.cwd()` or _dirname of +[the postcss `from`](https://github.com/postcss/postcss#node-source)_ + +Define the root where to resolve path (eg: place where `node_modules` are). +Should not be used that much. +_Note: nested `@import` will additionally benefit of the relative dirname of +imported files._ + +#### `path` + +Type: `String|Array` +Default: `[]` + +A string or an array of paths in where to look for files. + +#### `plugins` + +Type: `Array` +Default: `undefined` + +An array of plugins to be applied on each imported files. + +#### `resolve` + +Type: `Function` +Default: `null` + +You can provide a custom path resolver with this option. This function gets +`(id, basedir, importOptions)` arguments and should return a path, an array of +paths or a promise resolving to the path(s). If you do not return an absolute +path, your path will be resolved to an absolute path using the default +resolver. +You can use [resolve](https://github.com/substack/node-resolve) for this. + +#### `load` + +Type: `Function` +Default: null + +You can overwrite the default loading way by setting this option. +This function gets `(filename, importOptions)` arguments and returns content or +promised content. + +#### `skipDuplicates` + +Type: `Boolean` +Default: `true` + +By default, similar files (based on the same content) are being skipped. +It's to optimize output and skip similar files like `normalize.css` for example. +If this behavior is not what you want, just set this option to `false` to +disable it. + +#### `addModulesDirectories` + +Type: `Array` +Default: `[]` + +An array of folder names to add to [Node's resolver](https://github.com/substack/node-resolve). +Values will be appended to the default resolve directories: +`["node_modules", "web_modules"]`. + +This option is only for adding additional directories to default resolver. If +you provide your own resolver via the `resolve` configuration option above, then +this value will be ignored. + +#### Example with some options + +```js +const postcss = require("postcss") +const atImport = require("postcss-import") + +postcss() + .use(atImport({ + path: ["src/css"], + })) + .process(cssString) + .then((result) => { + const { css } = result + }) +``` + +## `dependency` Message Support + +`postcss-import` adds a message to `result.messages` for each `@import`. Messages are in the following format: + +``` +{ + type: 'dependency', + file: absoluteFilePath, + parent: fileContainingTheImport +} +``` + +This is mainly for use by postcss runners that implement file watching. + +--- + +## CONTRIBUTING + +* ⇄ Pull requests and ★ Stars are always welcome. +* For bugs and feature requests, please create an issue. +* Pull requests must be accompanied by passing automated tests (`$ npm test`). + +## [Changelog](CHANGELOG.md) + +## [License](LICENSE) diff --git a/node_modules/postcss-import/index.js b/node_modules/postcss-import/index.js new file mode 100755 index 0000000000000000000000000000000000000000..e6a3dc33c8e380d5fcbaa243b40a0c94b7136e32 --- /dev/null +++ b/node_modules/postcss-import/index.js @@ -0,0 +1,344 @@ +"use strict" +// builtin tooling +const path = require("path") + +// internal tooling +const joinMedia = require("./lib/join-media") +const joinLayer = require("./lib/join-layer") +const resolveId = require("./lib/resolve-id") +const loadContent = require("./lib/load-content") +const processContent = require("./lib/process-content") +const parseStatements = require("./lib/parse-statements") + +function AtImport(options) { + options = { + root: process.cwd(), + path: [], + skipDuplicates: true, + resolve: resolveId, + load: loadContent, + plugins: [], + addModulesDirectories: [], + ...options, + } + + options.root = path.resolve(options.root) + + // convert string to an array of a single element + if (typeof options.path === "string") options.path = [options.path] + + if (!Array.isArray(options.path)) options.path = [] + + options.path = options.path.map(p => path.resolve(options.root, p)) + + return { + postcssPlugin: "postcss-import", + Once(styles, { result, atRule, postcss }) { + const state = { + importedFiles: {}, + hashFiles: {}, + } + + if (styles.source && styles.source.input && styles.source.input.file) { + state.importedFiles[styles.source.input.file] = {} + } + + if (options.plugins && !Array.isArray(options.plugins)) { + throw new Error("plugins option must be an array") + } + + return parseStyles(result, styles, options, state, [], []).then( + bundle => { + applyRaws(bundle) + applyMedia(bundle) + applyStyles(bundle, styles) + } + ) + + function applyRaws(bundle) { + bundle.forEach((stmt, index) => { + if (index === 0) return + + if (stmt.parent) { + const { before } = stmt.parent.node.raws + if (stmt.type === "nodes") stmt.nodes[0].raws.before = before + else stmt.node.raws.before = before + } else if (stmt.type === "nodes") { + stmt.nodes[0].raws.before = stmt.nodes[0].raws.before || "\n" + } + }) + } + + function applyMedia(bundle) { + bundle.forEach(stmt => { + if ( + (!stmt.media.length && !stmt.layer.length) || + stmt.type === "charset" + ) { + return + } + + if (stmt.type === "import") { + stmt.node.params = `${stmt.fullUri} ${stmt.media.join(", ")}` + } else if (stmt.type === "media") { + stmt.node.params = stmt.media.join(", ") + } else { + const { nodes } = stmt + const { parent } = nodes[0] + + let outerAtRule + let innerAtRule + if (stmt.media.length && stmt.layer.length) { + const mediaNode = atRule({ + name: "media", + params: stmt.media.join(", "), + source: parent.source, + }) + + const layerNode = atRule({ + name: "layer", + params: stmt.layer.filter(layer => layer !== "").join("."), + source: parent.source, + }) + + mediaNode.append(layerNode) + innerAtRule = layerNode + outerAtRule = mediaNode + } else if (stmt.media.length) { + const mediaNode = atRule({ + name: "media", + params: stmt.media.join(", "), + source: parent.source, + }) + + innerAtRule = mediaNode + outerAtRule = mediaNode + } else if (stmt.layer.length) { + const layerNode = atRule({ + name: "layer", + params: stmt.layer.filter(layer => layer !== "").join("."), + source: parent.source, + }) + + innerAtRule = layerNode + outerAtRule = layerNode + } + + parent.insertBefore(nodes[0], outerAtRule) + + // remove nodes + nodes.forEach(node => { + node.parent = undefined + }) + + // better output + nodes[0].raws.before = nodes[0].raws.before || "\n" + + // wrap new rules with media query and/or layer at rule + innerAtRule.append(nodes) + + stmt.type = "media" + stmt.node = outerAtRule + delete stmt.nodes + } + }) + } + + function applyStyles(bundle, styles) { + styles.nodes = [] + + // Strip additional statements. + bundle.forEach(stmt => { + if (["charset", "import", "media"].includes(stmt.type)) { + stmt.node.parent = undefined + styles.append(stmt.node) + } else if (stmt.type === "nodes") { + stmt.nodes.forEach(node => { + node.parent = undefined + styles.append(node) + }) + } + }) + } + + function parseStyles(result, styles, options, state, media, layer) { + const statements = parseStatements(result, styles) + + return Promise.resolve(statements) + .then(stmts => { + // process each statement in series + return stmts.reduce((promise, stmt) => { + return promise.then(() => { + stmt.media = joinMedia(media, stmt.media || []) + stmt.layer = joinLayer(layer, stmt.layer || []) + + // skip protocol base uri (protocol://url) or protocol-relative + if ( + stmt.type !== "import" || + /^(?:[a-z]+:)?\/\//i.test(stmt.uri) + ) { + return + } + + if (options.filter && !options.filter(stmt.uri)) { + // rejected by filter + return + } + + return resolveImportId(result, stmt, options, state) + }) + }, Promise.resolve()) + }) + .then(() => { + let charset + const imports = [] + const bundle = [] + + function handleCharset(stmt) { + if (!charset) charset = stmt + // charsets aren't case-sensitive, so convert to lower case to compare + else if ( + stmt.node.params.toLowerCase() !== + charset.node.params.toLowerCase() + ) { + throw new Error( + `Incompatable @charset statements: + ${stmt.node.params} specified in ${stmt.node.source.input.file} + ${charset.node.params} specified in ${charset.node.source.input.file}` + ) + } + } + + // squash statements and their children + statements.forEach(stmt => { + if (stmt.type === "charset") handleCharset(stmt) + else if (stmt.type === "import") { + if (stmt.children) { + stmt.children.forEach((child, index) => { + if (child.type === "import") imports.push(child) + else if (child.type === "charset") handleCharset(child) + else bundle.push(child) + // For better output + if (index === 0) child.parent = stmt + }) + } else imports.push(stmt) + } else if (stmt.type === "media" || stmt.type === "nodes") { + bundle.push(stmt) + } + }) + + return charset + ? [charset, ...imports.concat(bundle)] + : imports.concat(bundle) + }) + } + + function resolveImportId(result, stmt, options, state) { + const atRule = stmt.node + let sourceFile + if (atRule.source && atRule.source.input && atRule.source.input.file) { + sourceFile = atRule.source.input.file + } + const base = sourceFile + ? path.dirname(atRule.source.input.file) + : options.root + + return Promise.resolve(options.resolve(stmt.uri, base, options)) + .then(paths => { + if (!Array.isArray(paths)) paths = [paths] + // Ensure that each path is absolute: + return Promise.all( + paths.map(file => { + return !path.isAbsolute(file) + ? resolveId(file, base, options) + : file + }) + ) + }) + .then(resolved => { + // Add dependency messages: + resolved.forEach(file => { + result.messages.push({ + type: "dependency", + plugin: "postcss-import", + file, + parent: sourceFile, + }) + }) + + return Promise.all( + resolved.map(file => { + return loadImportContent(result, stmt, file, options, state) + }) + ) + }) + .then(result => { + // Merge loaded statements + stmt.children = result.reduce((result, statements) => { + return statements ? result.concat(statements) : result + }, []) + }) + } + + function loadImportContent(result, stmt, filename, options, state) { + const atRule = stmt.node + const { media, layer } = stmt + if (options.skipDuplicates) { + // skip files already imported at the same scope + if ( + state.importedFiles[filename] && + state.importedFiles[filename][media] + ) { + return + } + + // save imported files to skip them next time + if (!state.importedFiles[filename]) state.importedFiles[filename] = {} + state.importedFiles[filename][media] = true + } + + return Promise.resolve(options.load(filename, options)).then( + content => { + if (content.trim() === "") { + result.warn(`${filename} is empty`, { node: atRule }) + return + } + + // skip previous imported files not containing @import rules + if (state.hashFiles[content] && state.hashFiles[content][media]) + return + + return processContent( + result, + content, + filename, + options, + postcss + ).then(importedResult => { + const styles = importedResult.root + result.messages = result.messages.concat(importedResult.messages) + + if (options.skipDuplicates) { + const hasImport = styles.some(child => { + return child.type === "atrule" && child.name === "import" + }) + if (!hasImport) { + // save hash files to skip them next time + if (!state.hashFiles[content]) state.hashFiles[content] = {} + state.hashFiles[content][media] = true + } + } + + // recursion: import @import from imported file + return parseStyles(result, styles, options, state, media, layer) + }) + } + ) + } + }, + } +} + +AtImport.postcss = true + +module.exports = AtImport diff --git a/node_modules/postcss-import/package.json b/node_modules/postcss-import/package.json new file mode 100644 index 0000000000000000000000000000000000000000..46767be89690a9e136e7181c3fb161865da9c8a9 --- /dev/null +++ b/node_modules/postcss-import/package.json @@ -0,0 +1,65 @@ +{ + "name": "postcss-import", + "version": "14.1.0", + "description": "PostCSS plugin to import CSS files", + "keywords": [ + "css", + "postcss", + "postcss-plugin", + "import", + "node modules", + "npm" + ], + "author": "Maxime Thirouin", + "license": "MIT", + "repository": "https://github.com/postcss/postcss-import.git", + "files": [ + "index.js", + "lib" + ], + "engines": { + "node": ">=10.0.0" + }, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "devDependencies": { + "ava": "^3.0.0", + "eslint": "^7.0.0", + "eslint-config-problems": "^5.0.0", + "eslint-plugin-prettier": "^4.0.0", + "postcss": "^8.0.0", + "postcss-scss": "^4.0.0", + "prettier": "~2.6.0", + "sugarss": "^4.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + }, + "scripts": { + "ci": "eslint . && ava", + "lint": "eslint . --fix", + "pretest": "npm run lint", + "test": "ava" + }, + "eslintConfig": { + "extends": "eslint-config-problems", + "env": { + "node": true + }, + "plugins": [ + "prettier" + ], + "rules": { + "prettier/prettier": [ + "error", + { + "semi": false, + "arrowParens": "avoid" + } + ] + } + } +} diff --git a/node_modules/postcss-js/LICENSE b/node_modules/postcss-js/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..d3bd67214189b2fd70d4b6ac479651a1a55dc835 --- /dev/null +++ b/node_modules/postcss-js/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2015 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/postcss-js/README.md b/node_modules/postcss-js/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a29e3b05d2a1e06bdbe6d2e3488854240b7e5cd5 --- /dev/null +++ b/node_modules/postcss-js/README.md @@ -0,0 +1,22 @@ +# PostCSS JS + + + +[PostCSS] for CSS-in-JS and styles in JS objects. + +For example, to use [Stylelint] or [RTLCSS] plugins in your workflow. + + + Sponsored by Evil Martians + + +[Stylelint]: https://github.com/stylelint/stylelint +[PostCSS]: https://github.com/postcss/postcss +[RTLCSS]: https://github.com/MohammadYounes/rtlcss + + +## Docs +Read full docs **[here](https://github.com/postcss/postcss-js#readme)**. diff --git a/node_modules/postcss-js/async.js b/node_modules/postcss-js/async.js new file mode 100644 index 0000000000000000000000000000000000000000..4c2f3c6c21e0b57be1fa5a751374f058f8234714 --- /dev/null +++ b/node_modules/postcss-js/async.js @@ -0,0 +1,15 @@ +let postcss = require('postcss') + +let processResult = require('./process-result') +let parse = require('./parser') + +module.exports = function async(plugins) { + let processor = postcss(plugins) + return async input => { + let result = await processor.process(input, { + parser: parse, + from: undefined + }) + return processResult(result) + } +} diff --git a/node_modules/postcss-js/index.js b/node_modules/postcss-js/index.js new file mode 100644 index 0000000000000000000000000000000000000000..8a4274edc7962c12718d4d970a316fc05b52c8e1 --- /dev/null +++ b/node_modules/postcss-js/index.js @@ -0,0 +1,11 @@ +let objectify = require('./objectifier') +let parse = require('./parser') +let async = require('./async') +let sync = require('./sync') + +module.exports = { + objectify, + parse, + async, + sync +} diff --git a/node_modules/postcss-js/index.mjs b/node_modules/postcss-js/index.mjs new file mode 100644 index 0000000000000000000000000000000000000000..d14b61cc5e6d9dcd05105b900ec6243c0f65f65e --- /dev/null +++ b/node_modules/postcss-js/index.mjs @@ -0,0 +1,8 @@ +import index from './index.js' + +export default index + +export const objectify = index.objectify +export const parse = index.parse +export const async = index.async +export const sync = index.sync diff --git a/node_modules/postcss-js/objectifier.js b/node_modules/postcss-js/objectifier.js new file mode 100644 index 0000000000000000000000000000000000000000..a4708b82b0a7b8a90079ee8e874b6606c2cbd0e6 --- /dev/null +++ b/node_modules/postcss-js/objectifier.js @@ -0,0 +1,85 @@ +let camelcase = require('camelcase-css') + +let UNITLESS = { + boxFlex: true, + boxFlexGroup: true, + columnCount: true, + flex: true, + flexGrow: true, + flexPositive: true, + flexShrink: true, + flexNegative: true, + fontWeight: true, + lineClamp: true, + lineHeight: true, + opacity: true, + order: true, + orphans: true, + tabSize: true, + widows: true, + zIndex: true, + zoom: true, + fillOpacity: true, + strokeDashoffset: true, + strokeOpacity: true, + strokeWidth: true +} + +function atRule(node) { + if (typeof node.nodes === 'undefined') { + return true + } else { + return process(node) + } +} + +function process(node) { + let name + let result = {} + + node.each(child => { + if (child.type === 'atrule') { + name = '@' + child.name + if (child.params) name += ' ' + child.params + if (typeof result[name] === 'undefined') { + result[name] = atRule(child) + } else if (Array.isArray(result[name])) { + result[name].push(atRule(child)) + } else { + result[name] = [result[name], atRule(child)] + } + } else if (child.type === 'rule') { + let body = process(child) + if (result[child.selector]) { + for (let i in body) { + result[child.selector][i] = body[i] + } + } else { + result[child.selector] = body + } + } else if (child.type === 'decl') { + if (child.prop[0] === '-' && child.prop[1] === '-') { + name = child.prop + } else if (child.parent && child.parent.selector === ':export') { + name = child.prop + } else { + name = camelcase(child.prop) + } + let value = child.value + if (!isNaN(child.value) && UNITLESS[name]) { + value = parseFloat(child.value) + } + if (child.important) value += ' !important' + if (typeof result[name] === 'undefined') { + result[name] = value + } else if (Array.isArray(result[name])) { + result[name].push(value) + } else { + result[name] = [result[name], value] + } + } + }) + return result +} + +module.exports = process diff --git a/node_modules/postcss-js/package.json b/node_modules/postcss-js/package.json new file mode 100644 index 0000000000000000000000000000000000000000..ce0ff3567fbbffda020f8a5579af01894a2e1b44 --- /dev/null +++ b/node_modules/postcss-js/package.json @@ -0,0 +1,42 @@ +{ + "name": "postcss-js", + "version": "4.0.1", + "description": "PostCSS for CSS-in-JS and styles in JS objects", + "keywords": [ + "postcss", + "postcss-runner", + "js", + "inline", + "react", + "css", + "cssinjs" + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "repository": "postcss/postcss-js", + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "exports": { + ".": { + "require": "./index.js", + "import": "./index.mjs" + }, + "./package.json": "./package.json", + "./async": "./async.js", + "./objectifier": "./objectifier.js", + "./parser": "./parser.js", + "./process-result": "./process-result.js", + "./sync": "./sync.js" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + }, + "dependencies": { + "camelcase-css": "^2.0.1" + } +} diff --git a/node_modules/postcss-js/parser.js b/node_modules/postcss-js/parser.js new file mode 100644 index 0000000000000000000000000000000000000000..17ae264bb9f4461ebf9ce6466e9606c4cf5e66e3 --- /dev/null +++ b/node_modules/postcss-js/parser.js @@ -0,0 +1,104 @@ +let postcss = require('postcss') + +let IMPORTANT = /\s*!important\s*$/i + +let UNITLESS = { + 'box-flex': true, + 'box-flex-group': true, + 'column-count': true, + 'flex': true, + 'flex-grow': true, + 'flex-positive': true, + 'flex-shrink': true, + 'flex-negative': true, + 'font-weight': true, + 'line-clamp': true, + 'line-height': true, + 'opacity': true, + 'order': true, + 'orphans': true, + 'tab-size': true, + 'widows': true, + 'z-index': true, + 'zoom': true, + 'fill-opacity': true, + 'stroke-dashoffset': true, + 'stroke-opacity': true, + 'stroke-width': true +} + +function dashify(str) { + return str + .replace(/([A-Z])/g, '-$1') + .replace(/^ms-/, '-ms-') + .toLowerCase() +} + +function decl(parent, name, value) { + if (value === false || value === null) return + + if (!name.startsWith('--')) { + name = dashify(name) + } + + if (typeof value === 'number') { + if (value === 0 || UNITLESS[name]) { + value = value.toString() + } else { + value += 'px' + } + } + + if (name === 'css-float') name = 'float' + + if (IMPORTANT.test(value)) { + value = value.replace(IMPORTANT, '') + parent.push(postcss.decl({ prop: name, value, important: true })) + } else { + parent.push(postcss.decl({ prop: name, value })) + } +} + +function atRule(parent, parts, value) { + let node = postcss.atRule({ name: parts[1], params: parts[3] || '' }) + if (typeof value === 'object') { + node.nodes = [] + parse(value, node) + } + parent.push(node) +} + +function parse(obj, parent) { + let name, value, node + for (name in obj) { + value = obj[name] + if (value === null || typeof value === 'undefined') { + continue + } else if (name[0] === '@') { + let parts = name.match(/@(\S+)(\s+([\W\w]*)\s*)?/) + if (Array.isArray(value)) { + for (let i of value) { + atRule(parent, parts, i) + } + } else { + atRule(parent, parts, value) + } + } else if (Array.isArray(value)) { + for (let i of value) { + decl(parent, name, i) + } + } else if (typeof value === 'object') { + node = postcss.rule({ selector: name }) + parse(value, node) + parent.push(node) + } else { + decl(parent, name, value) + } + } +} + +module.exports = function (obj) { + let root = postcss.root() + parse(obj, root) + return root +} diff --git a/node_modules/postcss-js/process-result.js b/node_modules/postcss-js/process-result.js new file mode 100644 index 0000000000000000000000000000000000000000..215a95cc67a81b3f89ef71582a056280f2bfcf17 --- /dev/null +++ b/node_modules/postcss-js/process-result.js @@ -0,0 +1,11 @@ +let objectify = require('./objectifier') + +module.exports = function processResult(result) { + if (console && console.warn) { + result.warnings().forEach(warn => { + let source = warn.plugin || 'PostCSS' + console.warn(source + ': ' + warn.text) + }) + } + return objectify(result.root) +} diff --git a/node_modules/postcss-js/sync.js b/node_modules/postcss-js/sync.js new file mode 100644 index 0000000000000000000000000000000000000000..745bd278cc7bb65aac13c1863244bad29282557d --- /dev/null +++ b/node_modules/postcss-js/sync.js @@ -0,0 +1,12 @@ +let postcss = require('postcss') + +let processResult = require('./process-result') +let parse = require('./parser') + +module.exports = function (plugins) { + let processor = postcss(plugins) + return input => { + let result = processor.process(input, { parser: parse, from: undefined }) + return processResult(result) + } +} diff --git a/node_modules/postcss-load-config/LICENSE b/node_modules/postcss-load-config/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..458e8a34a379c3879b067ef13b8698d6a0b6c0a0 --- /dev/null +++ b/node_modules/postcss-load-config/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright Michael Ciniawsky + +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/postcss-load-config/README.md b/node_modules/postcss-load-config/README.md new file mode 100644 index 0000000000000000000000000000000000000000..741ddd3ea45b18e3ba1e8198f77aec0c1cec0878 --- /dev/null +++ b/node_modules/postcss-load-config/README.md @@ -0,0 +1,500 @@ +[![npm][npm]][npm-url] +[![node][node]][node-url] +[![deps][deps]][deps-url] +[![test][test]][test-url] +[![coverage][cover]][cover-url] +[![code style][style]][style-url] +[![chat][chat]][chat-url] + +
+ + + + + +

Load Config

+
+ +

Install

+ +```bash +npm i -D postcss-load-config +``` + +

Usage

+ +```bash +npm i -S|-D postcss-plugin +``` + +Install all required PostCSS plugins and save them to your **package.json** `dependencies`/`devDependencies` + +Then create a PostCSS config file by choosing one of the following formats + +### `package.json` + +Create a **`postcss`** section in your project's **`package.json`** + +``` +Project (Root) + |– client + |– public + | + |- package.json +``` + +```json +{ + "postcss": { + "parser": "sugarss", + "map": false, + "plugins": { + "postcss-plugin": {} + } + } +} +``` + +### `.postcssrc` + +Create a **`.postcssrc`** file in JSON or YAML format + +> ℹ️ It's recommended to use an extension (e.g **`.postcssrc.json`** or **`.postcssrc.yml`**) instead of `.postcssrc` + +``` +Project (Root) + |– client + |– public + | + |- (.postcssrc|.postcssrc.json|.postcssrc.yml) + |- package.json +``` + +**`.postcssrc.json`** +```json +{ + "parser": "sugarss", + "map": false, + "plugins": { + "postcss-plugin": {} + } +} +``` + +**`.postcssrc.yml`** +```yaml +parser: sugarss +map: false +plugins: + postcss-plugin: {} +``` + +### `.postcssrc.js` or `postcss.config.js` + +You may need some logic within your config. In this case create JS file named **`.postcssrc.js`** or **`postcss.config.js`** + +``` +Project (Root) + |– client + |– public + | + |- (.postcssrc.js|postcss.config.js) + |- package.json +``` + +You can export the config as an `{Object}` + +**.postcssrc.js** +```js +module.exports = { + parser: 'sugarss', + map: false, + plugins: { + 'postcss-plugin': {} + } +} +``` + +Or export a `{Function}` that returns the config (more about the `ctx` param below) + +**.postcssrc.js** +```js +module.exports = (ctx) => ({ + parser: ctx.parser ? 'sugarss' : false, + map: ctx.env === 'development' ? ctx.map : false, + plugins: { + 'postcss-plugin': ctx.options.plugin + } +}) +``` + +Plugins can be loaded either using an `{Object}` or an `{Array}` + +#### `{Object}` + +**.postcssrc.js** +```js +module.exports = ({ env }) => ({ + ...options, + plugins: { + 'postcss-plugin': env === 'production' ? {} : false + } +}) +``` + +> ℹ️ When using an `{Object}`, the key can be a Node.js module name, a path to a JavaScript file that is relative to the directory of the PostCSS config file, or an absolute path to a JavaScript file. + +#### `{Array}` + +**.postcssrc.js** +```js +module.exports = ({ env }) => ({ + ...options, + plugins: [ + env === 'production' ? require('postcss-plugin')() : false + ] +}) +``` +> :warning: When using an `{Array}`, make sure to `require()` each plugin + +

Options

+ +|Name|Type|Default|Description| +|:--:|:--:|:-----:|:----------| +|[**`to`**](#to)|`{String}`|`undefined`|Destination File Path| +|[**`map`**](#map)|`{String\|Object}`|`false`|Enable/Disable Source Maps| +|[**`from`**](#from)|`{String}`|`undefined`|Source File Path| +|[**`parser`**](#parser)|`{String\|Function}`|`false`|Custom PostCSS Parser| +|[**`syntax`**](#syntax)|`{String\|Function}`|`false`|Custom PostCSS Syntax| +|[**`stringifier`**](#stringifier)|`{String\|Function}`|`false`|Custom PostCSS Stringifier| + +### `parser` + +**.postcssrc.js** +```js +module.exports = { + parser: 'sugarss' +} +``` + +### `syntax` + +**.postcssrc.js** +```js +module.exports = { + syntax: 'postcss-scss' +} +``` + +### `stringifier` + +**.postcssrc.js** +```js +module.exports = { + stringifier: 'midas' +} +``` + +### [**`map`**](https://github.com/postcss/postcss/blob/master/docs/source-maps.md) + +**.postcssrc.js** +```js +module.exports = { + map: 'inline' +} +``` + +> :warning: In most cases `options.from` && `options.to` are set by the third-party which integrates this package (CLI, gulp, webpack). It's unlikely one needs to set/use `options.from` && `options.to` within a config file. Unless you're a third-party plugin author using this module and its Node API directly **dont't set `options.from` && `options.to` yourself** + +### `to` + +```js +module.exports = { + to: 'path/to/dest.css' +} +``` + +### `from` + +```js +module.exports = { + from: 'path/to/src.css' +} +``` + +

Plugins

+ +### `{} || null` + +The plugin will be loaded with defaults + +```js +'postcss-plugin': {} || null +``` + +**.postcssrc.js** +```js +module.exports = { + plugins: { + 'postcss-plugin': {} || null + } +} +``` + +> :warning: `{}` must be an **empty** `{Object}` literal + +### `{Object}` + +The plugin will be loaded with given options + +```js +'postcss-plugin': { option: '', option: '' } +``` + +**.postcssrc.js** +```js +module.exports = { + plugins: { + 'postcss-plugin': { option: '', option: '' } + } +} +``` + +### `false` + +The plugin will not be loaded + +```js +'postcss-plugin': false +``` + +**.postcssrc.js** +```js +module.exports = { + plugins: { + 'postcss-plugin': false + } +} +``` + +### `Ordering` + +Plugin **execution order** is determined by declaration in the plugins section (**top-down**) + +```js +{ + plugins: { + 'postcss-plugin': {}, // [0] + 'postcss-plugin': {}, // [1] + 'postcss-plugin': {} // [2] + } +} +``` + +

Context

+ +When using a `{Function}` (`postcss.config.js` or `.postcssrc.js`), it's possible to pass context to `postcss-load-config`, which will be evaluated while loading your config. By default `ctx.env (process.env.NODE_ENV)` and `ctx.cwd (process.cwd())` are available on the `ctx` `{Object}` + +> ℹ️ Most third-party integrations add additional properties to the `ctx` (e.g `postcss-loader`). Check the specific module's README for more information about what is available on the respective `ctx` + +

Examples

+ +**postcss.config.js** + +```js +module.exports = (ctx) => ({ + parser: ctx.parser ? 'sugarss' : false, + map: ctx.env === 'development' ? ctx.map : false, + plugins: { + 'postcss-import': {}, + 'postcss-nested': {}, + cssnano: ctx.env === 'production' ? {} : false + } +}) +``` + +
+ +
+ +```json +"scripts": { + "build": "NODE_ENV=production node postcss", + "start": "NODE_ENV=development node postcss" +} +``` + +### `Async` + +```js +const { readFileSync } = require('fs') + +const postcss = require('postcss') +const postcssrc = require('postcss-load-config') + +const css = readFileSync('index.sss', 'utf8') + +const ctx = { parser: true, map: 'inline' } + +postcssrc(ctx).then(({ plugins, options }) => { + postcss(plugins) + .process(css, options) + .then((result) => console.log(result.css)) +}) +``` + +### `Sync` + +```js +const { readFileSync } = require('fs') + +const postcss = require('postcss') +const postcssrc = require('postcss-load-config') + +const css = readFileSync('index.sss', 'utf8') + +const ctx = { parser: true, map: 'inline' } + +const { plugins, options } = postcssrc.sync(ctx) +``` + +
+ +
+ +```json +"scripts": { + "build": "NODE_ENV=production gulp", + "start": "NODE_ENV=development gulp" +} +``` + +```js +const { task, src, dest, series, watch } = require('gulp') + +const postcss = require('gulp-postcssrc') + +const css = () => { + src('src/*.css') + .pipe(postcss()) + .pipe(dest('dest')) +}) + +task('watch', () => { + watch(['src/*.css', 'postcss.config.js'], css) +}) + +task('default', series(css, 'watch')) +``` + +
+ +
+ +```json +"scripts": { + "build": "NODE_ENV=production webpack", + "start": "NODE_ENV=development webpack-dev-server" +} +``` + +**webpack.config.js** +```js +module.exports = (env) => ({ + module: { + rules: [ + { + test: /\.css$/, + use: [ + 'style-loader', + 'css-loader', + 'postcss-loader' + ] + } + ] + } +}) +``` + +

Maintainers

+ + + + + + + + +
+ +
+ Michael Ciniawsky +
+ +
+ Mateusz Derks +
+ +

Contributors

+ + + + + + + + + + +
+ +
+ Ryan Dunckel +
+ +
+ Patrick Gilday +
+ +
+ Dalton Santos +
+ +
+ François Wouts +
+ + +[npm]: https://img.shields.io/npm/v/postcss-load-config.svg +[npm-url]: https://npmjs.com/package/postcss-load-config + +[node]: https://img.shields.io/node/v/postcss-load-plugins.svg +[node-url]: https://nodejs.org/ + +[deps]: https://david-dm.org/michael-ciniawsky/postcss-load-config.svg +[deps-url]: https://david-dm.org/michael-ciniawsky/postcss-load-config + +[test]: http://img.shields.io/travis/michael-ciniawsky/postcss-load-config.svg +[test-url]: https://travis-ci.org/michael-ciniawsky/postcss-load-config + +[cover]: https://coveralls.io/repos/github/michael-ciniawsky/postcss-load-config/badge.svg +[cover-url]: https://coveralls.io/github/michael-ciniawsky/postcss-load-config + +[style]: https://img.shields.io/badge/code%20style-standard-yellow.svg +[style-url]: http://standardjs.com/ + +[chat]: https://img.shields.io/gitter/room/postcss/postcss.svg +[chat-url]: https://gitter.im/postcss/postcss + +## Security Contact + +To report a security vulnerability, please use the [Tidelift security contact]. +Tidelift will coordinate the fix and disclosure. + +[Tidelift security contact]: https://tidelift.com/security diff --git a/node_modules/postcss-load-config/package.json b/node_modules/postcss-load-config/package.json new file mode 100644 index 0000000000000000000000000000000000000000..01f611b47c4f3e3abdb5ec49a14127b2af73ac9b --- /dev/null +++ b/node_modules/postcss-load-config/package.json @@ -0,0 +1,48 @@ +{ + "name": "postcss-load-config", + "version": "3.1.4", + "description": "Autoload Config for PostCSS", + "main": "src/index.js", + "types": "src/index.d.ts", + "files": [ + "src" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "postcss": { + "optional": true + } + }, + "keywords": [ + "postcss", + "postcssrc", + "postcss.config.js" + ], + "author": "Michael Ciniawky ", + "contributors": [ + "Ryan Dunckel", + "Mateusz Derks", + "Dalton Santos", + "Patrick Gilday", + "François Wouts" + ], + "repository": "postcss/postcss-load-config", + "license": "MIT" +} diff --git a/node_modules/postcss-load-config/src/index.d.ts b/node_modules/postcss-load-config/src/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..c2c4cfe1dccd054a66e9cc23651dc1376f2e7266 --- /dev/null +++ b/node_modules/postcss-load-config/src/index.d.ts @@ -0,0 +1,71 @@ +// based on @types/postcss-load-config@2.0.1 +// Type definitions for postcss-load-config 2.1 +import Processor from 'postcss/lib/processor'; +import { Plugin, ProcessOptions, Transformer } from 'postcss'; +import { Options as ConfigOptions } from "lilconfig"; + +declare function postcssrc( + ctx?: postcssrc.ConfigContext, + path?: string, + options?: ConfigOptions +): Promise; + +declare namespace postcssrc { + function sync( + ctx?: ConfigContext, + path?: string, + options?: ConfigOptions + ): Result; + + // In the ConfigContext, these three options can be instances of the + // appropriate class, or strings. If they are strings, postcss-load-config will + // require() them and pass the instances along. + export interface ProcessOptionsPreload { + parser?: string | ProcessOptions['parser']; + stringifier?: string | ProcessOptions['stringifier']; + syntax?: string | ProcessOptions['syntax']; + } + + // The remaining ProcessOptions, sans the three above. + export type RemainingProcessOptions = Pick< + ProcessOptions, + Exclude + >; + + // Additional context options that postcss-load-config understands. + export interface Context { + cwd?: string; + env?: string; + } + + // The full shape of the ConfigContext. + export type ConfigContext = Context & + ProcessOptionsPreload & + RemainingProcessOptions; + + // Result of postcssrc is a Promise containing the filename plus the options + // and plugins that are ready to pass on to postcss. + export type ResultPlugin = Plugin | Transformer | Processor; + + export interface Result { + file: string; + options: ProcessOptions; + plugins: ResultPlugin[]; + } + + export type ConfigPlugin = Transformer | Plugin | Processor; + + export interface Config { + parser?: string | ProcessOptions['parser'] | false; + stringifier?: string | ProcessOptions['stringifier'] | false; + syntax?: string | ProcessOptions['syntax'] | false; + map?: string | false; + from?: string; + to?: string; + plugins?: Array | Record; + } + + export type ConfigFn = (ctx: ConfigContext) => Config | Promise; +} + +export = postcssrc; diff --git a/node_modules/postcss-load-config/src/index.js b/node_modules/postcss-load-config/src/index.js new file mode 100644 index 0000000000000000000000000000000000000000..db5c40ed75a3de30f5588e8f56457c58debca0b9 --- /dev/null +++ b/node_modules/postcss-load-config/src/index.js @@ -0,0 +1,188 @@ +'use strict' + +const resolve = require('path').resolve + +const config = require('lilconfig') +const yaml = require('yaml') + +const loadOptions = require('./options.js') +const loadPlugins = require('./plugins.js') + +/* istanbul ignore next */ +const interopRequireDefault = (obj) => obj && obj.__esModule ? obj : { default: obj } + +/** + * Process the result from cosmiconfig + * + * @param {Object} ctx Config Context + * @param {Object} result Cosmiconfig result + * + * @return {Object} PostCSS Config + */ +const processResult = (ctx, result) => { + const file = result.filepath || '' + let config = interopRequireDefault(result.config).default || {} + + if (typeof config === 'function') { + config = config(ctx) + } else { + config = Object.assign({}, config, ctx) + } + + if (!config.plugins) { + config.plugins = [] + } + + return { + plugins: loadPlugins(config, file), + options: loadOptions(config, file), + file: file + } +} + +/** + * Builds the Config Context + * + * @param {Object} ctx Config Context + * + * @return {Object} Config Context + */ +const createContext = (ctx) => { + /** + * @type {Object} + * + * @prop {String} cwd=process.cwd() Config search start location + * @prop {String} env=process.env.NODE_ENV Config Enviroment, will be set to `development` by `postcss-load-config` if `process.env.NODE_ENV` is `undefined` + */ + ctx = Object.assign({ + cwd: process.cwd(), + env: process.env.NODE_ENV + }, ctx) + + if (!ctx.env) { + process.env.NODE_ENV = 'development' + } + + return ctx +} + +const addTypeScriptLoader = (options = {}, loader) => { + const moduleName = 'postcss' + + return { + ...options, + searchPlaces: [ + ...(options.searchPlaces || []), + 'package.json', + `.${moduleName}rc`, + `.${moduleName}rc.json`, + `.${moduleName}rc.yaml`, + `.${moduleName}rc.yml`, + `.${moduleName}rc.ts`, + `.${moduleName}rc.js`, + `.${moduleName}rc.cjs`, + `${moduleName}.config.ts`, + `${moduleName}.config.js`, + `${moduleName}.config.cjs` + ], + loaders: { + ...options.loaders, + '.yaml': (filepath, content) => yaml.parse(content), + '.yml': (filepath, content) => yaml.parse(content), + '.ts': loader + } + } +} + +const withTypeScriptLoader = (rcFunc) => { + return (ctx, path, options) => { + return rcFunc(ctx, path, addTypeScriptLoader(options, (configFile) => { + let registerer = { enabled () {} } + + try { + // Register TypeScript compiler instance + registerer = require('ts-node').register() + + return require(configFile) + } catch (err) { + if (err.code === 'MODULE_NOT_FOUND') { + throw new Error( + `'ts-node' is required for the TypeScript configuration files. Make sure it is installed\nError: ${err.message}` + ) + } + + throw err + } finally { + registerer.enabled(false) + } + })) + } +} + +/** + * Load Config + * + * @method rc + * + * @param {Object} ctx Config Context + * @param {String} path Config Path + * @param {Object} options Config Options + * + * @return {Promise} config PostCSS Config + */ +const rc = withTypeScriptLoader((ctx, path, options) => { + /** + * @type {Object} The full Config Context + */ + ctx = createContext(ctx) + + /** + * @type {String} `process.cwd()` + */ + path = path ? resolve(path) : process.cwd() + + return config.lilconfig('postcss', options) + .search(path) + .then((result) => { + if (!result) { + throw new Error(`No PostCSS Config found in: ${path}`) + } + + return processResult(ctx, result) + }) +}) + +rc.sync = withTypeScriptLoader((ctx, path, options) => { + /** + * @type {Object} The full Config Context + */ + ctx = createContext(ctx) + + /** + * @type {String} `process.cwd()` + */ + path = path ? resolve(path) : process.cwd() + + const result = config.lilconfigSync('postcss', options).search(path) + + if (!result) { + throw new Error(`No PostCSS Config found in: ${path}`) + } + + return processResult(ctx, result) +}) + +/** + * Autoload Config for PostCSS + * + * @author Michael Ciniawsky @michael-ciniawsky + * @license MIT + * + * @module postcss-load-config + * @version 2.1.0 + * + * @requires comsiconfig + * @requires ./options + * @requires ./plugins + */ +module.exports = rc diff --git a/node_modules/postcss-load-config/src/options.js b/node_modules/postcss-load-config/src/options.js new file mode 100644 index 0000000000000000000000000000000000000000..d3ef2d65826fd6311cd798ee7d42d98a56af8553 --- /dev/null +++ b/node_modules/postcss-load-config/src/options.js @@ -0,0 +1,47 @@ +'use strict' + +const req = require('./req.js') + +/** + * Load Options + * + * @private + * @method options + * + * @param {Object} config PostCSS Config + * + * @return {Object} options PostCSS Options + */ +const options = (config, file) => { + if (config.parser && typeof config.parser === 'string') { + try { + config.parser = req(config.parser, file) + } catch (err) { + throw new Error(`Loading PostCSS Parser failed: ${err.message}\n\n(@${file})`) + } + } + + if (config.syntax && typeof config.syntax === 'string') { + try { + config.syntax = req(config.syntax, file) + } catch (err) { + throw new Error(`Loading PostCSS Syntax failed: ${err.message}\n\n(@${file})`) + } + } + + if (config.stringifier && typeof config.stringifier === 'string') { + try { + config.stringifier = req(config.stringifier, file) + } catch (err) { + throw new Error(`Loading PostCSS Stringifier failed: ${err.message}\n\n(@${file})`) + } + } + + if (config.plugins) { + delete config.plugins + } + + return config +} + +module.exports = options diff --git a/node_modules/postcss-load-config/src/plugins.js b/node_modules/postcss-load-config/src/plugins.js new file mode 100644 index 0000000000000000000000000000000000000000..6cb994bbb2bb5101dcc280154fd90d7789172eba --- /dev/null +++ b/node_modules/postcss-load-config/src/plugins.js @@ -0,0 +1,85 @@ +'use strict' + +const req = require('./req.js') + +/** + * Plugin Loader + * + * @private + * @method load + * + * @param {String} plugin PostCSS Plugin Name + * @param {Object} options PostCSS Plugin Options + * + * @return {Function} PostCSS Plugin + */ +const load = (plugin, options, file) => { + try { + if ( + options === null || + options === undefined || + Object.keys(options).length === 0 + ) { + return req(plugin, file) + } else { + return req(plugin, file)(options) + } + } catch (err) { + throw new Error(`Loading PostCSS Plugin failed: ${err.message}\n\n(@${file})`) + } +} + +/** + * Load Plugins + * + * @private + * @method plugins + * + * @param {Object} config PostCSS Config Plugins + * + * @return {Array} plugins PostCSS Plugins + */ +const plugins = (config, file) => { + let plugins = [] + + if (Array.isArray(config.plugins)) { + plugins = config.plugins.filter(Boolean) + } else { + plugins = Object.keys(config.plugins) + .filter((plugin) => { + return config.plugins[plugin] !== false ? plugin : '' + }) + .map((plugin) => { + return load(plugin, config.plugins[plugin], file) + }) + } + + if (plugins.length && plugins.length > 0) { + plugins.forEach((plugin, i) => { + if (plugin.default) { + plugin = plugin.default + } + + if (plugin.postcss === true) { + plugin = plugin() + } else if (plugin.postcss) { + plugin = plugin.postcss + } + + if ( + // eslint-disable-next-line + !( + (typeof plugin === 'object' && Array.isArray(plugin.plugins)) || + (typeof plugin === 'object' && plugin.postcssPlugin) || + (typeof plugin === 'function') + ) + ) { + throw new TypeError(`Invalid PostCSS Plugin found at: plugins[${i}]\n\n(@${file})`) + } + }) + } + + return plugins +} + +module.exports = plugins diff --git a/node_modules/postcss-load-config/src/req.js b/node_modules/postcss-load-config/src/req.js new file mode 100644 index 0000000000000000000000000000000000000000..ad6a3321bf02a0b2e98d5796ab6eaa31130958a2 --- /dev/null +++ b/node_modules/postcss-load-config/src/req.js @@ -0,0 +1,10 @@ +// eslint-disable-next-line node/no-deprecated-api +const { createRequire, createRequireFromPath } = require('module') + +function req (name, rootFile) { + const create = createRequire || createRequireFromPath + const require = create(rootFile) + return require(name) +} + +module.exports = req diff --git a/node_modules/postcss-nested/LICENSE b/node_modules/postcss-nested/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..1ae47a2006a52cda9f4acde364a73907a5c314f9 --- /dev/null +++ b/node_modules/postcss-nested/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2014 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/postcss-nested/README.md b/node_modules/postcss-nested/README.md new file mode 100644 index 0000000000000000000000000000000000000000..15e1fa3ddb637aa398859347a33038d176cb581b --- /dev/null +++ b/node_modules/postcss-nested/README.md @@ -0,0 +1,90 @@ +# PostCSS Nested + + + +[PostCSS] plugin to unwrap nested rules like how Sass does it. + +```css +.phone { + &_title { + width: 500px; + @media (max-width: 500px) { + width: auto; + } + body.is_dark & { + color: white; + } + } + img { + display: block; + } +} + +.title { + font-size: var(--font); + + @at-root html { + --font: 16px + } +} +``` + +will be processed to: + +```css +.phone_title { + width: 500px; +} +@media (max-width: 500px) { + .phone_title { + width: auto; + } +} +body.is_dark .phone_title { + color: white; +} +.phone img { + display: block; +} + +.title { + font-size: var(--font); +} +html { + --font: 16px +} +``` + +Related plugins: + +* Use [`postcss-atroot`] for `@at-root` at-rule to move nested child + to the CSS root. +* Use [`postcss-current-selector`] **after** this plugin if you want + to use current selector in properties or variables values. +* Use [`postcss-nested-ancestors`] **before** this plugin if you want + to reference any ancestor element directly in your selectors with `^&`. + +Alternatives: + +* See also [`postcss-nesting`], which implements [CSSWG draft] + (requires the `&` and introduces `@nest`). +* [`postcss-nested-props`] for nested properties like `font-size`. + + + Sponsored by Evil Martians + + +[`postcss-atroot`]: https://github.com/OEvgeny/postcss-atroot +[`postcss-current-selector`]: https://github.com/komlev/postcss-current-selector +[`postcss-nested-ancestors`]: https://github.com/toomuchdesign/postcss-nested-ancestors +[`postcss-nested-props`]: https://github.com/jedmao/postcss-nested-props +[`postcss-nesting`]: https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-nesting +[CSSWG draft]: https://drafts.csswg.org/css-nesting-1/ +[PostCSS]: https://github.com/postcss/postcss + + +## Docs +Read **[full docs](https://github.com/postcss/postcss-nested#readme)** on GitHub. diff --git a/node_modules/postcss-nested/index.d.ts b/node_modules/postcss-nested/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..536768269733e83f1b9012c85da3c9df2fc9eef5 --- /dev/null +++ b/node_modules/postcss-nested/index.d.ts @@ -0,0 +1,41 @@ +// Original definitions (@types/postcss-nested) +// by Maxim Vorontsov + +import { PluginCreator } from 'postcss' + +declare namespace nested { + interface Options { + /** + * By default, plugin will bubble only `@media`, `@supports` and `@layer` + * at-rules. Use this option to add your custom at-rules to this list. + */ + bubble?: string[] + + /** + * By default, plugin will unwrap only `@font-face`, `@keyframes`, + * and `@document` at-rules. You can add your custom at-rules + * to this list by this option. + */ + unwrap?: string[] + + /** + * By default, plugin will strip out any empty selector generated + * by intermediate nesting levels. You can set this option to `true` + * to preserve them. + */ + preserveEmpty?: boolean + + /** + * The plugin supports the SCSS custom at-rule `@at-root` which breaks + * rule blocks out of their nested position. If you want, you can choose + * a new custom name for this rule in your code. + */ + rootRuleName?: string + } + + type Nested = PluginCreator +} + +declare const nested: nested.Nested + +export = nested diff --git a/node_modules/postcss-nested/index.js b/node_modules/postcss-nested/index.js new file mode 100644 index 0000000000000000000000000000000000000000..620e388d19071efa76f7d150f50791d1b9ac678d --- /dev/null +++ b/node_modules/postcss-nested/index.js @@ -0,0 +1,358 @@ +const { Rule, AtRule } = require('postcss') +let parser = require('postcss-selector-parser') + +/** + * Run a selector string through postcss-selector-parser + */ +function parse(rawSelector, rule) { + let nodes + try { + parser(parsed => { + nodes = parsed + }).processSync(rawSelector) + } catch (e) { + if (rawSelector.includes(':')) { + throw rule ? rule.error('Missed semicolon') : e + } else { + throw rule ? rule.error(e.message) : e + } + } + return nodes.at(0) +} + +/** + * Replaces the "&" token in a node's selector with the parent selector + * similar to what SCSS does. + * + * Mutates the nodes list + */ +function interpolateAmpInSelector(nodes, parent) { + let replaced = false + nodes.each(node => { + if (node.type === 'nesting') { + let clonedParent = parent.clone({}) + if (node.value !== '&') { + node.replaceWith( + parse(node.value.replace('&', clonedParent.toString())) + ) + } else { + node.replaceWith(clonedParent) + } + replaced = true + } else if ('nodes' in node && node.nodes) { + if (interpolateAmpInSelector(node, parent)) { + replaced = true + } + } + }) + return replaced +} + +/** + * Combines parent and child selectors, in a SCSS-like way + */ +function mergeSelectors(parent, child) { + let merged = [] + parent.selectors.forEach(sel => { + let parentNode = parse(sel, parent) + + child.selectors.forEach(selector => { + if (!selector) { + return + } + let node = parse(selector, child) + let replaced = interpolateAmpInSelector(node, parentNode) + if (!replaced) { + node.prepend(parser.combinator({ value: ' ' })) + node.prepend(parentNode.clone({})) + } + merged.push(node.toString()) + }) + }) + return merged +} + +/** + * Move a child and its preceeding comment(s) to after "after" + */ +function breakOut(child, after) { + let prev = child.prev() + after.after(child) + while (prev && prev.type === 'comment') { + let nextPrev = prev.prev() + after.after(prev) + prev = nextPrev + } + return child +} + +function createFnAtruleChilds(bubble) { + return function atruleChilds(rule, atrule, bubbling, mergeSels = bubbling) { + let children = [] + atrule.each(child => { + if (child.type === 'rule' && bubbling) { + if (mergeSels) { + child.selectors = mergeSelectors(rule, child) + } + } else if (child.type === 'atrule' && child.nodes) { + if (bubble[child.name]) { + atruleChilds(rule, child, mergeSels) + } else if (atrule[rootRuleMergeSel] !== false) { + children.push(child) + } + } else { + children.push(child) + } + }) + if (bubbling) { + if (children.length) { + let clone = rule.clone({ nodes: [] }) + for (let child of children) { + clone.append(child) + } + atrule.prepend(clone) + } + } + } +} + +function pickDeclarations(selector, declarations, after) { + let parent = new Rule({ + selector, + nodes: [] + }) + parent.append(declarations) + after.after(parent) + return parent +} + +function atruleNames(defaults, custom) { + let list = {} + for (let name of defaults) { + list[name] = true + } + if (custom) { + for (let name of custom) { + list[name.replace(/^@/, '')] = true + } + } + return list +} + +function parseRootRuleParams(params) { + params = params.trim() + let braceBlock = params.match(/^\((.*)\)$/) + if (!braceBlock) { + return { type: 'basic', selector: params } + } + let bits = braceBlock[1].match(/^(with(?:out)?):(.+)$/) + if (bits) { + let allowlist = bits[1] === 'with' + let rules = Object.fromEntries( + bits[2] + .trim() + .split(/\s+/) + .map(name => [name, true]) + ) + if (allowlist && rules.all) { + return { type: 'noop' } + } + let escapes = rule => !!rules[rule] + if (rules.all) { + escapes = () => true + } else if (allowlist) { + escapes = rule => (rule === 'all' ? false : !rules[rule]) + } + + return { + type: 'withrules', + escapes + } + } + // Unrecognized brace block + return { type: 'unknown' } +} + +function getAncestorRules(leaf) { + let lineage = [] + let parent = leaf.parent + + while (parent && parent instanceof AtRule) { + lineage.push(parent) + parent = parent.parent + } + return lineage +} + +function unwrapRootRule(rule) { + let escapes = rule[rootRuleEscapes] + + if (!escapes) { + rule.after(rule.nodes) + } else { + let nodes = rule.nodes + + let topEscaped + let topEscapedIdx = -1 + let breakoutLeaf + let breakoutRoot + let clone + + let lineage = getAncestorRules(rule) + lineage.forEach((parent, i) => { + if (escapes(parent.name)) { + topEscaped = parent + topEscapedIdx = i + breakoutRoot = clone + } else { + let oldClone = clone + clone = parent.clone({ nodes: [] }) + oldClone && clone.append(oldClone) + breakoutLeaf = breakoutLeaf || clone + } + }) + + if (!topEscaped) { + rule.after(nodes) + } else if (!breakoutRoot) { + topEscaped.after(nodes) + } else { + let leaf = breakoutLeaf + leaf.append(nodes) + topEscaped.after(breakoutRoot) + } + + if (rule.next() && topEscaped) { + let restRoot + lineage.slice(0, topEscapedIdx + 1).forEach((parent, i, arr) => { + let oldRoot = restRoot + restRoot = parent.clone({ nodes: [] }) + oldRoot && restRoot.append(oldRoot) + + let nextSibs = [] + let _child = arr[i - 1] || rule + let next = _child.next() + while (next) { + nextSibs.push(next) + next = next.next() + } + restRoot.append(nextSibs) + }) + restRoot && (breakoutRoot || nodes[nodes.length - 1]).after(restRoot) + } + } + + rule.remove() +} + +const rootRuleMergeSel = Symbol('rootRuleMergeSel') +const rootRuleEscapes = Symbol('rootRuleEscapes') + +function normalizeRootRule(rule) { + let { params } = rule + let { type, selector, escapes } = parseRootRuleParams(params) + if (type === 'unknown') { + throw rule.error( + `Unknown @${rule.name} parameter ${JSON.stringify(params)}` + ) + } + if (type === 'basic' && selector) { + let selectorBlock = new Rule({ selector, nodes: rule.nodes }) + rule.removeAll() + rule.append(selectorBlock) + } + rule[rootRuleEscapes] = escapes + rule[rootRuleMergeSel] = escapes ? !escapes('all') : type === 'noop' +} + +const hasRootRule = Symbol('hasRootRule') + +module.exports = (opts = {}) => { + let bubble = atruleNames(['media', 'supports', 'layer'], opts.bubble) + let atruleChilds = createFnAtruleChilds(bubble) + let unwrap = atruleNames( + [ + 'document', + 'font-face', + 'keyframes', + '-webkit-keyframes', + '-moz-keyframes' + ], + opts.unwrap + ) + let rootRuleName = (opts.rootRuleName || 'at-root').replace(/^@/, '') + let preserveEmpty = opts.preserveEmpty + + return { + postcssPlugin: 'postcss-nested', + + Once(root) { + root.walkAtRules(rootRuleName, node => { + normalizeRootRule(node) + root[hasRootRule] = true + }) + }, + + Rule(rule) { + let unwrapped = false + let after = rule + let copyDeclarations = false + let declarations = [] + + rule.each(child => { + if (child.type === 'rule') { + if (declarations.length) { + after = pickDeclarations(rule.selector, declarations, after) + declarations = [] + } + + copyDeclarations = true + unwrapped = true + child.selectors = mergeSelectors(rule, child) + after = breakOut(child, after) + } else if (child.type === 'atrule') { + if (declarations.length) { + after = pickDeclarations(rule.selector, declarations, after) + declarations = [] + } + if (child.name === rootRuleName) { + unwrapped = true + atruleChilds(rule, child, true, child[rootRuleMergeSel]) + after = breakOut(child, after) + } else if (bubble[child.name]) { + copyDeclarations = true + unwrapped = true + atruleChilds(rule, child, true) + after = breakOut(child, after) + } else if (unwrap[child.name]) { + copyDeclarations = true + unwrapped = true + atruleChilds(rule, child, false) + after = breakOut(child, after) + } else if (copyDeclarations) { + declarations.push(child) + } + } else if (child.type === 'decl' && copyDeclarations) { + declarations.push(child) + } + }) + + if (declarations.length) { + after = pickDeclarations(rule.selector, declarations, after) + } + + if (unwrapped && preserveEmpty !== true) { + rule.raws.semicolon = true + if (rule.nodes.length === 0) rule.remove() + } + }, + + RootExit(root) { + if (root[hasRootRule]) { + root.walkAtRules(rootRuleName, unwrapRootRule) + root[hasRootRule] = false + } + } + } +} +module.exports.postcss = true diff --git a/node_modules/postcss-nested/package.json b/node_modules/postcss-nested/package.json new file mode 100644 index 0000000000000000000000000000000000000000..17197f4dd90ae52905aa1d2a15ec5abf66f619e6 --- /dev/null +++ b/node_modules/postcss-nested/package.json @@ -0,0 +1,28 @@ +{ + "name": "postcss-nested", + "version": "6.0.0", + "description": "PostCSS plugin to unwrap nested rules like how Sass does it", + "keywords": [ + "postcss", + "css", + "postcss-plugin", + "sass", + "nested" + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "repository": "postcss/postcss-nested", + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + }, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + } +} diff --git a/node_modules/postcss-selector-parser/API.md b/node_modules/postcss-selector-parser/API.md new file mode 100644 index 0000000000000000000000000000000000000000..36c7298fc9753c89bd19d2772b337669565230c4 --- /dev/null +++ b/node_modules/postcss-selector-parser/API.md @@ -0,0 +1,875 @@ +# API Documentation + +*Please use only this documented API when working with the parser. Methods +not documented here are subject to change at any point.* + +## `parser` function + +This is the module's main entry point. + +```js +const parser = require('postcss-selector-parser'); +``` + +### `parser([transform], [options])` + +Creates a new `processor` instance + +```js +const processor = parser(); +``` + +Or, with optional transform function + +```js +const transform = selectors => { + selectors.walkUniversals(selector => { + selector.remove(); + }); +}; + +const processor = parser(transform) + +// Example +const result = processor.processSync('*.class'); +// => .class +``` + +[See processor documentation](#processor) + +Arguments: + +* `transform (function)`: Provide a function to work with the parsed AST. +* `options (object)`: Provide default options for all calls on the returned `Processor`. + +### `parser.attribute([props])` + +Creates a new attribute selector. + +```js +parser.attribute({attribute: 'href'}); +// => [href] +``` + +Arguments: + +* `props (object)`: The new node's properties. + +### `parser.className([props])` + +Creates a new class selector. + +```js +parser.className({value: 'button'}); +// => .button +``` + +Arguments: + +* `props (object)`: The new node's properties. + +### `parser.combinator([props])` + +Creates a new selector combinator. + +```js +parser.combinator({value: '+'}); +// => + +``` + +Arguments: + +* `props (object)`: The new node's properties. + +Notes: +* **Descendant Combinators** The value of descendant combinators created by the + parser always just a single space (`" "`). For descendant selectors with no + comments, additional space is now stored in `node.spaces.before`. Depending + on the location of comments, additional spaces may be stored in + `node.raws.spaces.before`, `node.raws.spaces.after`, or `node.raws.value`. +* **Named Combinators** Although, nonstandard and unlikely to ever become a standard, + named combinators like `/deep/` and `/for/` are parsed as combinators. The + `node.value` is name after being unescaped and normalized as lowercase. The + original value for the combinator name is stored in `node.raws.value`. + + +### `parser.comment([props])` + +Creates a new comment. + +```js +parser.comment({value: '/* Affirmative, Dave. I read you. */'}); +// => /* Affirmative, Dave. I read you. */ +``` + +Arguments: + +* `props (object)`: The new node's properties. + +### `parser.id([props])` + +Creates a new id selector. + +```js +parser.id({value: 'search'}); +// => #search +``` + +Arguments: + +* `props (object)`: The new node's properties. + +### `parser.nesting([props])` + +Creates a new nesting selector. + +```js +parser.nesting(); +// => & +``` + +Arguments: + +* `props (object)`: The new node's properties. + +### `parser.pseudo([props])` + +Creates a new pseudo selector. + +```js +parser.pseudo({value: '::before'}); +// => ::before +``` + +Arguments: + +* `props (object)`: The new node's properties. + +### `parser.root([props])` + +Creates a new root node. + +```js +parser.root(); +// => (empty) +``` + +Arguments: + +* `props (object)`: The new node's properties. + +### `parser.selector([props])` + +Creates a new selector node. + +```js +parser.selector(); +// => (empty) +``` + +Arguments: + +* `props (object)`: The new node's properties. + +### `parser.string([props])` + +Creates a new string node. + +```js +parser.string(); +// => (empty) +``` + +Arguments: + +* `props (object)`: The new node's properties. + +### `parser.tag([props])` + +Creates a new tag selector. + +```js +parser.tag({value: 'button'}); +// => button +``` + +Arguments: + +* `props (object)`: The new node's properties. + +### `parser.universal([props])` + +Creates a new universal selector. + +```js +parser.universal(); +// => * +``` + +Arguments: + +* `props (object)`: The new node's properties. + +## Node types + +### `node.type` + +A string representation of the selector type. It can be one of the following; +`attribute`, `class`, `combinator`, `comment`, `id`, `nesting`, `pseudo`, +`root`, `selector`, `string`, `tag`, or `universal`. Note that for convenience, +these constants are exposed on the main `parser` as uppercased keys. So for +example you can get `id` by querying `parser.ID`. + +```js +parser.attribute({attribute: 'href'}).type; +// => 'attribute' +``` + +### `node.parent` + +Returns the parent node. + +```js +root.nodes[0].parent === root; +``` + +### `node.toString()`, `String(node)`, or `'' + node` + +Returns a string representation of the node. + +```js +const id = parser.id({value: 'search'}); +console.log(String(id)); +// => #search +``` + +### `node.next()` & `node.prev()` + +Returns the next/previous child of the parent node. + +```js +const next = id.next(); +if (next && next.type !== 'combinator') { + throw new Error('Qualified IDs are not allowed!'); +} +``` + +### `node.replaceWith(node)` + +Replace a node with another. + +```js +const attr = selectors.first.first; +const className = parser.className({value: 'test'}); +attr.replaceWith(className); +``` + +Arguments: + +* `node`: The node to substitute the original with. + +### `node.remove()` + +Removes the node from its parent node. + +```js +if (node.type === 'id') { + node.remove(); +} +``` + +### `node.clone()` + +Returns a copy of a node, detached from any parent containers that the +original might have had. + +```js +const cloned = parser.id({value: 'search'}); +String(cloned); + +// => #search +``` + +### `node.isAtPosition(line, column)` + +Return a `boolean` indicating whether this node includes the character at the +position of the given line and column. Returns `undefined` if the nodes lack +sufficient source metadata to determine the position. + +Arguments: + +* `line`: 1-index based line number relative to the start of the selector. +* `column`: 1-index based column number relative to the start of the selector. + +### `node.spaces` + +Extra whitespaces around the node will be moved into `node.spaces.before` and +`node.spaces.after`. So for example, these spaces will be moved as they have +no semantic meaning: + +```css + h1 , h2 {} +``` + +For descendent selectors, the value is always a single space. + +```css +h1 h2 {} +``` + +Additional whitespace is found in either the `node.spaces.before` and `node.spaces.after` depending on the presence of comments or other whitespace characters. If the actual whitespace does not start or end with a single space, the node's raw value is set to the actual space(s) found in the source. + +### `node.source` + +An object describing the node's start/end, line/column source position. + +Within the following CSS, the `.bar` class node ... + +```css +.foo, + .bar {} +``` + +... will contain the following `source` object. + +```js +source: { + start: { + line: 2, + column: 3 + }, + end: { + line: 2, + column: 6 + } +} +``` + +### `node.sourceIndex` + +The zero-based index of the node within the original source string. + +Within the following CSS, the `.baz` class node will have a `sourceIndex` of `12`. + +```css +.foo, .bar, .baz {} +``` + +## Container types + +The `root`, `selector`, and `pseudo` nodes have some helper methods for working +with their children. + +### `container.nodes` + +An array of the container's children. + +```js +// Input: h1 h2 +selectors.at(0).nodes.length // => 3 +selectors.at(0).nodes[0].value // => 'h1' +selectors.at(0).nodes[1].value // => ' ' +``` + +### `container.first` & `container.last` + +The first/last child of the container. + +```js +selector.first === selector.nodes[0]; +selector.last === selector.nodes[selector.nodes.length - 1]; +``` + +### `container.at(index)` + +Returns the node at position `index`. + +```js +selector.at(0) === selector.first; +selector.at(0) === selector.nodes[0]; +``` + +Arguments: + +* `index`: The index of the node to return. + +### `container.atPosition(line, column)` + +Returns the node at the source position `line` and `column`. + +```js +// Input: :not(.foo),\n#foo > :matches(ol, ul) +selector.atPosition(1, 1); // => :not(.foo) +selector.atPosition(2, 1); // => \n#foo +``` + +Arguments: + +* `line`: The line number of the node to return. +* `column`: The column number of the node to return. + +### `container.index(node)` + +Return the index of the node within its container. + +```js +selector.index(selector.nodes[2]) // => 2 +``` + +Arguments: + +* `node`: A node within the current container. + +### `container.length` + +Proxy to the length of the container's nodes. + +```js +container.length === container.nodes.length +``` + +### `container` Array iterators + +The container class provides proxies to certain Array methods; these are: + +* `container.map === container.nodes.map` +* `container.reduce === container.nodes.reduce` +* `container.every === container.nodes.every` +* `container.some === container.nodes.some` +* `container.filter === container.nodes.filter` +* `container.sort === container.nodes.sort` + +Note that these methods only work on a container's immediate children; recursive +iteration is provided by `container.walk`. + +### `container.each(callback)` + +Iterate the container's immediate children, calling `callback` for each child. +You may return `false` within the callback to break the iteration. + +```js +let className; +selectors.each((selector, index) => { + if (selector.type === 'class') { + className = selector.value; + return false; + } +}); +``` + +Note that unlike `Array#forEach()`, this iterator is safe to use whilst adding +or removing nodes from the container. + +Arguments: + +* `callback (function)`: A function to call for each node, which receives `node` + and `index` arguments. + +### `container.walk(callback)` + +Like `container#each`, but will also iterate child nodes as long as they are +`container` types. + +```js +selectors.walk((selector, index) => { + // all nodes +}); +``` + +Arguments: + +* `callback (function)`: A function to call for each node, which receives `node` + and `index` arguments. + +This iterator is safe to use whilst mutating `container.nodes`, +like `container#each`. + +### `container.walk` proxies + +The container class provides proxy methods for iterating over types of nodes, +so that it is easier to write modules that target specific selectors. Those +methods are: + +* `container.walkAttributes` +* `container.walkClasses` +* `container.walkCombinators` +* `container.walkComments` +* `container.walkIds` +* `container.walkNesting` +* `container.walkPseudos` +* `container.walkTags` +* `container.walkUniversals` + +### `container.split(callback)` + +This method allows you to split a group of nodes by returning `true` from +a callback. It returns an array of arrays, where each inner array corresponds +to the groups that you created via the callback. + +```js +// (input) => h1 h2>>h3 +const list = selectors.first.split(selector => { + return selector.type === 'combinator'; +}); + +// (node values) => [['h1', ' '], ['h2', '>>'], ['h3']] +``` + +Arguments: + +* `callback (function)`: A function to call for each node, which receives `node` + as an argument. + +### `container.prepend(node)` & `container.append(node)` + +Add a node to the start/end of the container. Note that doing so will set +the parent property of the node to this container. + +```js +const id = parser.id({value: 'search'}); +selector.append(id); +``` + +Arguments: + +* `node`: The node to add. + +### `container.insertBefore(old, new)` & `container.insertAfter(old, new)` + +Add a node before or after an existing node in a container: + +```js +selectors.walk(selector => { + if (selector.type !== 'class') { + const className = parser.className({value: 'theme-name'}); + selector.parent.insertAfter(selector, className); + } +}); +``` + +Arguments: + +* `old`: The existing node in the container. +* `new`: The new node to add before/after the existing node. + +### `container.removeChild(node)` + +Remove the node from the container. Note that you can also use +`node.remove()` if you would like to remove just a single node. + +```js +selector.length // => 2 +selector.remove(id) +selector.length // => 1; +id.parent // undefined +``` + +Arguments: + +* `node`: The node to remove. + +### `container.removeAll()` or `container.empty()` + +Remove all children from the container. + +```js +selector.removeAll(); +selector.length // => 0 +``` + +## Root nodes + +A root node represents a comma separated list of selectors. Indeed, all +a root's `toString()` method does is join its selector children with a ','. +Other than this, it has no special functionality and acts like a container. + +### `root.trailingComma` + +This will be set to `true` if the input has a trailing comma, in order to +support parsing of legacy CSS hacks. + +## Selector nodes + +A selector node represents a single complex selector. For example, this +selector string `h1 h2 h3, [href] > p`, is represented as two selector nodes. +It has no special functionality of its own. + +## Pseudo nodes + +A pseudo selector extends a container node; if it has any parameters of its +own (such as `h1:not(h2, h3)`), they will be its children. Note that the pseudo +`value` will always contain the colons preceding the pseudo identifier. This +is so that both `:before` and `::before` are properly represented in the AST. + +## Attribute nodes + +### `attribute.quoted` + +Returns `true` if the attribute's value is wrapped in quotation marks, false if it is not. +Remains `undefined` if there is no attribute value. + +```css +[href=foo] /* false */ +[href='foo'] /* true */ +[href="foo"] /* true */ +[href] /* undefined */ +``` + +### `attribute.qualifiedAttribute` + +Returns the attribute name qualified with the namespace if one is given. + +### `attribute.offsetOf(part)` + + Returns the offset of the attribute part specified relative to the + start of the node of the output string. This is useful in raising + error messages about a specific part of the attribute, especially + in combination with `attribute.sourceIndex`. + + Returns `-1` if the name is invalid or the value doesn't exist in this + attribute. + + The legal values for `part` are: + + * `"ns"` - alias for "namespace" + * `"namespace"` - the namespace if it exists. + * `"attribute"` - the attribute name + * `"attributeNS"` - the start of the attribute or its namespace + * `"operator"` - the match operator of the attribute + * `"value"` - The value (string or identifier) + * `"insensitive"` - the case insensitivity flag + +### `attribute.raws.unquoted` + +Returns the unquoted content of the attribute's value. +Remains `undefined` if there is no attribute value. + +```css +[href=foo] /* foo */ +[href='foo'] /* foo */ +[href="foo"] /* foo */ +[href] /* undefined */ +``` + +### `attribute.spaces` + +Like `node.spaces` with the `before` and `after` values containing the spaces +around the element, the parts of the attribute can also have spaces before +and after them. The for each of `attribute`, `operator`, `value` and +`insensitive` there is corresponding property of the same nam in +`node.spaces` that has an optional `before` or `after` string containing only +whitespace. + +Note that corresponding values in `attributes.raws.spaces` contain values +including any comments. If set, these values will override the +`attribute.spaces` value. Take care to remove them if changing +`attribute.spaces`. + +### `attribute.raws` + +The raws object stores comments and other information necessary to re-render +the node exactly as it was in the source. + +If a comment is embedded within the identifiers for the `namespace`, `attribute` +or `value` then a property is placed in the raws for that value containing the full source of the propery including comments. + +If a comment is embedded within the space between parts of the attribute +then the raw for that space is set accordingly. + +Setting an attribute's property `raws` value to be deleted. + +For now, changing the spaces required also updating or removing any of the +raws values that override them. + +Example: `[ /*before*/ href /* after-attr */ = /* after-operator */ te/*inside-value*/st/* wow */ /*omg*/i/*bbq*/ /*whodoesthis*/]` would parse as: + +```js +{ + attribute: "href", + operator: "=", + value: "test", + spaces: { + before: '', + after: '', + attribute: { before: ' ', after: ' ' }, + operator: { after: ' ' }, + value: { after: ' ' }, + insensitive: { after: ' ' } + }, + raws: { + spaces: { + attribute: { before: ' /*before*/ ', after: ' /* after-attr */ ' }, + operator: { after: ' /* after-operator */ ' }, + value: { after: '/* wow */ /*omg*/' }, + insensitive: { after: '/*bbq*/ /*whodoesthis*/' } + }, + unquoted: 'test', + value: 'te/*inside-value*/st' + } +} +``` + +## `Processor` + +### `ProcessorOptions` + +* `lossless` - When `true`, whitespace is preserved. Defaults to `true`. +* `updateSelector` - When `true`, if any processor methods are passed a postcss + `Rule` node instead of a string, then that Rule's selector is updated + with the results of the processing. Defaults to `true`. + +### `process|processSync(selectors, [options])` + +Processes the `selectors`, returning a string from the result of processing. + +Note: when the `updateSelector` option is set, the rule's selector +will be updated with the resulting string. + +**Example:** + +```js +const parser = require("postcss-selector-parser"); +const processor = parser(); + +let result = processor.processSync(' .class'); +console.log(result); +// => .class + +// Asynchronous operation +let promise = processor.process(' .class').then(result => { + console.log(result) + // => .class +}); + +// To have the parser normalize whitespace values, utilize the options +result = processor.processSync(' .class ', {lossless: false}); +console.log(result); +// => .class + +// For better syntax errors, pass a PostCSS Rule node. +const postcss = require('postcss'); +rule = postcss.rule({selector: ' #foo > a, .class '}); +processor.process(rule, {lossless: false, updateSelector: true}).then(result => { + console.log(result); + // => #foo>a,.class + console.log("rule:", rule.selector); + // => rule: #foo>a,.class +}) +``` + +Arguments: + +* `selectors (string|postcss.Rule)`: Either a selector string or a PostCSS Rule + node. +* `[options] (object)`: Process options + + +### `ast|astSync(selectors, [options])` + +Like `process()` and `processSync()` but after +processing the `selectors` these methods return the `Root` node of the result +instead of a string. + +Note: when the `updateSelector` option is set, the rule's selector +will be updated with the resulting string. + +### `transform|transformSync(selectors, [options])` + +Like `process()` and `processSync()` but after +processing the `selectors` these methods return the value returned by the +processor callback. + +Note: when the `updateSelector` option is set, the rule's selector +will be updated with the resulting string. + +### Error Handling Within Selector Processors + +The root node passed to the selector processor callback +has a method `error(message, options)` that returns an +error object. This method should always be used to raise +errors relating to the syntax of selectors. The options +to this method are passed to postcss's error constructor +([documentation](http://api.postcss.org/Container.html#error)). + +#### Async Error Example + +```js +let processor = (root) => { + return new Promise((resolve, reject) => { + root.walkClasses((classNode) => { + if (/^(.*)[-_]/.test(classNode.value)) { + let msg = "classes may not have underscores or dashes in them"; + reject(root.error(msg, { + index: classNode.sourceIndex + RegExp.$1.length + 1, + word: classNode.value + })); + } + }); + resolve(); + }); +}; + +const postcss = require("postcss"); +const parser = require("postcss-selector-parser"); +const selectorProcessor = parser(processor); +const plugin = postcss.plugin('classValidator', (options) => { + return (root) => { + let promises = []; + root.walkRules(rule => { + promises.push(selectorProcessor.process(rule)); + }); + return Promise.all(promises); + }; +}); +postcss(plugin()).process(` +.foo-bar { + color: red; +} +`.trim(), {from: 'test.css'}).catch((e) => console.error(e.toString())); + +// CssSyntaxError: classValidator: ./test.css:1:5: classes may not have underscores or dashes in them +// +// > 1 | .foo-bar { +// | ^ +// 2 | color: red; +// 3 | } +``` + +#### Synchronous Error Example + +```js +let processor = (root) => { + root.walkClasses((classNode) => { + if (/.*[-_]/.test(classNode.value)) { + let msg = "classes may not have underscores or dashes in them"; + throw root.error(msg, { + index: classNode.sourceIndex, + word: classNode.value + }); + } + }); +}; + +const postcss = require("postcss"); +const parser = require("postcss-selector-parser"); +const selectorProcessor = parser(processor); +const plugin = postcss.plugin('classValidator', (options) => { + return (root) => { + root.walkRules(rule => { + selectorProcessor.processSync(rule); + }); + }; +}); +postcss(plugin()).process(` +.foo-bar { + color: red; +} +`.trim(), {from: 'test.css'}).catch((e) => console.error(e.toString())); + +// CssSyntaxError: classValidator: ./test.css:1:5: classes may not have underscores or dashes in them +// +// > 1 | .foo-bar { +// | ^ +// 2 | color: red; +// 3 | } +``` diff --git a/node_modules/postcss-selector-parser/CHANGELOG.md b/node_modules/postcss-selector-parser/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..eff9d865e9f20365edcb7f9f3c8f588d7de47bb5 --- /dev/null +++ b/node_modules/postcss-selector-parser/CHANGELOG.md @@ -0,0 +1,517 @@ +# 6.0.11 + +- Fixed: parse attribute case insensitivity flag + +# 6.0.10 + +- Fixed: `isPseudoElement()` supports `:first-letter` and `:first-line` + +# 6.0.9 + +- Fixed: `Combinator.raws` property type + +# 6.0.8 + +- Fixed: reduced size + +# 6.0.7 + +- Fixed: parse animation percents + +# 6.0.6 + +- Fixed: parse quoted attributes containing a newline correctly + +# 6.0.5 + +- Perf: rework unesc for a 63+% performance boost + +# 6.0.4 + +- Fixed: ts errors + +# 6.0.3 + +- Fixed: replace node built-in "util" module with "util-deprecate" +- Fixed: handle uppercase pseudo elements +- Fixed: do not create invalid combinator before comment + +# 6.0.2 + +- Fixed an issue with parsing and stringifying an empty attribute value + +# 6.0.1 + +- Fixed an issue with unicode surrogate pair parsing + +# 6.0.0 + +- Updated: `cssesc` to 3.0.0 (major) +- Fixed: Issues with escaped `id` and `class` selectors + +# 5.0.0 + +- Allow escaped dot within class name. +- Update PostCSS to 7.0.7 (patch) + +# 5.0.0-rc.4 + +- Fixed an issue where comments immediately after an insensitive (in attribute) + were not parsed correctly. +- Updated `cssesc` to 2.0.0 (major). +- Removed outdated integration tests. +- Added tests for custom selectors, tags with attributes, the universal + selector with pseudos, and tokens after combinators. + +# 5.0.0-rc.1 + +To ease adoption of the v5.0 release, we have relaxed the node version +check performed by npm at installation time to allow for node 4, which +remains officially unsupported, but likely to continue working for the +time being. + +# 5.0.0-rc.0 + +This release has **BREAKING CHANGES** that were required to fix regressions +in 4.0.0 and to make the Combinator Node API consistent for all combinator +types. Please read carefully. + +## Summary of Changes + +* The way a descendent combinator that isn't a single space character (E.g. `.a .b`) is stored in the AST has changed. +* Named Combinators (E.g. `.a /for/ .b`) are now properly parsed as a combinator. +* It is now possible to look up a node based on the source location of a character in that node and to query nodes if they contain some character. +* Several bug fixes that caused the parser to hang and run out of memory when a `/` was encountered have been fixed. +* The minimum supported version of Node is now `v6.0.0`. + +### Changes to the Descendent Combinator + +In prior releases, the value of a descendant combinator with multiple spaces included all the spaces. + +* `.a .b`: Extra spaces are now stored as space before. + - Old & Busted: + - `combinator.value === " "` + - New hotness: + - `combinator.value === " " && combinator.spaces.before === " "` +* `.a /*comment*/.b`: A comment at the end of the combinator causes extra space to become after space. + - Old & Busted: + - `combinator.value === " "` + - `combinator.raws.value === " /*comment/"` + - New hotness: + - `combinator.value === " "` + - `combinator.spaces.after === " "` + - `combinator.raws.spaces.after === " /*comment*/"` +* `.a.b`: whitespace that doesn't start or end with a single space character is stored as a raw value. + - Old & Busted: + - `combinator.value === "\n"` + - `combinator.raws.value === undefined` + - New hotness: + - `combinator.value === " "` + - `combinator.raws.value === "\n"` + +### Support for "Named Combinators" + +Although, nonstandard and unlikely to ever become a standard, combinators like `/deep/` and `/for/` are now properly supported. + +Because they've been taken off the standardization track, there is no spec-official name for combinators of the form `//`. However, I talked to [Tab Atkins](https://twitter.com/tabatkins) and we agreed to call them "named combinators" so now they are called that. + +Before this release such named combinators were parsed without intention and generated three nodes of type `"tag"` where the first and last nodes had a value of `"/"`. + +* `.a /for/ .b` is parsed as a combinator. + - Old & Busted: + - `root.nodes[0].nodes[1].type === "tag"` + - `root.nodes[0].nodes[1].value === "/"` + - New hotness: + - `root.nodes[0].nodes[1].type === "combinator"` + - `root.nodes[0].nodes[1].value === "/for/"` +* `.a /F\6fR/ .b` escapes are handled and uppercase is normalized. + - Old & Busted: + - `root.nodes[0].nodes[2].type === "tag"` + - `root.nodes[0].nodes[2].value === "F\\6fR"` + - New hotness: + - `root.nodes[0].nodes[1].type === "combinator"` + - `root.nodes[0].nodes[1].value === "/for/"` + - `root.nodes[0].nodes[1].raws.value === "/F\\6fR/"` + +### Source position checks and lookups + +A new API was added to look up a node based on the source location. + +```js +const selectorParser = require("postcss-selector-parser"); +// You can find the most specific node for any given character +let combinator = selectorParser.astSync(".a > .b").atPosition(1,4); +combinator.toString() === " > "; +// You can check if a node includes a specific character +// Whitespace surrounding the node that is owned by that node +// is included in the check. +[2,3,4,5,6].map(column => combinator.isAtPosition(1, column)); +// => [false, true, true, true, false] +``` + +# 4.0.0 + +This release has **BREAKING CHANGES** that were required to fix bugs regarding values with escape sequences. Please read carefully. + +* **Identifiers with escapes** - CSS escape sequences are now hidden from the public API by default. + The normal value of a node like a class name or ID, or an aspect of a node such as attribute + selector's value, is unescaped. Escapes representing Non-ascii characters are unescaped into + unicode characters. For example: `bu\tton, .\31 00, #i\2764\FE0Fu, [attr="value is \"quoted\""]` + will parse respectively to the values `button`, `100`, `i❤️u`, `value is "quoted"`. + The original escape sequences for these values can be found in the corresponding property name + in `node.raws`. Where possible, deprecation warnings were added, but the nature + of escape handling makes it impossible to detect what is escaped or not. Our expectation is + that most users are neither expecting nor handling escape sequences in their use of this library, + and so for them, this is a bug fix. Users who are taking care to handle escapes correctly can + now update their code to remove the escape handling and let us do it for them. + +* **Mutating values with escapes** - When you make an update to a node property that has escape handling + The value is assumed to be unescaped, and any special characters are escaped automatically and + the corresponding `raws` value is immediately updated. This can result in changes to the original + escape format. Where the exact value of the escape sequence is important there are methods that + allow both values to be set in conjunction. There are a number of new convenience methods for + manipulating values that involve escapes, especially for attributes values where the quote mark + is involved. See https://github.com/postcss/postcss-selector-parser/pull/133 for an extensive + write-up on these changes. + + +**Upgrade/API Example** + +In `3.x` there was no unescape handling and internal consistency of several properties was the caller's job to maintain. It was very easy for the developer +to create a CSS file that did not parse correctly when some types of values +were in use. + +```js +const selectorParser = require("postcss-selector-parser"); +let attr = selectorParser.attribute({attribute: "id", operator: "=", value: "a-value"}); +attr.value; // => "a-value" +attr.toString(); // => [id=a-value] +// Add quotes to an attribute's value. +// All these values have to be set by the caller to be consistent: +// no internal consistency is maintained. +attr.raws.unquoted = attr.value +attr.value = "'" + attr.value + "'"; +attr.value; // => "'a-value'" +attr.quoted = true; +attr.toString(); // => "[id='a-value']" +``` + +In `4.0` there is a convenient API for setting and mutating values +that may need escaping. Especially for attributes. + +```js +const selectorParser = require("postcss-selector-parser"); + +// The constructor requires you specify the exact escape sequence +let className = selectorParser.className({value: "illegal class name", raws: {value: "illegal\\ class\\ name"}}); +className.toString(); // => '.illegal\\ class\\ name' + +// So it's better to set the value as a property +className = selectorParser.className(); +// Most properties that deal with identifiers work like this +className.value = "escape for me"; +className.value; // => 'escape for me' +className.toString(); // => '.escape\\ for\\ me' + +// emoji and all non-ascii are escaped to ensure it works in every css file. +className.value = "😱🦄😍"; +className.value; // => '😱🦄😍' +className.toString(); // => '.\\1F631\\1F984\\1F60D' + +// you can control the escape sequence if you want, or do bad bad things +className.setPropertyAndEscape('value', 'xxxx', 'yyyy'); +className.value; // => "xxxx" +className.toString(); // => ".yyyy" + +// Pass a value directly through to the css output without escaping it. +className.setPropertyWithoutEscape('value', '$REPLACE_ME$'); +className.value; // => "$REPLACE_ME$" +className.toString(); // => ".$REPLACE_ME$" + +// The biggest changes are to the Attribute class +// passing quoteMark explicitly is required to avoid a deprecation warning. +let attr = selectorParser.attribute({attribute: "id", operator: "=", value: "a-value", quoteMark: null}); +attr.toString(); // => "[id=a-value]" +// Get the value with quotes on it and any necessary escapes. +// This is the same as reading attr.value in 3.x. +attr.getQuotedValue(); // => "a-value"; +attr.quoteMark; // => null + +// Add quotes to an attribute's value. +attr.quoteMark = "'"; // This is all that's required. +attr.toString(); // => "[id='a-value']" +attr.quoted; // => true +// The value is still the same, only the quotes have changed. +attr.value; // => a-value +attr.getQuotedValue(); // => "'a-value'"; + +// deprecated assignment, no warning because there's no escapes +attr.value = "new-value"; +// no quote mark is needed so it is removed +attr.getQuotedValue(); // => "new-value"; + +// deprecated assignment, +attr.value = "\"a 'single quoted' value\""; +// > (node:27859) DeprecationWarning: Assigning an attribute a value containing characters that might need to be escaped is deprecated. Call attribute.setValue() instead. +attr.getQuotedValue(); // => '"a \'single quoted\' value"'; +// quote mark inferred from first and last characters. +attr.quoteMark; // => '"' + +// setValue takes options to make manipulating the value simple. +attr.setValue('foo', {smart: true}); +// foo doesn't require any escapes or quotes. +attr.toString(); // => '[id=foo]' +attr.quoteMark; // => null + +// An explicit quote mark can be specified +attr.setValue('foo', {quoteMark: '"'}); +attr.toString(); // => '[id="foo"]' + +// preserves quote mark by default +attr.setValue('bar'); +attr.toString(); // => '[id="bar"]' +attr.quoteMark = null; +attr.toString(); // => '[id=bar]' + +// with no arguments, it preserves quote mark even when it's not a great idea +attr.setValue('a value \n that should be quoted'); +attr.toString(); // => '[id=a\\ value\\ \\A\\ that\\ should\\ be\\ quoted]' + +// smart preservation with a specified default +attr.setValue('a value \n that should be quoted', {smart: true, preferCurrentQuoteMark: true, quoteMark: "'"}); +// => "[id='a value \\A that should be quoted']" +attr.quoteMark = '"'; +// => '[id="a value \\A that should be quoted"]' + +// this keeps double quotes because it wants to quote the value and the existing value has double quotes. +attr.setValue('this should be quoted', {smart: true, preferCurrentQuoteMark: true, quoteMark: "'"}); +// => '[id="this should be quoted"]' + +// picks single quotes because the value has double quotes +attr.setValue('a "double quoted" value', {smart: true, preferCurrentQuoteMark: true, quoteMark: "'"}); +// => "[id='a "double quoted" value']" + +// setPropertyAndEscape lets you do anything you want. Even things that are a bad idea and illegal. +attr.setPropertyAndEscape('value', 'xxxx', 'the password is 42'); +attr.value; // => "xxxx" +attr.toString(); // => "[id=the password is 42]" + +// Pass a value directly through to the css output without escaping it. +attr.setPropertyWithoutEscape('value', '$REPLACEMENT$'); +attr.value; // => "$REPLACEMENT$" +attr.toString(); // => "[id=$REPLACEMENT$]" +``` + +# 3.1.2 + +* Fix: Removed dot-prop dependency since it's no longer written in es5. + +# 3.1.1 + +* Fix: typescript definitions weren't in the published package. + +# 3.1.0 + +* Fixed numerous bugs in attribute nodes relating to the handling of comments + and whitespace. There's significant changes to `attrNode.spaces` and `attrNode.raws` since the `3.0.0` release. +* Added `Attribute#offsetOf(part)` to get the offset location of + attribute parts like `"operator"` and `"value"`. This is most + often added to `Attribute#sourceIndex` for error reporting. + +# 3.0.0 + +## Breaking changes + +* Some tweaks to the tokenizer/attribute selector parsing mean that whitespace + locations might be slightly different to the 2.x code. +* Better attribute selector parsing with more validation; postcss-selector-parser + no longer uses regular expressions to parse attribute selectors. +* Added an async API (thanks to @jacobp100); the default `process` API is now + async, and the sync API is now accessed through `processSync` instead. +* `process()` and `processSync()` now return a string instead of the Processor + instance. +* Tweaks handling of Less interpolation (thanks to @jwilsson). +* Removes support for Node 0.12. + +## Other changes + +* `ast()` and `astSync()` methods have been added to the `Processor`. These + return the `Root` node of the selectors after processing them. +* `transform()` and `transformSync()` methods have been added to the + `Processor`. These return the value returned by the processor callback + after processing the selectors. +* Set the parent when inserting a node (thanks to @chriseppstein). +* Correctly adjust indices when using insertBefore/insertAfter (thanks to @tivac). +* Fixes handling of namespaces with qualified tag selectors. +* `process`, `ast` and `transform` (and their sync variants) now accept a + `postcss` rule node. When provided, better errors are generated and selector + processing is automatically set back to the rule selector (unless the `updateSelector` option is set to `false`.) +* Now more memory efficient when tokenizing selectors. + +### Upgrade hints + +The pattern of: + +`rule.selector = processor.process(rule.selector).result.toString();` + +is now: + +`processor.processSync(rule)` + +# 2.2.3 + +* Resolves an issue where the parser would not reduce multiple spaces between an + ampersand and another simple selector in lossy mode (thanks to @adam-26). + +# 2.2.2 + +* No longer hangs on an unescaped semicolon; instead the parser will throw + an exception for these cases. + +# 2.2.1 + +* Allows a consumer to specify whitespace tokens when creating a new Node + (thanks to @Semigradsky). + +# 2.2.0 + +* Added a new option to normalize whitespace when parsing the selector string + (thanks to @adam-26). + +# 2.1.1 + +* Better unquoted value handling within attribute selectors + (thanks to @evilebottnawi). + +# 2.1.0 + +* Added: Use string constants for all node types & expose them on the main + parser instance (thanks to @Aweary). + +# 2.0.0 + +This release contains the following breaking changes: + +* Renamed all `eachInside` iterators to `walk`. For example, `eachTag` is now + `walkTags`, and `eachInside` is now `walk`. +* Renamed `Node#removeSelf()` to `Node#remove()`. +* Renamed `Container#remove()` to `Container#removeChild()`. +* Renamed `Node#raw` to `Node#raws` (thanks to @davidtheclark). +* Now parses `&` as the *nesting* selector, rather than a *tag* selector. +* Fixes misinterpretation of Sass interpolation (e.g. `#{foo}`) as an + id selector (thanks to @davidtheclark). + +and; + +* Fixes parsing of attribute selectors with equals signs in them + (e.g. `[data-attr="foo=bar"]`) (thanks to @montmanu). +* Adds `quoted` and `raw.unquoted` properties to attribute nodes + (thanks to @davidtheclark). + +# 1.3.3 + +* Fixes an infinite loop on `)` and `]` tokens when they had no opening pairs. + Now postcss-selector-parser will throw when it encounters these lone tokens. + +# 1.3.2 + +* Now uses plain integers rather than `str.charCodeAt(0)` for compiled builds. + +# 1.3.1 + +* Update flatten to v1.x (thanks to @shinnn). + +# 1.3.0 + +* Adds a new node type, `String`, to fix a crash on selectors such as + `foo:bar("test")`. + +# 1.2.1 + +* Fixes a crash when the parser encountered a trailing combinator. + +# 1.2.0 + +* A more descriptive error is thrown when the parser expects to find a + pseudo-class/pseudo-element (thanks to @ashelley). +* Adds support for line/column locations for selector nodes, as well as a + `Node#sourceIndex` method (thanks to @davidtheclark). + +# 1.1.4 + +* Fixes a crash when a selector started with a `>` combinator. The module will + now no longer throw if a selector has a leading/trailing combinator node. + +# 1.1.3 + +* Fixes a crash on `@` tokens. + +# 1.1.2 + +* Fixes an infinite loop caused by using parentheses in a non-pseudo element + context. + +# 1.1.1 + +* Fixes a crash when a backslash ended a selector string. + +# 1.1.0 + +* Adds support for replacing multiple nodes at once with `replaceWith` + (thanks to @jonathantneal). +* Parser no longer throws on sequential IDs and trailing commas, to support + parsing of selector hacks. + +# 1.0.1 + +* Fixes using `insertAfter` and `insertBefore` during iteration. + +# 1.0.0 + +* Adds `clone` and `replaceWith` methods to nodes. +* Adds `insertBefore` and `insertAfter` to containers. +* Stabilises API. + +# 0.0.5 + +* Fixes crash on extra whitespace inside a pseudo selector's parentheses. +* Adds sort function to the container class. +* Enables the parser to pass its input through without transforming. +* Iteration-safe `each` and `eachInside`. + +# 0.0.4 + +* Tidy up redundant duplication. +* Fixes a bug where the parser would loop infinitely on universal selectors + inside pseudo selectors. +* Adds `length` getter and `eachInside`, `map`, `reduce` to the container class. +* When a selector has been removed from the tree, the root node will no longer + cast it to a string. +* Adds node type iterators to the container class (e.g. `eachComment`). +* Adds filter function to the container class. +* Adds split function to the container class. +* Create new node types by doing `parser.id(opts)` etc. +* Adds support for pseudo classes anywhere in the selector. + +# 0.0.3 + +* Adds `next` and `prev` to the node class. +* Adds `first` and `last` getters to the container class. +* Adds `every` and `some` iterators to the container class. +* Add `empty` alias for `removeAll`. +* Combinators are now types of node. +* Fixes the at method so that it is not an alias for `index`. +* Tidy up creation of new nodes in the parser. +* Refactors how namespaces are handled for consistency & less redundant code. +* Refactors AST to use `nodes` exclusively, and eliminates excessive nesting. +* Fixes nested pseudo parsing. +* Fixes whitespace parsing. + +# 0.0.2 + +* Adds support for namespace selectors. +* Adds support for selectors joined by escaped spaces - such as `.\31\ 0`. + +# 0.0.1 + +* Initial release. diff --git a/node_modules/postcss-selector-parser/LICENSE-MIT b/node_modules/postcss-selector-parser/LICENSE-MIT new file mode 100644 index 0000000000000000000000000000000000000000..fd0e863a614fbcfc11bcfd0836975d1f5bfeb191 --- /dev/null +++ b/node_modules/postcss-selector-parser/LICENSE-MIT @@ -0,0 +1,22 @@ +Copyright (c) Ben Briggs (http://beneb.info) + +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/postcss-selector-parser/README.md b/node_modules/postcss-selector-parser/README.md new file mode 100644 index 0000000000000000000000000000000000000000..18a01c5c89df6f34d31f37e24b67e1155aedcfe0 --- /dev/null +++ b/node_modules/postcss-selector-parser/README.md @@ -0,0 +1,49 @@ +# postcss-selector-parser [![Build Status](https://travis-ci.org/postcss/postcss-selector-parser.svg?branch=master)](https://travis-ci.org/postcss/postcss-selector-parser) + +> Selector parser with built in methods for working with selector strings. + +## Install + +With [npm](https://npmjs.com/package/postcss-selector-parser) do: + +``` +npm install postcss-selector-parser +``` + +## Quick Start + +```js +const parser = require('postcss-selector-parser'); +const transform = selectors => { + selectors.walk(selector => { + // do something with the selector + console.log(String(selector)) + }); +}; + +const transformed = parser(transform).processSync('h1, h2, h3'); +``` + +To normalize selector whitespace: + +```js +const parser = require('postcss-selector-parser'); +const normalized = parser().processSync('h1, h2, h3', {lossless: false}); +// -> h1,h2,h3 +``` + +Async support is provided through `parser.process` and will resolve a Promise +with the resulting selector string. + +## API + +Please see [API.md](API.md). + +## Credits + +* Huge thanks to Andrey Sitnik (@ai) for work on PostCSS which helped + accelerate this module's development. + +## License + +MIT diff --git a/node_modules/postcss-selector-parser/package.json b/node_modules/postcss-selector-parser/package.json new file mode 100644 index 0000000000000000000000000000000000000000..9655072779a29ed3621326a397dcebcffbf3ee1b --- /dev/null +++ b/node_modules/postcss-selector-parser/package.json @@ -0,0 +1,78 @@ +{ + "name": "postcss-selector-parser", + "version": "6.0.11", + "devDependencies": { + "@babel/cli": "^7.11.6", + "@babel/core": "^7.11.6", + "@babel/eslint-parser": "^7.11.5", + "@babel/eslint-plugin": "^7.11.5", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/preset-env": "^7.11.5", + "@babel/register": "^7.11.5", + "ava": "^3.12.1", + "babel-plugin-add-module-exports": "^1.0.4", + "coveralls": "^3.1.0", + "del-cli": "^3.0.1", + "eslint": "^7.9.0", + "eslint-plugin-import": "^2.22.0", + "glob": "^7.1.6", + "minimist": "^1.2.5", + "nyc": "^15.1.0", + "postcss": "^8.0.0", + "semver": "^7.3.2", + "typescript": "^4.0.3" + }, + "main": "dist/index.js", + "types": "postcss-selector-parser.d.ts", + "files": [ + "API.md", + "CHANGELOG.md", + "LICENSE-MIT", + "dist", + "postcss-selector-parser.d.ts", + "!**/__tests__" + ], + "scripts": { + "pretest": "eslint src && tsc --noEmit postcss-selector-parser.d.ts", + "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/", + "lintfix": "eslint --fix src", + "report": "nyc report --reporter=html", + "test": "nyc ava src/__tests__/*.js ", + "testone": "ava" + }, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "license": "MIT", + "engines": { + "node": ">=4" + }, + "homepage": "https://github.com/postcss/postcss-selector-parser", + "contributors": [ + { + "name": "Ben Briggs", + "email": "beneb.info@gmail.com", + "url": "http://beneb.info" + }, + { + "name": "Chris Eppstein", + "email": "chris@eppsteins.net", + "url": "http://twitter.com/chriseppstein" + } + ], + "repository": "postcss/postcss-selector-parser", + "ava": { + "require": [ + "@babel/register" + ], + "concurrency": 5, + "timeout": "25s" + }, + "nyc": { + "exclude": [ + "node_modules", + "**/__tests__" + ] + } +} diff --git a/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts b/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..89a2c5239edb16da63b71ca2cd1ac655c604c788 --- /dev/null +++ b/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts @@ -0,0 +1,555 @@ +// Type definitions for postcss-selector-parser 2.2.3 +// Definitions by: Chris Eppstein + +/*~ Note that ES6 modules cannot directly export callable functions. + *~ This file should be imported using the CommonJS-style: + *~ import x = require('someLibrary'); + *~ + *~ Refer to the documentation to understand common + *~ workarounds for this limitation of ES6 modules. + */ + +/*~ This declaration specifies that the function + *~ is the exported object from the file + */ +export = parser; + +// A type that's T but not U. +type Diff = T extends U ? never : T; + +// TODO: Conditional types in TS 1.8 will really clean this up. +declare function parser(): parser.Processor; +declare function parser(processor: parser.AsyncProcessor): parser.Processor; +declare function parser(processor: parser.AsyncProcessor): parser.Processor; +declare function parser(processor: parser.SyncProcessor): parser.Processor; +declare function parser(processor: parser.SyncProcessor): parser.Processor; +declare function parser(processor?: parser.SyncProcessor | parser.AsyncProcessor): parser.Processor; + +/*~ If you want to expose types from your module as well, you can + *~ place them in this block. Often you will want to describe the + *~ shape of the return type of the function; that type should + *~ be declared in here, as this example shows. + */ +declare namespace parser { + /* copied from postcss -- so we don't need to add a dependency */ + type ErrorOptions = { + plugin?: string; + word?: string; + index?: number + }; + /* the bits we use of postcss.Rule, copied from postcss -- so we don't need to add a dependency */ + type PostCSSRuleNode = { + selector: string + /** + * @returns postcss.CssSyntaxError but it's a complex object, caller + * should cast to it if they have a dependency on postcss. + */ + error(message: string, options?: ErrorOptions): Error; + }; + /** Accepts a string */ + type Selectors = string | PostCSSRuleNode + type ProcessorFn = (root: parser.Root) => ReturnType; + type SyncProcessor = ProcessorFn; + type AsyncProcessor = ProcessorFn>; + + const TAG: "tag"; + const STRING: "string"; + const SELECTOR: "selector"; + const ROOT: "root"; + const PSEUDO: "pseudo"; + const NESTING: "nesting"; + const ID: "id"; + const COMMENT: "comment"; + const COMBINATOR: "combinator"; + const CLASS: "class"; + const ATTRIBUTE: "attribute"; + const UNIVERSAL: "universal"; + + interface NodeTypes { + tag: Tag, + string: String, + selector: Selector, + root: Root, + pseudo: Pseudo, + nesting: Nesting, + id: Identifier, + comment: Comment, + combinator: Combinator, + class: ClassName, + attribute: Attribute, + universal: Universal + } + + type Node = NodeTypes[keyof NodeTypes]; + + function isNode(node: any): node is Node; + + interface Options { + /** + * Preserve whitespace when true. Default: false; + */ + lossless: boolean; + /** + * When true and a postcss.Rule is passed, set the result of + * processing back onto the rule when done. Default: false. + */ + updateSelector: boolean; + } + class Processor< + TransformType = never, + SyncSelectorsType extends Selectors | never = Selectors + > { + res: Root; + readonly result: String; + ast(selectors: Selectors, options?: Partial): Promise; + astSync(selectors: SyncSelectorsType, options?: Partial): Root; + transform(selectors: Selectors, options?: Partial): Promise; + transformSync(selectors: SyncSelectorsType, options?: Partial): TransformType; + process(selectors: Selectors, options?: Partial): Promise; + processSync(selectors: SyncSelectorsType, options?: Partial): string; + } + interface ParserOptions { + css: string; + error: (message: string, options: ErrorOptions) => Error; + options: Options; + } + class Parser { + input: ParserOptions; + lossy: boolean; + position: number; + root: Root; + selectors: string; + current: Selector; + constructor(input: ParserOptions); + /** + * Raises an error, if the processor is invoked on + * a postcss Rule node, a better error message is raised. + */ + error(message: string, options?: ErrorOptions): void; + } + interface NodeSource { + start?: { + line: number, + column: number + }, + end?: { + line: number, + column: number + } + } + interface SpaceAround { + before: string; + after: string; + } + interface Spaces extends SpaceAround { + [spaceType: string]: string | Partial | undefined; + } + interface NodeOptions { + value: Value; + spaces?: Partial; + source?: NodeSource; + sourceIndex?: number; + } + interface Base< + Value extends string | undefined = string, + ParentType extends Container | undefined = Container | undefined + > { + type: keyof NodeTypes; + parent: ParentType; + value: Value; + spaces: Spaces; + source?: NodeSource; + sourceIndex: number; + rawSpaceBefore: string; + rawSpaceAfter: string; + remove(): Node; + replaceWith(...nodes: Node[]): Node; + next(): Node; + prev(): Node; + clone(opts: {[override: string]:any}): Node; + /** + * Return whether this node includes the character at the position of the given line and column. + * Returns undefined if the nodes lack sufficient source metadata to determine the position. + * @param line 1-index based line number relative to the start of the selector. + * @param column 1-index based column number relative to the start of the selector. + */ + isAtPosition(line: number, column: number): boolean | undefined; + /** + * Some non-standard syntax doesn't follow normal escaping rules for css, + * this allows the escaped value to be specified directly, allowing illegal characters to be + * directly inserted into css output. + * @param name the property to set + * @param value the unescaped value of the property + * @param valueEscaped optional. the escaped value of the property. + */ + setPropertyAndEscape(name: string, value: any, valueEscaped: string): void; + /** + * When you want a value to passed through to CSS directly. This method + * deletes the corresponding raw value causing the stringifier to fallback + * to the unescaped value. + * @param name the property to set. + * @param value The value that is both escaped and unescaped. + */ + setPropertyWithoutEscape(name: string, value: any): void; + /** + * Some non-standard syntax doesn't follow normal escaping rules for css. + * This allows non standard syntax to be appended to an existing property + * by specifying the escaped value. By specifying the escaped value, + * illegal characters are allowed to be directly inserted into css output. + * @param {string} name the property to set + * @param {any} value the unescaped value of the property + * @param {string} valueEscaped optional. the escaped value of the property. + */ + appendToPropertyAndEscape(name: string, value: any, valueEscaped: string): void; + toString(): string; + } + interface ContainerOptions extends NodeOptions { + nodes?: Array; + } + interface Container< + Value extends string | undefined = string, + Child extends Node = Node + > extends Base { + nodes: Array; + append(selector: Selector): this; + prepend(selector: Selector): this; + at(index: number): Child; + /** + * Return the most specific node at the line and column number given. + * The source location is based on the original parsed location, locations aren't + * updated as selector nodes are mutated. + * + * Note that this location is relative to the location of the first character + * of the selector, and not the location of the selector in the overall document + * when used in conjunction with postcss. + * + * If not found, returns undefined. + * @param line The line number of the node to find. (1-based index) + * @param col The column number of the node to find. (1-based index) + */ + atPosition(line: number, column: number): Child; + index(child: Child): number; + readonly first: Child; + readonly last: Child; + readonly length: number; + removeChild(child: Child): this; + removeAll(): Container; + empty(): Container; + insertAfter(oldNode: Child, newNode: Child): this; + insertBefore(oldNode: Child, newNode: Child): this; + each(callback: (node: Child) => boolean | void): boolean | undefined; + walk( + callback: (node: Node) => boolean | void + ): boolean | undefined; + walkAttributes( + callback: (node: Attribute) => boolean | void + ): boolean | undefined; + walkClasses( + callback: (node: ClassName) => boolean | void + ): boolean | undefined; + walkCombinators( + callback: (node: Combinator) => boolean | void + ): boolean | undefined; + walkComments( + callback: (node: Comment) => boolean | void + ): boolean | undefined; + walkIds( + callback: (node: Identifier) => boolean | void + ): boolean | undefined; + walkNesting( + callback: (node: Nesting) => boolean | void + ): boolean | undefined; + walkPseudos( + callback: (node: Pseudo) => boolean | void + ): boolean | undefined; + walkTags(callback: (node: Tag) => boolean | void): boolean | undefined; + split(callback: (node: Child) => boolean): [Child[], Child[]]; + map(callback: (node: Child) => T): T[]; + reduce( + callback: ( + previousValue: Child, + currentValue: Child, + currentIndex: number, + array: readonly Child[] + ) => Child + ): Child; + reduce( + callback: ( + previousValue: Child, + currentValue: Child, + currentIndex: number, + array: readonly Child[] + ) => Child, + initialValue: Child + ): Child; + reduce( + callback: ( + previousValue: T, + currentValue: Child, + currentIndex: number, + array: readonly Child[] + ) => T, + initialValue: T + ): T; + every(callback: (node: Child) => boolean): boolean; + some(callback: (node: Child) => boolean): boolean; + filter(callback: (node: Child) => boolean): Child[]; + sort(callback: (nodeA: Child, nodeB: Child) => number): Child[]; + toString(): string; + } + function isContainer(node: any): node is Root | Selector | Pseudo; + + interface NamespaceOptions extends NodeOptions { + namespace?: string | true; + } + interface Namespace extends Base { + /** alias for namespace */ + ns: string | true; + /** + * namespace prefix. + */ + namespace: string | true; + /** + * If a namespace exists, prefix the value provided with it, separated by |. + */ + qualifiedName(value: string): string; + /** + * A string representing the namespace suitable for output. + */ + readonly namespaceString: string; + } + function isNamespace(node: any): node is Attribute | Tag; + + interface Root extends Container { + type: "root"; + /** + * Raises an error, if the processor is invoked on + * a postcss Rule node, a better error message is raised. + */ + error(message: string, options?: ErrorOptions): Error; + nodeAt(line: number, column: number): Node + } + function root(opts: ContainerOptions): Root; + function isRoot(node: any): node is Root; + + interface _Selector extends Container> { + type: "selector"; + } + type Selector = _Selector; + function selector(opts: ContainerOptions): Selector; + function isSelector(node: any): node is Selector; + + interface CombinatorRaws { + value?: string; + spaces?: { + before?: string; + after?: string; + }; + } + interface Combinator extends Base { + type: "combinator"; + raws?: CombinatorRaws; + } + function combinator(opts: NodeOptions): Combinator; + function isCombinator(node: any): node is Combinator; + + interface ClassName extends Base { + type: "class"; + } + function className(opts: NamespaceOptions): ClassName; + function isClassName(node: any): node is ClassName; + + type AttributeOperator = "=" | "~=" | "|=" | "^=" | "$=" | "*="; + type QuoteMark = '"' | "'" | null; + interface PreferredQuoteMarkOptions { + quoteMark?: QuoteMark; + preferCurrentQuoteMark?: boolean; + } + interface SmartQuoteMarkOptions extends PreferredQuoteMarkOptions { + smart?: boolean; + } + interface AttributeOptions extends NamespaceOptions { + attribute: string; + operator?: AttributeOperator; + insensitive?: boolean; + quoteMark?: QuoteMark; + /** @deprecated Use quoteMark instead. */ + quoted?: boolean; + spaces?: { + before?: string; + after?: string; + attribute?: Partial; + operator?: Partial; + value?: Partial; + insensitive?: Partial; + } + raws: { + unquoted?: string; + attribute?: string; + operator?: string; + value?: string; + insensitive?: string; + spaces?: { + attribute?: Partial; + operator?: Partial; + value?: Partial; + insensitive?: Partial; + } + }; + } + interface Attribute extends Namespace { + type: "attribute"; + attribute: string; + operator?: AttributeOperator; + insensitive?: boolean; + quoteMark: QuoteMark; + quoted?: boolean; + spaces: { + before: string; + after: string; + attribute?: Partial; + operator?: Partial; + value?: Partial; + insensitive?: Partial; + } + raws: { + /** @deprecated The attribute value is unquoted, use that instead.. */ + unquoted?: string; + attribute?: string; + operator?: string; + /** The value of the attribute with quotes and escapes. */ + value?: string; + insensitive?: string; + spaces?: { + attribute?: Partial; + operator?: Partial; + value?: Partial; + insensitive?: Partial; + } + }; + /** + * The attribute name after having been qualified with a namespace. + */ + readonly qualifiedAttribute: string; + + /** + * The case insensitivity flag or an empty string depending on whether this + * attribute is case insensitive. + */ + readonly insensitiveFlag : 'i' | ''; + + /** + * Returns the attribute's value quoted such that it would be legal to use + * in the value of a css file. The original value's quotation setting + * used for stringification is left unchanged. See `setValue(value, options)` + * if you want to control the quote settings of a new value for the attribute or + * `set quoteMark(mark)` if you want to change the quote settings of the current + * value. + * + * You can also change the quotation used for the current value by setting quoteMark. + **/ + getQuotedValue(options?: SmartQuoteMarkOptions): string; + + /** + * Set the unescaped value with the specified quotation options. The value + * provided must not include any wrapping quote marks -- those quotes will + * be interpreted as part of the value and escaped accordingly. + * @param value + */ + setValue(value: string, options?: SmartQuoteMarkOptions): void; + + /** + * Intelligently select a quoteMark value based on the value's contents. If + * the value is a legal CSS ident, it will not be quoted. Otherwise a quote + * mark will be picked that minimizes the number of escapes. + * + * If there's no clear winner, the quote mark from these options is used, + * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is + * true). If the quoteMark is unspecified, a double quote is used. + **/ + smartQuoteMark(options: PreferredQuoteMarkOptions): QuoteMark; + + /** + * Selects the preferred quote mark based on the options and the current quote mark value. + * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)` + * instead. + */ + preferredQuoteMark(options: PreferredQuoteMarkOptions): QuoteMark + + /** + * returns the offset of the attribute part specified relative to the + * start of the node of the output string. + * + * * "ns" - alias for "namespace" + * * "namespace" - the namespace if it exists. + * * "attribute" - the attribute name + * * "attributeNS" - the start of the attribute or its namespace + * * "operator" - the match operator of the attribute + * * "value" - The value (string or identifier) + * * "insensitive" - the case insensitivity flag; + * @param part One of the possible values inside an attribute. + * @returns -1 if the name is invalid or the value doesn't exist in this attribute. + */ + offsetOf(part: "ns" | "namespace" | "attribute" | "attributeNS" | "operator" | "value" | "insensitive"): number; + } + function attribute(opts: AttributeOptions): Attribute; + function isAttribute(node: any): node is Attribute; + + interface Pseudo extends Container { + type: "pseudo"; + } + function pseudo(opts: ContainerOptions): Pseudo; + /** + * Checks wether the node is the Psuedo subtype of node. + */ + function isPseudo(node: any): node is Pseudo; + + /** + * Checks wether the node is, specifically, a pseudo element instead of + * pseudo class. + */ + function isPseudoElement(node: any): node is Pseudo; + + /** + * Checks wether the node is, specifically, a pseudo class instead of + * pseudo element. + */ + function isPseudoClass(node: any): node is Pseudo; + + + interface Tag extends Namespace { + type: "tag"; + } + function tag(opts: NamespaceOptions): Tag; + function isTag(node: any): node is Tag; + + interface Comment extends Base { + type: "comment"; + } + function comment(opts: NodeOptions): Comment; + function isComment(node: any): node is Comment; + + interface Identifier extends Base { + type: "id"; + } + function id(opts: any): any; + function isIdentifier(node: any): node is Identifier; + + interface Nesting extends Base { + type: "nesting"; + } + function nesting(opts: any): any; + function isNesting(node: any): node is Nesting; + + interface String extends Base { + type: "string"; + } + function string(opts: NodeOptions): String; + function isString(node: any): node is String; + + interface Universal extends Base { + type: "universal"; + } + function universal(opts?: NamespaceOptions): any; + function isUniversal(node: any): node is Universal; +} diff --git a/node_modules/postcss-value-parser/LICENSE b/node_modules/postcss-value-parser/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..6dcaefcbed352293c21a2d67bc3cc57d0682076a --- /dev/null +++ b/node_modules/postcss-value-parser/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) Bogdan Chadkin + +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/postcss-value-parser/README.md b/node_modules/postcss-value-parser/README.md new file mode 100644 index 0000000000000000000000000000000000000000..3bd6a0d65d33c1a2313c16e1bfd2e3fe9c7cd887 --- /dev/null +++ b/node_modules/postcss-value-parser/README.md @@ -0,0 +1,263 @@ +# postcss-value-parser + +[![Travis CI](https://travis-ci.org/TrySound/postcss-value-parser.svg)](https://travis-ci.org/TrySound/postcss-value-parser) + +Transforms CSS declaration values and at-rule parameters into a tree of nodes, and provides a simple traversal API. + +## Usage + +```js +var valueParser = require('postcss-value-parser'); +var cssBackgroundValue = 'url(foo.png) no-repeat 40px 73%'; +var parsedValue = valueParser(cssBackgroundValue); +// parsedValue exposes an API described below, +// e.g. parsedValue.walk(..), parsedValue.toString(), etc. +``` + +For example, parsing the value `rgba(233, 45, 66, .5)` will return the following: + +```js +{ + nodes: [ + { + type: 'function', + value: 'rgba', + before: '', + after: '', + nodes: [ + { type: 'word', value: '233' }, + { type: 'div', value: ',', before: '', after: ' ' }, + { type: 'word', value: '45' }, + { type: 'div', value: ',', before: '', after: ' ' }, + { type: 'word', value: '66' }, + { type: 'div', value: ',', before: ' ', after: '' }, + { type: 'word', value: '.5' } + ] + } + ] +} +``` + +If you wanted to convert each `rgba()` value in `sourceCSS` to a hex value, you could do so like this: + +```js +var valueParser = require('postcss-value-parser'); + +var parsed = valueParser(sourceCSS); + +// walk() will visit all the of the nodes in the tree, +// invoking the callback for each. +parsed.walk(function (node) { + + // Since we only want to transform rgba() values, + // we can ignore anything else. + if (node.type !== 'function' && node.value !== 'rgba') return; + + // We can make an array of the rgba() arguments to feed to a + // convertToHex() function + var color = node.nodes.filter(function (node) { + return node.type === 'word'; + }).map(function (node) { + return Number(node.value); + }); // [233, 45, 66, .5] + + // Now we will transform the existing rgba() function node + // into a word node with the hex value + node.type = 'word'; + node.value = convertToHex(color); +}) + +parsed.toString(); // #E92D42 +``` + +## Nodes + +Each node is an object with these common properties: + +- **type**: The type of node (`word`, `string`, `div`, `space`, `comment`, or `function`). + Each type is documented below. +- **value**: Each node has a `value` property; but what exactly `value` means + is specific to the node type. Details are documented for each type below. +- **sourceIndex**: The starting index of the node within the original source + string. For example, given the source string `10px 20px`, the `word` node + whose value is `20px` will have a `sourceIndex` of `5`. + +### word + +The catch-all node type that includes keywords (e.g. `no-repeat`), +quantities (e.g. `20px`, `75%`, `1.5`), and hex colors (e.g. `#e6e6e6`). + +Node-specific properties: + +- **value**: The "word" itself. + +### string + +A quoted string value, e.g. `"something"` in `content: "something";`. + +Node-specific properties: + +- **value**: The text content of the string. +- **quote**: The quotation mark surrounding the string, either `"` or `'`. +- **unclosed**: `true` if the string was not closed properly. e.g. `"unclosed string `. + +### div + +A divider, for example + +- `,` in `animation-duration: 1s, 2s, 3s` +- `/` in `border-radius: 10px / 23px` +- `:` in `(min-width: 700px)` + +Node-specific properties: + +- **value**: The divider character. Either `,`, `/`, or `:` (see examples above). +- **before**: Whitespace before the divider. +- **after**: Whitespace after the divider. + +### space + +Whitespace used as a separator, e.g. ` ` occurring twice in `border: 1px solid black;`. + +Node-specific properties: + +- **value**: The whitespace itself. + +### comment + +A CSS comment starts with `/*` and ends with `*/` + +Node-specific properties: + +- **value**: The comment value without `/*` and `*/` +- **unclosed**: `true` if the comment was not closed properly. e.g. `/* comment without an end `. + +### function + +A CSS function, e.g. `rgb(0,0,0)` or `url(foo.bar)`. + +Function nodes have nodes nested within them: the function arguments. + +Additional properties: + +- **value**: The name of the function, e.g. `rgb` in `rgb(0,0,0)`. +- **before**: Whitespace after the opening parenthesis and before the first argument, + e.g. ` ` in `rgb( 0,0,0)`. +- **after**: Whitespace before the closing parenthesis and after the last argument, + e.g. ` ` in `rgb(0,0,0 )`. +- **nodes**: More nodes representing the arguments to the function. +- **unclosed**: `true` if the parentheses was not closed properly. e.g. `( unclosed-function `. + +Media features surrounded by parentheses are considered functions with an +empty value. For example, `(min-width: 700px)` parses to these nodes: + +```js +[ + { + type: 'function', value: '', before: '', after: '', + nodes: [ + { type: 'word', value: 'min-width' }, + { type: 'div', value: ':', before: '', after: ' ' }, + { type: 'word', value: '700px' } + ] + } +] +``` + +`url()` functions can be parsed a little bit differently depending on +whether the first character in the argument is a quotation mark. + +`url( /gfx/img/bg.jpg )` parses to: + +```js +{ type: 'function', sourceIndex: 0, value: 'url', before: ' ', after: ' ', nodes: [ + { type: 'word', sourceIndex: 5, value: '/gfx/img/bg.jpg' } +] } +``` + +`url( "/gfx/img/bg.jpg" )`, on the other hand, parses to: + +```js +{ type: 'function', sourceIndex: 0, value: 'url', before: ' ', after: ' ', nodes: [ + type: 'string', sourceIndex: 5, quote: '"', value: '/gfx/img/bg.jpg' }, +] } +``` + +### unicode-range + +The unicode-range CSS descriptor sets the specific range of characters to be +used from a font defined by @font-face and made available +for use on the current page (`unicode-range: U+0025-00FF`). + +Node-specific properties: + +- **value**: The "unicode-range" itself. + +## API + +``` +var valueParser = require('postcss-value-parser'); +``` + +### valueParser.unit(quantity) + +Parses `quantity`, distinguishing the number from the unit. Returns an object like the following: + +```js +// Given 2rem +{ + number: '2', + unit: 'rem' +} +``` + +If the `quantity` argument cannot be parsed as a number, returns `false`. + +*This function does not parse complete values*: you cannot pass it `1px solid black` and expect `px` as +the unit. Instead, you should pass it single quantities only. Parse `1px solid black`, then pass it +the stringified `1px` node (a `word` node) to parse the number and unit. + +### valueParser.stringify(nodes[, custom]) + +Stringifies a node or array of nodes. + +The `custom` function is called for each `node`; return a string to override the default behaviour. + +### valueParser.walk(nodes, callback[, bubble]) + +Walks each provided node, recursively walking all descendent nodes within functions. + +Returning `false` in the `callback` will prevent traversal of descendent nodes (within functions). +You can use this feature to for shallow iteration, walking over only the *immediate* children. +*Note: This only applies if `bubble` is `false` (which is the default).* + +By default, the tree is walked from the outermost node inwards. +To reverse the direction, pass `true` for the `bubble` argument. + +The `callback` is invoked with three arguments: `callback(node, index, nodes)`. + +- `node`: The current node. +- `index`: The index of the current node. +- `nodes`: The complete nodes array passed to `walk()`. + +Returns the `valueParser` instance. + +### var parsed = valueParser(value) + +Returns the parsed node tree. + +### parsed.nodes + +The array of nodes. + +### parsed.toString() + +Stringifies the node tree. + +### parsed.walk(callback[, bubble]) + +Walks each node inside `parsed.nodes`. See the documentation for `valueParser.walk()` above. + +# License + +MIT © [Bogdan Chadkin](mailto:trysound@yandex.ru) diff --git a/node_modules/postcss-value-parser/package.json b/node_modules/postcss-value-parser/package.json new file mode 100644 index 0000000000000000000000000000000000000000..02d744a6508d2f5f0bbaab32f6eb30ece4ca55b1 --- /dev/null +++ b/node_modules/postcss-value-parser/package.json @@ -0,0 +1,58 @@ +{ + "name": "postcss-value-parser", + "version": "4.2.0", + "description": "Transforms css values and at-rule params into the tree", + "main": "lib/index.js", + "files": [ + "lib" + ], + "devDependencies": { + "eslint": "^5.16.0", + "husky": "^2.3.0", + "lint-staged": "^8.1.7", + "prettier": "^1.17.1", + "tap-spec": "^5.0.0", + "tape": "^4.10.2" + }, + "scripts": { + "lint:prettier": "prettier \"**/*.js\" \"**/*.ts\" --list-different", + "lint:js": "eslint . --cache", + "lint": "yarn lint:js && yarn lint:prettier", + "pretest": "yarn lint", + "test": "tape test/*.js | tap-spec" + }, + "eslintConfig": { + "env": { + "es6": true, + "node": true + }, + "extends": "eslint:recommended" + }, + "lint-staged": { + "*.js": [ + "eslint", + "prettier --write", + "git add" + ] + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "author": "Bogdan Chadkin ", + "license": "MIT", + "homepage": "https://github.com/TrySound/postcss-value-parser", + "repository": { + "type": "git", + "url": "https://github.com/TrySound/postcss-value-parser.git" + }, + "keywords": [ + "postcss", + "value", + "parser" + ], + "bugs": { + "url": "https://github.com/TrySound/postcss-value-parser/issues" + } +} diff --git a/node_modules/postcss/LICENSE b/node_modules/postcss/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..da057b4562a8b8fcd8ef3898f795cd08aa412ab4 --- /dev/null +++ b/node_modules/postcss/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/postcss/README.md b/node_modules/postcss/README.md new file mode 100644 index 0000000000000000000000000000000000000000..09dd856ce116084c9a3bcbc5b49ebb522a0c3bce --- /dev/null +++ b/node_modules/postcss/README.md @@ -0,0 +1,44 @@ +# PostCSS [![Gitter][chat-img]][chat] + +Philosopher’s stone, logo of PostCSS + +[chat-img]: https://img.shields.io/badge/Gitter-Join_the_PostCSS_chat-brightgreen.svg +[chat]: https://gitter.im/postcss/postcss + +PostCSS is a tool for transforming styles with JS plugins. +These plugins can lint your CSS, support variables and mixins, +transpile future CSS syntax, inline images, and more. + +PostCSS is used by industry leaders including Wikipedia, Twitter, Alibaba, +and JetBrains. The [Autoprefixer] PostCSS plugin is one of the most popular +CSS processors. + +PostCSS takes a CSS file and provides an API to analyze and modify its rules +(by transforming them into an [Abstract Syntax Tree]). +This API can then be used by [plugins] to do a lot of useful things, +e.g., to find errors automatically, or to insert vendor prefixes. + +**Support / Discussion:** [Gitter](https://gitter.im/postcss/postcss)
+**Twitter account:** [@postcss](https://twitter.com/postcss)
+**VK.com page:** [postcss](https://vk.com/postcss)
+**中文翻译**: [`docs/README-cn.md`](./docs/README-cn.md) + +For PostCSS commercial support (consulting, improving the front-end culture +of your company, PostCSS plugins), contact [Evil Martians] +at . + +[Abstract Syntax Tree]: https://en.wikipedia.org/wiki/Abstract_syntax_tree +[Evil Martians]: https://evilmartians.com/?utm_source=postcss +[Autoprefixer]: https://github.com/postcss/autoprefixer +[plugins]: https://github.com/postcss/postcss#plugins + + + Sponsored by Evil Martians + + + +## Docs +Read full docs **[here](https://postcss.org/)**. diff --git a/node_modules/postcss/package.json b/node_modules/postcss/package.json new file mode 100755 index 0000000000000000000000000000000000000000..571b15345c7d531ba5f2f2be6bdf3945f036d000 --- /dev/null +++ b/node_modules/postcss/package.json @@ -0,0 +1,88 @@ +{ + "name": "postcss", + "version": "8.4.23", + "description": "Tool for transforming styles with JS plugins", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "exports": { + ".": { + "require": "./lib/postcss.js", + "import": "./lib/postcss.mjs" + }, + "./lib/at-rule": "./lib/at-rule.js", + "./lib/comment": "./lib/comment.js", + "./lib/container": "./lib/container.js", + "./lib/css-syntax-error": "./lib/css-syntax-error.js", + "./lib/declaration": "./lib/declaration.js", + "./lib/fromJSON": "./lib/fromJSON.js", + "./lib/input": "./lib/input.js", + "./lib/lazy-result": "./lib/lazy-result.js", + "./lib/no-work-result": "./lib/no-work-result.js", + "./lib/list": "./lib/list.js", + "./lib/map-generator": "./lib/map-generator.js", + "./lib/node": "./lib/node.js", + "./lib/parse": "./lib/parse.js", + "./lib/parser": "./lib/parser.js", + "./lib/postcss": "./lib/postcss.js", + "./lib/previous-map": "./lib/previous-map.js", + "./lib/processor": "./lib/processor.js", + "./lib/result": "./lib/result.js", + "./lib/root": "./lib/root.js", + "./lib/rule": "./lib/rule.js", + "./lib/stringifier": "./lib/stringifier.js", + "./lib/stringify": "./lib/stringify.js", + "./lib/symbols": "./lib/symbols.js", + "./lib/terminal-highlight": "./lib/terminal-highlight.js", + "./lib/tokenize": "./lib/tokenize.js", + "./lib/warn-once": "./lib/warn-once.js", + "./lib/warning": "./lib/warning.js", + "./package.json": "./package.json" + }, + "main": "./lib/postcss.js", + "types": "./lib/postcss.d.ts", + "keywords": [ + "css", + "postcss", + "rework", + "preprocessor", + "parser", + "source map", + "transform", + "manipulation", + "transpiler" + ], + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "homepage": "https://postcss.org/", + "repository": "postcss/postcss", + "bugs": { + "url": "https://github.com/postcss/postcss/issues" + }, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "browser": { + "./lib/terminal-highlight": false, + "source-map-js": false, + "path": false, + "url": false, + "fs": false + } +} diff --git a/node_modules/queue-microtask/LICENSE b/node_modules/queue-microtask/LICENSE new file mode 100755 index 0000000000000000000000000000000000000000..c7e6852752b72edbf0eb6b2adef53f0863ae5876 --- /dev/null +++ b/node_modules/queue-microtask/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +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/queue-microtask/README.md b/node_modules/queue-microtask/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0be05a64f5aa1448ecf379ae25625c2ca573e912 --- /dev/null +++ b/node_modules/queue-microtask/README.md @@ -0,0 +1,90 @@ +# queue-microtask [![ci][ci-image]][ci-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] + +[ci-image]: https://img.shields.io/github/workflow/status/feross/queue-microtask/ci/master +[ci-url]: https://github.com/feross/queue-microtask/actions +[npm-image]: https://img.shields.io/npm/v/queue-microtask.svg +[npm-url]: https://npmjs.org/package/queue-microtask +[downloads-image]: https://img.shields.io/npm/dm/queue-microtask.svg +[downloads-url]: https://npmjs.org/package/queue-microtask +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com + +### fast, tiny [`queueMicrotask`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask) shim for modern engines + +- Use [`queueMicrotask`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask) in all modern JS engines. +- No dependencies. Less than 10 lines. No shims or complicated fallbacks. +- Optimal performance in all modern environments + - Uses `queueMicrotask` in modern environments + - Fallback to `Promise.resolve().then(fn)` in Node.js 10 and earlier, and old browsers (same performance as `queueMicrotask`) + +## install + +``` +npm install queue-microtask +``` + +## usage + +```js +const queueMicrotask = require('queue-microtask') + +queueMicrotask(() => { /* this will run soon */ }) +``` + +## What is `queueMicrotask` and why would one use it? + +The `queueMicrotask` function is a WHATWG standard. It queues a microtask to be executed prior to control returning to the event loop. + +A microtask is a short function which will run after the current task has completed its work and when there is no other code waiting to be run before control of the execution context is returned to the event loop. + +The code `queueMicrotask(fn)` is equivalent to the code `Promise.resolve().then(fn)`. It is also very similar to [`process.nextTick(fn)`](https://nodejs.org/api/process.html#process_process_nexttick_callback_args) in Node. + +Using microtasks lets code run without interfering with any other, potentially higher priority, code that is pending, but before the JS engine regains control over the execution context. + +See the [spec](https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#microtask-queuing) or [Node documentation](https://nodejs.org/api/globals.html#globals_queuemicrotask_callback) for more information. + +## Who is this package for? + +This package allows you to use `queueMicrotask` safely in all modern JS engines. Use it if you prioritize small JS bundle size over support for old browsers. + +If you just need to support Node 12 and later, use `queueMicrotask` directly. If you need to support all versions of Node, use this package. + +## Why not use `process.nextTick`? + +In Node, `queueMicrotask` and `process.nextTick` are [essentially equivalent](https://nodejs.org/api/globals.html#globals_queuemicrotask_callback), though there are [subtle differences](https://github.com/YuzuJS/setImmediate#macrotasks-and-microtasks) that don't matter in most situations. + +You can think of `queueMicrotask` as a standardized version of `process.nextTick` that works in the browser. No need to rely on your browser bundler to shim `process` for the browser environment. + +## Why not use `setTimeout(fn, 0)`? + +This approach is the most compatible, but it has problems. Modern browsers throttle timers severely, so `setTimeout(…, 0)` usually takes at least 4ms to run. Furthermore, the throttling gets even worse if the page is backgrounded. If you have many `setTimeout` calls, then this can severely limit the performance of your program. + +## Why not use a microtask library like [`immediate`](https://www.npmjs.com/package/immediate) or [`asap`](https://www.npmjs.com/package/asap)? + +These packages are great! However, if you prioritize small JS bundle size over optimal performance in old browsers then you may want to consider this package. + +This package (`queue-microtask`) is four times smaller than `immediate`, twice as small as `asap`, and twice as small as using `process.nextTick` and letting the browser bundler shim it automatically. + +Note: This package throws an exception in JS environments which lack `Promise` support -- which are usually very old browsers and Node.js versions. + +Since the `queueMicrotask` API is supported in Node.js, Chrome, Firefox, Safari, Opera, and Edge, **the vast majority of users will get optimal performance**. Any JS environment with `Promise`, which is almost all of them, also get optimal performance. If you need support for JS environments which lack `Promise` support, use one of the alternative packages. + +## What is a shim? + +> In computer programming, a shim is a library that transparently intercepts API calls and changes the arguments passed, handles the operation itself or redirects the operation elsewhere. – [Wikipedia](https://en.wikipedia.org/wiki/Shim_(computing)) + +This package could also be described as a "ponyfill". + +> A ponyfill is almost the same as a polyfill, but not quite. Instead of patching functionality for older browsers, a ponyfill provides that functionality as a standalone module you can use. – [PonyFoo](https://ponyfoo.com/articles/polyfills-or-ponyfills) + +## API + +### `queueMicrotask(fn)` + +The `queueMicrotask()` method queues a microtask. + +The `fn` argument is a function to be executed after all pending tasks have completed but before yielding control to the browser's event loop. + +## license + +MIT. Copyright (c) [Feross Aboukhadijeh](https://feross.org). diff --git a/node_modules/queue-microtask/index.d.ts b/node_modules/queue-microtask/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b6a864632282d84d7a87c19488604e0c753588e7 --- /dev/null +++ b/node_modules/queue-microtask/index.d.ts @@ -0,0 +1,2 @@ +declare const queueMicrotask: (cb: () => void) => void +export = queueMicrotask diff --git a/node_modules/queue-microtask/index.js b/node_modules/queue-microtask/index.js new file mode 100644 index 0000000000000000000000000000000000000000..55605343a2defd5f8567f0b564d32e22e2e7556f --- /dev/null +++ b/node_modules/queue-microtask/index.js @@ -0,0 +1,9 @@ +/*! queue-microtask. MIT License. Feross Aboukhadijeh */ +let promise + +module.exports = typeof queueMicrotask === 'function' + ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global) + // reuse resolved promise, and allocate it lazily + : cb => (promise || (promise = Promise.resolve())) + .then(cb) + .catch(err => setTimeout(() => { throw err }, 0)) diff --git a/node_modules/queue-microtask/package.json b/node_modules/queue-microtask/package.json new file mode 100644 index 0000000000000000000000000000000000000000..d29a401f5178a60ac1ccd1ef6227d09df3cbef59 --- /dev/null +++ b/node_modules/queue-microtask/package.json @@ -0,0 +1,55 @@ +{ + "name": "queue-microtask", + "description": "fast, tiny `queueMicrotask` shim for modern engines", + "version": "1.2.3", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "https://feross.org" + }, + "bugs": { + "url": "https://github.com/feross/queue-microtask/issues" + }, + "devDependencies": { + "standard": "*", + "tape": "^5.2.2" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "homepage": "https://github.com/feross/queue-microtask", + "keywords": [ + "asap", + "immediate", + "micro task", + "microtask", + "nextTick", + "process.nextTick", + "queue micro task", + "queue microtask", + "queue-microtask", + "queueMicrotask", + "setImmediate", + "task" + ], + "license": "MIT", + "main": "index.js", + "repository": { + "type": "git", + "url": "git://github.com/feross/queue-microtask.git" + }, + "scripts": { + "test": "standard && tape test/*.js" + } +} diff --git a/node_modules/quick-lru/index.d.ts b/node_modules/quick-lru/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..fa58889b4248e5abedfb26cce7716398a5722e78 --- /dev/null +++ b/node_modules/quick-lru/index.d.ts @@ -0,0 +1,97 @@ +declare namespace QuickLRU { + interface Options { + /** + The maximum number of items before evicting the least recently used items. + */ + readonly maxSize: number; + + /** + Called right before an item is evicted from the cache. + + Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`). + */ + onEviction?: (key: KeyType, value: ValueType) => void; + } +} + +declare class QuickLRU + implements Iterable<[KeyType, ValueType]> { + /** + The stored item count. + */ + readonly size: number; + + /** + Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29). + + The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop. + + @example + ``` + import QuickLRU = require('quick-lru'); + + const lru = new QuickLRU({maxSize: 1000}); + + lru.set('🦄', '🌈'); + + lru.has('🦄'); + //=> true + + lru.get('🦄'); + //=> '🌈' + ``` + */ + constructor(options: QuickLRU.Options); + + [Symbol.iterator](): IterableIterator<[KeyType, ValueType]>; + + /** + Set an item. + + @returns The list instance. + */ + set(key: KeyType, value: ValueType): this; + + /** + Get an item. + + @returns The stored item or `undefined`. + */ + get(key: KeyType): ValueType | undefined; + + /** + Check if an item exists. + */ + has(key: KeyType): boolean; + + /** + Get an item without marking it as recently used. + + @returns The stored item or `undefined`. + */ + peek(key: KeyType): ValueType | undefined; + + /** + Delete an item. + + @returns `true` if the item is removed or `false` if the item doesn't exist. + */ + delete(key: KeyType): boolean; + + /** + Delete all items. + */ + clear(): void; + + /** + Iterable for all the keys. + */ + keys(): IterableIterator; + + /** + Iterable for all the values. + */ + values(): IterableIterator; +} + +export = QuickLRU; diff --git a/node_modules/quick-lru/index.js b/node_modules/quick-lru/index.js new file mode 100644 index 0000000000000000000000000000000000000000..7d7032e6ad8e65f04d50685eb981e16eccbaa3ce --- /dev/null +++ b/node_modules/quick-lru/index.js @@ -0,0 +1,123 @@ +'use strict'; + +class QuickLRU { + constructor(options = {}) { + if (!(options.maxSize && options.maxSize > 0)) { + throw new TypeError('`maxSize` must be a number greater than 0'); + } + + this.maxSize = options.maxSize; + this.onEviction = options.onEviction; + this.cache = new Map(); + this.oldCache = new Map(); + this._size = 0; + } + + _set(key, value) { + this.cache.set(key, value); + this._size++; + + if (this._size >= this.maxSize) { + this._size = 0; + + if (typeof this.onEviction === 'function') { + for (const [key, value] of this.oldCache.entries()) { + this.onEviction(key, value); + } + } + + this.oldCache = this.cache; + this.cache = new Map(); + } + } + + get(key) { + if (this.cache.has(key)) { + return this.cache.get(key); + } + + if (this.oldCache.has(key)) { + const value = this.oldCache.get(key); + this.oldCache.delete(key); + this._set(key, value); + return value; + } + } + + set(key, value) { + if (this.cache.has(key)) { + this.cache.set(key, value); + } else { + this._set(key, value); + } + + return this; + } + + has(key) { + return this.cache.has(key) || this.oldCache.has(key); + } + + peek(key) { + if (this.cache.has(key)) { + return this.cache.get(key); + } + + if (this.oldCache.has(key)) { + return this.oldCache.get(key); + } + } + + delete(key) { + const deleted = this.cache.delete(key); + if (deleted) { + this._size--; + } + + return this.oldCache.delete(key) || deleted; + } + + clear() { + this.cache.clear(); + this.oldCache.clear(); + this._size = 0; + } + + * keys() { + for (const [key] of this) { + yield key; + } + } + + * values() { + for (const [, value] of this) { + yield value; + } + } + + * [Symbol.iterator]() { + for (const item of this.cache) { + yield item; + } + + for (const item of this.oldCache) { + const [key] = item; + if (!this.cache.has(key)) { + yield item; + } + } + } + + get size() { + let oldCacheSize = 0; + for (const key of this.oldCache.keys()) { + if (!this.cache.has(key)) { + oldCacheSize++; + } + } + + return Math.min(this._size + oldCacheSize, this.maxSize); + } +} + +module.exports = QuickLRU; diff --git a/node_modules/quick-lru/license b/node_modules/quick-lru/license new file mode 100644 index 0000000000000000000000000000000000000000..e7af2f77107d73046421ef56c4684cbfdd3c1e89 --- /dev/null +++ b/node_modules/quick-lru/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/quick-lru/package.json b/node_modules/quick-lru/package.json new file mode 100644 index 0000000000000000000000000000000000000000..ff0dd9a14e5d0c8ec3501cdf412dfac47512633b --- /dev/null +++ b/node_modules/quick-lru/package.json @@ -0,0 +1,43 @@ +{ + "name": "quick-lru", + "version": "5.1.1", + "description": "Simple “Least Recently Used” (LRU) cache", + "license": "MIT", + "repository": "sindresorhus/quick-lru", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && nyc ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "lru", + "quick", + "cache", + "caching", + "least", + "recently", + "used", + "fast", + "map", + "hash", + "buffer" + ], + "devDependencies": { + "ava": "^2.0.0", + "coveralls": "^3.0.3", + "nyc": "^15.0.0", + "tsd": "^0.11.0", + "xo": "^0.26.0" + } +} diff --git a/node_modules/quick-lru/readme.md b/node_modules/quick-lru/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..234294a095d3871be5ab010cfd2438ea9d88c084 --- /dev/null +++ b/node_modules/quick-lru/readme.md @@ -0,0 +1,111 @@ +# quick-lru [![Build Status](https://travis-ci.org/sindresorhus/quick-lru.svg?branch=master)](https://travis-ci.org/sindresorhus/quick-lru) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/quick-lru/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/quick-lru?branch=master) + +> Simple [“Least Recently Used” (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29) + +Useful when you need to cache something and limit memory usage. + +Inspired by the [`hashlru` algorithm](https://github.com/dominictarr/hashlru#algorithm), but instead uses [`Map`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map) to support keys of any type, not just strings, and values can be `undefined`. + +## Install + +``` +$ npm install quick-lru +``` + +## Usage + +```js +const QuickLRU = require('quick-lru'); + +const lru = new QuickLRU({maxSize: 1000}); + +lru.set('🦄', '🌈'); + +lru.has('🦄'); +//=> true + +lru.get('🦄'); +//=> '🌈' +``` + +## API + +### new QuickLRU(options?) + +Returns a new instance. + +### options + +Type: `object` + +#### maxSize + +*Required*\ +Type: `number` + +The maximum number of items before evicting the least recently used items. + +#### onEviction + +*Optional*\ +Type: `(key, value) => void` + +Called right before an item is evicted from the cache. + +Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`). + +### Instance + +The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop. + +Both `key` and `value` can be of any type. + +#### .set(key, value) + +Set an item. Returns the instance. + +#### .get(key) + +Get an item. + +#### .has(key) + +Check if an item exists. + +#### .peek(key) + +Get an item without marking it as recently used. + +#### .delete(key) + +Delete an item. + +Returns `true` if the item is removed or `false` if the item doesn't exist. + +#### .clear() + +Delete all items. + +#### .keys() + +Iterable for all the keys. + +#### .values() + +Iterable for all the values. + +#### .size + +The stored item count. + +--- + +
+ + 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/read-cache/LICENSE b/node_modules/read-cache/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..4b98a41f03657afe1570268310cce97a46eb5b0d --- /dev/null +++ b/node_modules/read-cache/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2016 Bogdan Chadkin + +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/read-cache/README.md b/node_modules/read-cache/README.md new file mode 100644 index 0000000000000000000000000000000000000000..16a5c36e96a8f2100b1c3bf78f55507cf35784f8 --- /dev/null +++ b/node_modules/read-cache/README.md @@ -0,0 +1,46 @@ +# read-cache [![Build Status](https://travis-ci.org/TrySound/read-cache.svg?branch=master)](https://travis-ci.org/TrySound/read-cache) + +Reads and caches the entire contents of a file until it is modified. + + +## Install + +``` +$ npm i read-cache +``` + + +## Usage + +```js +// foo.js +var readCache = require('read-cache'); + +readCache('foo.js').then(function (contents) { + console.log(contents); +}); +``` + + +## API + +### readCache(path[, encoding]) + +Returns a promise that resolves with the file's contents. + +### readCache.sync(path[, encoding]) + +Returns the content of the file. + +### readCache.get(path[, encoding]) + +Returns the content of cached file or null. + +### readCache.clear() + +Clears the contents of the cache. + + +## License + +MIT © [Bogdan Chadkin](mailto:trysound@yandex.ru) diff --git a/node_modules/read-cache/index.js b/node_modules/read-cache/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b5263e68e8469b15a8845bfcd37b8b16c1f8daaf --- /dev/null +++ b/node_modules/read-cache/index.js @@ -0,0 +1,78 @@ +var fs = require('fs'); +var path = require('path'); +var pify = require('pify'); + +var stat = pify(fs.stat); +var readFile = pify(fs.readFile); +var resolve = path.resolve; + +var cache = Object.create(null); + +function convert(content, encoding) { + if (Buffer.isEncoding(encoding)) { + return content.toString(encoding); + } + return content; +} + +module.exports = function (path, encoding) { + path = resolve(path); + + return stat(path).then(function (stats) { + var item = cache[path]; + + if (item && item.mtime.getTime() === stats.mtime.getTime()) { + return convert(item.content, encoding); + } + + return readFile(path).then(function (data) { + cache[path] = { + mtime: stats.mtime, + content: data + }; + + return convert(data, encoding); + }); + }).catch(function (err) { + cache[path] = null; + return Promise.reject(err); + }); +}; + +module.exports.sync = function (path, encoding) { + path = resolve(path); + + try { + var stats = fs.statSync(path); + var item = cache[path]; + + if (item && item.mtime.getTime() === stats.mtime.getTime()) { + return convert(item.content, encoding); + } + + var data = fs.readFileSync(path); + + cache[path] = { + mtime: stats.mtime, + content: data + }; + + return convert(data, encoding); + } catch (err) { + cache[path] = null; + throw err; + } + +}; + +module.exports.get = function (path, encoding) { + path = resolve(path); + if (cache[path]) { + return convert(cache[path].content, encoding); + } + return null; +}; + +module.exports.clear = function () { + cache = Object.create(null); +}; diff --git a/node_modules/read-cache/package.json b/node_modules/read-cache/package.json new file mode 100644 index 0000000000000000000000000000000000000000..87199b0e0027411600f53028f186d446958cfe29 --- /dev/null +++ b/node_modules/read-cache/package.json @@ -0,0 +1,34 @@ +{ + "name": "read-cache", + "version": "1.0.0", + "description": "Reads and caches the entire contents of a file until it is modified", + "files": [ + "index.js" + ], + "main": "index.js", + "scripts": { + "test": "ava" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/TrySound/read-cache.git" + }, + "keywords": [ + "fs", + "read", + "cache" + ], + "author": "Bogdan Chadkin ", + "license": "MIT", + "bugs": { + "url": "https://github.com/TrySound/read-cache/issues" + }, + "homepage": "https://github.com/TrySound/read-cache#readme", + "devDependencies": { + "ava": "^0.9.1", + "del": "^2.2.0" + }, + "dependencies": { + "pify": "^2.3.0" + } +} diff --git a/node_modules/readdirp/LICENSE b/node_modules/readdirp/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..037cbb4e6952c1b92a9f76af95c7ce1da0ac7479 --- /dev/null +++ b/node_modules/readdirp/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012-2019 Thorsten Lorenz, 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/readdirp/README.md b/node_modules/readdirp/README.md new file mode 100644 index 0000000000000000000000000000000000000000..465593c9d44500e5713917325925b3fb76023888 --- /dev/null +++ b/node_modules/readdirp/README.md @@ -0,0 +1,122 @@ +# readdirp [![Weekly downloads](https://img.shields.io/npm/dw/readdirp.svg)](https://github.com/paulmillr/readdirp) + +Recursive version of [fs.readdir](https://nodejs.org/api/fs.html#fs_fs_readdir_path_options_callback). Exposes a **stream API** and a **promise API**. + + +```sh +npm install readdirp +``` + +```javascript +const readdirp = require('readdirp'); + +// Use streams to achieve small RAM & CPU footprint. +// 1) Streams example with for-await. +for await (const entry of readdirp('.')) { + const {path} = entry; + console.log(`${JSON.stringify({path})}`); +} + +// 2) Streams example, non for-await. +// Print out all JS files along with their size within the current folder & subfolders. +readdirp('.', {fileFilter: '*.js', alwaysStat: true}) + .on('data', (entry) => { + const {path, stats: {size}} = entry; + console.log(`${JSON.stringify({path, size})}`); + }) + // Optionally call stream.destroy() in `warn()` in order to abort and cause 'close' to be emitted + .on('warn', error => console.error('non-fatal error', error)) + .on('error', error => console.error('fatal error', error)) + .on('end', () => console.log('done')); + +// 3) Promise example. More RAM and CPU than streams / for-await. +const files = await readdirp.promise('.'); +console.log(files.map(file => file.path)); + +// Other options. +readdirp('test', { + fileFilter: '*.js', + directoryFilter: ['!.git', '!*modules'] + // directoryFilter: (di) => di.basename.length === 9 + type: 'files_directories', + depth: 1 +}); +``` + +For more examples, check out `examples` directory. + +## API + +`const stream = readdirp(root[, options])` — **Stream API** + +- Reads given root recursively and returns a `stream` of [entry infos](#entryinfo) +- Optionally can be used like `for await (const entry of stream)` with node.js 10+ (`asyncIterator`). +- `on('data', (entry) => {})` [entry info](#entryinfo) for every file / dir. +- `on('warn', (error) => {})` non-fatal `Error` that prevents a file / dir from being processed. Example: inaccessible to the user. +- `on('error', (error) => {})` fatal `Error` which also ends the stream. Example: illegal options where passed. +- `on('end')` — we are done. Called when all entries were found and no more will be emitted. +- `on('close')` — stream is destroyed via `stream.destroy()`. + Could be useful if you want to manually abort even on a non fatal error. + At that point the stream is no longer `readable` and no more entries, warning or errors are emitted +- To learn more about streams, consult the very detailed [nodejs streams documentation](https://nodejs.org/api/stream.html) + or the [stream-handbook](https://github.com/substack/stream-handbook) + +`const entries = await readdirp.promise(root[, options])` — **Promise API**. Returns a list of [entry infos](#entryinfo). + +First argument is awalys `root`, path in which to start reading and recursing into subdirectories. + +### options + +- `fileFilter: ["*.js"]`: filter to include or exclude files. A `Function`, Glob string or Array of glob strings. + - **Function**: a function that takes an entry info as a parameter and returns true to include or false to exclude the entry + - **Glob string**: a string (e.g., `*.js`) which is matched using [picomatch](https://github.com/micromatch/picomatch), so go there for more + information. Globstars (`**`) are not supported since specifying a recursive pattern for an already recursive function doesn't make sense. Negated globs (as explained in the minimatch documentation) are allowed, e.g., `!*.txt` matches everything but text files. + - **Array of glob strings**: either need to be all inclusive or all exclusive (negated) patterns otherwise an error is thrown. + `['*.json', '*.js']` includes all JavaScript and Json files. + `['!.git', '!node_modules']` includes all directories except the '.git' and 'node_modules'. + - Directories that do not pass a filter will not be recursed into. +- `directoryFilter: ['!.git']`: filter to include/exclude directories found and to recurse into. Directories that do not pass a filter will not be recursed into. +- `depth: 5`: depth at which to stop recursing even if more subdirectories are found +- `type: 'files'`: determines if data events on the stream should be emitted for `'files'` (default), `'directories'`, `'files_directories'`, or `'all'`. Setting to `'all'` will also include entries for other types of file descriptors like character devices, unix sockets and named pipes. +- `alwaysStat: false`: always return `stats` property for every file. Default is `false`, readdirp will return `Dirent` entries. Setting it to `true` can double readdir execution time - use it only when you need file `size`, `mtime` etc. Cannot be enabled on node <10.10.0. +- `lstat: false`: include symlink entries in the stream along with files. When `true`, `fs.lstat` would be used instead of `fs.stat` + +### `EntryInfo` + +Has the following properties: + +- `path: 'assets/javascripts/react.js'`: path to the file/directory (relative to given root) +- `fullPath: '/Users/dev/projects/app/assets/javascripts/react.js'`: full path to the file/directory found +- `basename: 'react.js'`: name of the file/directory +- `dirent: fs.Dirent`: built-in [dir entry object](https://nodejs.org/api/fs.html#fs_class_fs_dirent) - only with `alwaysStat: false` +- `stats: fs.Stats`: built in [stat object](https://nodejs.org/api/fs.html#fs_class_fs_stats) - only with `alwaysStat: true` + +## Changelog + +- 3.5 (Oct 13, 2020) disallows recursive directory-based symlinks. + Before, it could have entered infinite loop. +- 3.4 (Mar 19, 2020) adds support for directory-based symlinks. +- 3.3 (Dec 6, 2019) stabilizes RAM consumption and enables perf management with `highWaterMark` option. Fixes race conditions related to `for-await` looping. +- 3.2 (Oct 14, 2019) improves performance by 250% and makes streams implementation more idiomatic. +- 3.1 (Jul 7, 2019) brings `bigint` support to `stat` output on Windows. This is backwards-incompatible for some cases. Be careful. It you use it incorrectly, you'll see "TypeError: Cannot mix BigInt and other types, use explicit conversions". +- 3.0 brings huge performance improvements and stream backpressure support. +- Upgrading 2.x to 3.x: + - Signature changed from `readdirp(options)` to `readdirp(root, options)` + - Replaced callback API with promise API. + - Renamed `entryType` option to `type` + - Renamed `entryType: 'both'` to `'files_directories'` + - `EntryInfo` + - Renamed `stat` to `stats` + - Emitted only when `alwaysStat: true` + - `dirent` is emitted instead of `stats` by default with `alwaysStat: false` + - Renamed `name` to `basename` + - Removed `parentDir` and `fullParentDir` properties +- Supported node.js versions: + - 3.x: node 8+ + - 2.x: node 0.6+ + +## License + +Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller () + +MIT License, see [LICENSE](LICENSE) file. diff --git a/node_modules/readdirp/index.d.ts b/node_modules/readdirp/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cbbd76ca1768c6e4e4030210cf56c88a1000e5fb --- /dev/null +++ b/node_modules/readdirp/index.d.ts @@ -0,0 +1,43 @@ +// TypeScript Version: 3.2 + +/// + +import * as fs from 'fs'; +import { Readable } from 'stream'; + +declare namespace readdir { + interface EntryInfo { + path: string; + fullPath: string; + basename: string; + stats?: fs.Stats; + dirent?: fs.Dirent; + } + + interface ReaddirpOptions { + root?: string; + fileFilter?: string | string[] | ((entry: EntryInfo) => boolean); + directoryFilter?: string | string[] | ((entry: EntryInfo) => boolean); + type?: 'files' | 'directories' | 'files_directories' | 'all'; + lstat?: boolean; + depth?: number; + alwaysStat?: boolean; + } + + interface ReaddirpStream extends Readable, AsyncIterable { + read(): EntryInfo; + [Symbol.asyncIterator](): AsyncIterableIterator; + } + + function promise( + root: string, + options?: ReaddirpOptions + ): Promise; +} + +declare function readdir( + root: string, + options?: readdir.ReaddirpOptions +): readdir.ReaddirpStream; + +export = readdir; diff --git a/node_modules/readdirp/index.js b/node_modules/readdirp/index.js new file mode 100644 index 0000000000000000000000000000000000000000..cf739b2dc5f56a2860667ce8e3f8f7f04ad551d0 --- /dev/null +++ b/node_modules/readdirp/index.js @@ -0,0 +1,287 @@ +'use strict'; + +const fs = require('fs'); +const { Readable } = require('stream'); +const sysPath = require('path'); +const { promisify } = require('util'); +const picomatch = require('picomatch'); + +const readdir = promisify(fs.readdir); +const stat = promisify(fs.stat); +const lstat = promisify(fs.lstat); +const realpath = promisify(fs.realpath); + +/** + * @typedef {Object} EntryInfo + * @property {String} path + * @property {String} fullPath + * @property {fs.Stats=} stats + * @property {fs.Dirent=} dirent + * @property {String} basename + */ + +const BANG = '!'; +const RECURSIVE_ERROR_CODE = 'READDIRP_RECURSIVE_ERROR'; +const NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP', RECURSIVE_ERROR_CODE]); +const FILE_TYPE = 'files'; +const DIR_TYPE = 'directories'; +const FILE_DIR_TYPE = 'files_directories'; +const EVERYTHING_TYPE = 'all'; +const ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE]; + +const isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code); +const [maj, min] = process.versions.node.split('.').slice(0, 2).map(n => Number.parseInt(n, 10)); +const wantBigintFsStats = process.platform === 'win32' && (maj > 10 || (maj === 10 && min >= 5)); + +const normalizeFilter = filter => { + if (filter === undefined) return; + if (typeof filter === 'function') return filter; + + if (typeof filter === 'string') { + const glob = picomatch(filter.trim()); + return entry => glob(entry.basename); + } + + if (Array.isArray(filter)) { + const positive = []; + const negative = []; + for (const item of filter) { + const trimmed = item.trim(); + if (trimmed.charAt(0) === BANG) { + negative.push(picomatch(trimmed.slice(1))); + } else { + positive.push(picomatch(trimmed)); + } + } + + if (negative.length > 0) { + if (positive.length > 0) { + return entry => + positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename)); + } + return entry => !negative.some(f => f(entry.basename)); + } + return entry => positive.some(f => f(entry.basename)); + } +}; + +class ReaddirpStream extends Readable { + static get defaultOptions() { + return { + root: '.', + /* eslint-disable no-unused-vars */ + fileFilter: (path) => true, + directoryFilter: (path) => true, + /* eslint-enable no-unused-vars */ + type: FILE_TYPE, + lstat: false, + depth: 2147483648, + alwaysStat: false + }; + } + + constructor(options = {}) { + super({ + objectMode: true, + autoDestroy: true, + highWaterMark: options.highWaterMark || 4096 + }); + const opts = { ...ReaddirpStream.defaultOptions, ...options }; + const { root, type } = opts; + + this._fileFilter = normalizeFilter(opts.fileFilter); + this._directoryFilter = normalizeFilter(opts.directoryFilter); + + const statMethod = opts.lstat ? lstat : stat; + // Use bigint stats if it's windows and stat() supports options (node 10+). + if (wantBigintFsStats) { + this._stat = path => statMethod(path, { bigint: true }); + } else { + this._stat = statMethod; + } + + this._maxDepth = opts.depth; + this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type); + this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type); + this._wantsEverything = type === EVERYTHING_TYPE; + this._root = sysPath.resolve(root); + this._isDirent = ('Dirent' in fs) && !opts.alwaysStat; + this._statsProp = this._isDirent ? 'dirent' : 'stats'; + this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent }; + + // Launch stream with one parent, the root dir. + this.parents = [this._exploreDir(root, 1)]; + this.reading = false; + this.parent = undefined; + } + + async _read(batch) { + if (this.reading) return; + this.reading = true; + + try { + while (!this.destroyed && batch > 0) { + const { path, depth, files = [] } = this.parent || {}; + + if (files.length > 0) { + const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path)); + for (const entry of await Promise.all(slice)) { + if (this.destroyed) return; + + const entryType = await this._getEntryType(entry); + if (entryType === 'directory' && this._directoryFilter(entry)) { + if (depth <= this._maxDepth) { + this.parents.push(this._exploreDir(entry.fullPath, depth + 1)); + } + + if (this._wantsDir) { + this.push(entry); + batch--; + } + } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) { + if (this._wantsFile) { + this.push(entry); + batch--; + } + } + } + } else { + const parent = this.parents.pop(); + if (!parent) { + this.push(null); + break; + } + this.parent = await parent; + if (this.destroyed) return; + } + } + } catch (error) { + this.destroy(error); + } finally { + this.reading = false; + } + } + + async _exploreDir(path, depth) { + let files; + try { + files = await readdir(path, this._rdOptions); + } catch (error) { + this._onError(error); + } + return { files, depth, path }; + } + + async _formatEntry(dirent, path) { + let entry; + try { + const basename = this._isDirent ? dirent.name : dirent; + const fullPath = sysPath.resolve(sysPath.join(path, basename)); + entry = { path: sysPath.relative(this._root, fullPath), fullPath, basename }; + entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath); + } catch (err) { + this._onError(err); + } + return entry; + } + + _onError(err) { + if (isNormalFlowError(err) && !this.destroyed) { + this.emit('warn', err); + } else { + this.destroy(err); + } + } + + async _getEntryType(entry) { + // entry may be undefined, because a warning or an error were emitted + // and the statsProp is undefined + const stats = entry && entry[this._statsProp]; + if (!stats) { + return; + } + if (stats.isFile()) { + return 'file'; + } + if (stats.isDirectory()) { + return 'directory'; + } + if (stats && stats.isSymbolicLink()) { + const full = entry.fullPath; + try { + const entryRealPath = await realpath(full); + const entryRealPathStats = await lstat(entryRealPath); + if (entryRealPathStats.isFile()) { + return 'file'; + } + if (entryRealPathStats.isDirectory()) { + const len = entryRealPath.length; + if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) { + const recursiveError = new Error( + `Circular symlink detected: "${full}" points to "${entryRealPath}"` + ); + recursiveError.code = RECURSIVE_ERROR_CODE; + return this._onError(recursiveError); + } + return 'directory'; + } + } catch (error) { + this._onError(error); + } + } + } + + _includeAsFile(entry) { + const stats = entry && entry[this._statsProp]; + + return stats && this._wantsEverything && !stats.isDirectory(); + } +} + +/** + * @typedef {Object} ReaddirpArguments + * @property {Function=} fileFilter + * @property {Function=} directoryFilter + * @property {String=} type + * @property {Number=} depth + * @property {String=} root + * @property {Boolean=} lstat + * @property {Boolean=} bigint + */ + +/** + * Main function which ends up calling readdirRec and reads all files and directories in given root recursively. + * @param {String} root Root directory + * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth + */ +const readdirp = (root, options = {}) => { + let type = options.entryType || options.type; + if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility + if (type) options.type = type; + if (!root) { + throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)'); + } else if (typeof root !== 'string') { + throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)'); + } else if (type && !ALL_TYPES.includes(type)) { + throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`); + } + + options.root = root; + return new ReaddirpStream(options); +}; + +const readdirpPromise = (root, options = {}) => { + return new Promise((resolve, reject) => { + const files = []; + readdirp(root, options) + .on('data', entry => files.push(entry)) + .on('end', () => resolve(files)) + .on('error', error => reject(error)); + }); +}; + +readdirp.promise = readdirpPromise; +readdirp.ReaddirpStream = ReaddirpStream; +readdirp.default = readdirp; + +module.exports = readdirp; diff --git a/node_modules/readdirp/package.json b/node_modules/readdirp/package.json new file mode 100644 index 0000000000000000000000000000000000000000..dba53888eab84f1e2657ea3516971fe2eb225743 --- /dev/null +++ b/node_modules/readdirp/package.json @@ -0,0 +1,122 @@ +{ + "name": "readdirp", + "description": "Recursive version of fs.readdir with streaming API.", + "version": "3.6.0", + "homepage": "https://github.com/paulmillr/readdirp", + "repository": { + "type": "git", + "url": "git://github.com/paulmillr/readdirp.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/paulmillr/readdirp/issues" + }, + "author": "Thorsten Lorenz (thlorenz.com)", + "contributors": [ + "Thorsten Lorenz (thlorenz.com)", + "Paul Miller (https://paulmillr.com)" + ], + "main": "index.js", + "engines": { + "node": ">=8.10.0" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "recursive", + "fs", + "stream", + "streams", + "readdir", + "filesystem", + "find", + "filter" + ], + "scripts": { + "dtslint": "dtslint", + "nyc": "nyc", + "mocha": "mocha --exit", + "lint": "eslint --report-unused-disable-directives --ignore-path .gitignore .", + "test": "npm run lint && nyc npm run mocha" + }, + "dependencies": { + "picomatch": "^2.2.1" + }, + "devDependencies": { + "@types/node": "^14", + "chai": "^4.2", + "chai-subset": "^1.6", + "dtslint": "^3.3.0", + "eslint": "^7.0.0", + "mocha": "^7.1.1", + "nyc": "^15.0.0", + "rimraf": "^3.0.0", + "typescript": "^4.0.3" + }, + "nyc": { + "reporter": [ + "html", + "text" + ] + }, + "eslintConfig": { + "root": true, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": 9, + "sourceType": "script" + }, + "env": { + "node": true, + "es6": true + }, + "rules": { + "array-callback-return": "error", + "no-empty": [ + "error", + { + "allowEmptyCatch": true + } + ], + "no-else-return": [ + "error", + { + "allowElseIf": false + } + ], + "no-lonely-if": "error", + "no-var": "error", + "object-shorthand": "error", + "prefer-arrow-callback": [ + "error", + { + "allowNamedFunctions": true + } + ], + "prefer-const": [ + "error", + { + "ignoreReadBeforeAssign": true + } + ], + "prefer-destructuring": [ + "error", + { + "object": true, + "array": false + } + ], + "prefer-spread": "error", + "prefer-template": "error", + "radix": "error", + "semi": "error", + "strict": "error", + "quotes": [ + "error", + "single" + ] + } + } +} diff --git a/node_modules/resolve/.editorconfig b/node_modules/resolve/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..d63f0bb6cdfb9bff414b1493862deef1c385a5ec --- /dev/null +++ b/node_modules/resolve/.editorconfig @@ -0,0 +1,37 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 200 + +[*.js] +block_comment_start = /* +block_comment = * +block_comment_end = */ + +[*.yml] +indent_size = 1 + +[package.json] +indent_style = tab + +[lib/core.json] +indent_style = tab + +[CHANGELOG.md] +indent_style = space +indent_size = 2 + +[{*.json,Makefile}] +max_line_length = off + +[test/{dotdot,resolver,module_dir,multirepo,node_path,pathfilter,precedence}/**/*] +indent_style = off +indent_size = off +max_line_length = off +insert_final_newline = off diff --git a/node_modules/resolve/.eslintrc b/node_modules/resolve/.eslintrc new file mode 100644 index 0000000000000000000000000000000000000000..ce1be6efcff0cf238be2a48c6085325a01a8fbfd --- /dev/null +++ b/node_modules/resolve/.eslintrc @@ -0,0 +1,65 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "indent": [2, 4], + "strict": 0, + "complexity": 0, + "consistent-return": 0, + "curly": 0, + "dot-notation": [2, { "allowKeywords": true }], + "func-name-matching": 0, + "func-style": 0, + "global-require": 1, + "id-length": [2, { "min": 1, "max": 30 }], + "max-lines": [2, 350], + "max-lines-per-function": 0, + "max-nested-callbacks": 0, + "max-params": 0, + "max-statements-per-line": [2, { "max": 2 }], + "max-statements": 0, + "no-magic-numbers": 0, + "no-shadow": 0, + "no-use-before-define": 0, + "sort-keys": 0, + }, + "overrides": [ + { + "files": "bin/**", + "rules": { + "no-process-exit": "off", + }, + }, + { + "files": "example/**", + "rules": { + "no-console": 0, + }, + }, + { + "files": "test/resolver/nested_symlinks/mylib/*.js", + "rules": { + "no-throw-literal": 0, + }, + }, + { + "files": "test/**", + "parserOptions": { + "ecmaVersion": 5, + "allowReserved": false, + }, + "rules": { + "dot-notation": [2, { "allowPattern": "throws" }], + "max-lines": 0, + "max-lines-per-function": 0, + "no-unused-vars": [2, { "vars": "all", "args": "none" }], + }, + }, + ], + + "ignorePatterns": [ + "./test/resolver/malformed_package_json/package.json", + ], +} diff --git a/node_modules/resolve/.github/FUNDING.yml b/node_modules/resolve/.github/FUNDING.yml new file mode 100644 index 0000000000000000000000000000000000000000..d9c05955459660bd6b6a972499502b8d09958220 --- /dev/null +++ b/node_modules/resolve/.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/resolve +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/resolve/LICENSE b/node_modules/resolve/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..ff4fce28af33a4504d6960856a0bd603860a62e0 --- /dev/null +++ b/node_modules/resolve/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012 James Halliday + +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/resolve/SECURITY.md b/node_modules/resolve/SECURITY.md new file mode 100644 index 0000000000000000000000000000000000000000..82e4285adc6285693cd6c06af02d606e09dd8fcd --- /dev/null +++ b/node_modules/resolve/SECURITY.md @@ -0,0 +1,3 @@ +# Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. diff --git a/node_modules/resolve/async.js b/node_modules/resolve/async.js new file mode 100644 index 0000000000000000000000000000000000000000..f38c5813ebd04ab8bf6988cc0186b9f95433f7e2 --- /dev/null +++ b/node_modules/resolve/async.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./lib/async'); diff --git a/node_modules/resolve/bin/resolve b/node_modules/resolve/bin/resolve new file mode 100755 index 0000000000000000000000000000000000000000..5ee329af987741ac9db4498830337edf9edfb114 --- /dev/null +++ b/node_modules/resolve/bin/resolve @@ -0,0 +1,50 @@ +#!/usr/bin/env node + +'use strict'; + +var path = require('path'); +var fs = require('fs'); + +if ( + String(process.env.npm_lifecycle_script).slice(0, 8) !== 'resolve ' + && ( + !process.argv + || process.argv.length < 2 + || (process.argv[1] !== __filename && fs.statSync(process.argv[1]).ino !== fs.statSync(__filename).ino) + || (process.env._ && path.resolve(process.env._) !== __filename) + ) +) { + console.error('Error: `resolve` must be run directly as an executable'); + process.exit(1); +} + +var supportsPreserveSymlinkFlag = require('supports-preserve-symlinks-flag'); + +var preserveSymlinks = false; +for (var i = 2; i < process.argv.length; i += 1) { + if (process.argv[i].slice(0, 2) === '--') { + if (supportsPreserveSymlinkFlag && process.argv[i] === '--preserve-symlinks') { + preserveSymlinks = true; + } else if (process.argv[i].length > 2) { + console.error('Unknown argument ' + process.argv[i].replace(/[=].*$/, '')); + process.exit(2); + } + process.argv.splice(i, 1); + i -= 1; + if (process.argv[i] === '--') { break; } // eslint-disable-line no-restricted-syntax + } +} + +if (process.argv.length < 3) { + console.error('Error: `resolve` expects a specifier'); + process.exit(2); +} + +var resolve = require('../'); + +var result = resolve.sync(process.argv[2], { + basedir: process.cwd(), + preserveSymlinks: preserveSymlinks +}); + +console.log(result); diff --git a/node_modules/resolve/example/async.js b/node_modules/resolve/example/async.js new file mode 100644 index 0000000000000000000000000000000000000000..20e65dc281dbaa3947a1c5d1b1a0bc94167c2073 --- /dev/null +++ b/node_modules/resolve/example/async.js @@ -0,0 +1,5 @@ +var resolve = require('../'); +resolve('tap', { basedir: __dirname }, function (err, res) { + if (err) console.error(err); + else console.log(res); +}); diff --git a/node_modules/resolve/example/sync.js b/node_modules/resolve/example/sync.js new file mode 100644 index 0000000000000000000000000000000000000000..54b2cc1004223d114e38bbd46fe9a0f5b73ca7e2 --- /dev/null +++ b/node_modules/resolve/example/sync.js @@ -0,0 +1,3 @@ +var resolve = require('../'); +var res = resolve.sync('tap', { basedir: __dirname }); +console.log(res); diff --git a/node_modules/resolve/index.js b/node_modules/resolve/index.js new file mode 100644 index 0000000000000000000000000000000000000000..125d8146423596fa289ec4edf8e3c78ef92eb7c7 --- /dev/null +++ b/node_modules/resolve/index.js @@ -0,0 +1,6 @@ +var async = require('./lib/async'); +async.core = require('./lib/core'); +async.isCore = require('./lib/is-core'); +async.sync = require('./lib/sync'); + +module.exports = async; diff --git a/node_modules/resolve/package.json b/node_modules/resolve/package.json new file mode 100644 index 0000000000000000000000000000000000000000..17d1f24bd4509cee8eecd7012f7ff8b8a2ae0916 --- /dev/null +++ b/node_modules/resolve/package.json @@ -0,0 +1,71 @@ +{ + "name": "resolve", + "description": "resolve like require.resolve() on behalf of files asynchronously and synchronously", + "version": "1.22.2", + "repository": { + "type": "git", + "url": "git://github.com/browserify/resolve.git" + }, + "bin": { + "resolve": "./bin/resolve" + }, + "main": "index.js", + "keywords": [ + "resolve", + "require", + "node", + "module" + ], + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated && cp node_modules/is-core-module/core.json ./lib/ ||:", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", + "lint": "eslint --ext=js,mjs --no-eslintrc -c .eslintrc . 'bin/**'", + "pretests-only": "cd ./test/resolver/nested_symlinks && node mylib/sync && node mylib/async", + "tests-only": "tape test/*.js", + "pretest": "npm run lint", + "test": "npm run --silent tests-only", + "posttest": "npm run test:multirepo && aud --production", + "test:multirepo": "cd ./test/resolver/multirepo && npm install && npm test" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.0.1", + "array.prototype.map": "^1.0.5", + "aud": "^2.0.2", + "copy-dir": "^1.3.0", + "eclint": "^2.8.1", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "mkdirp": "^0.5.5", + "mv": "^2.1.1", + "npmignore": "^0.3.0", + "object-keys": "^1.1.1", + "rimraf": "^2.7.1", + "safe-publish-latest": "^2.0.0", + "semver": "^6.3.0", + "tap": "0.4.13", + "tape": "^5.6.3", + "tmp": "^0.0.31" + }, + "license": "MIT", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "appveyor.yml" + ] + } +} diff --git a/node_modules/resolve/readme.markdown b/node_modules/resolve/readme.markdown new file mode 100644 index 0000000000000000000000000000000000000000..ad34d60dd57771d805f0e6cf9f1104a63b98940d --- /dev/null +++ b/node_modules/resolve/readme.markdown @@ -0,0 +1,301 @@ +# resolve [![Version Badge][2]][1] + +implements the [node `require.resolve()` algorithm](https://nodejs.org/api/modules.html#modules_all_together) such that you can `require.resolve()` on behalf of a file asynchronously and synchronously + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][5]][6] +[![dev dependency status][7]][8] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][11]][1] + +# example + +asynchronously resolve: + +```js +var resolve = require('resolve/async'); // or, require('resolve') +resolve('tap', { basedir: __dirname }, function (err, res) { + if (err) console.error(err); + else console.log(res); +}); +``` + +``` +$ node example/async.js +/home/substack/projects/node-resolve/node_modules/tap/lib/main.js +``` + +synchronously resolve: + +```js +var resolve = require('resolve/sync'); // or, `require('resolve').sync +var res = resolve('tap', { basedir: __dirname }); +console.log(res); +``` + +``` +$ node example/sync.js +/home/substack/projects/node-resolve/node_modules/tap/lib/main.js +``` + +# methods + +```js +var resolve = require('resolve'); +var async = require('resolve/async'); +var sync = require('resolve/sync'); +``` + +For both the synchronous and asynchronous methods, errors may have any of the following `err.code` values: + +- `MODULE_NOT_FOUND`: the given path string (`id`) could not be resolved to a module +- `INVALID_BASEDIR`: the specified `opts.basedir` doesn't exist, or is not a directory +- `INVALID_PACKAGE_MAIN`: a `package.json` was encountered with an invalid `main` property (eg. not a string) + +## resolve(id, opts={}, cb) + +Asynchronously resolve the module path string `id` into `cb(err, res [, pkg])`, where `pkg` (if defined) is the data from `package.json`. + +options are: + +* opts.basedir - directory to begin resolving from + +* opts.package - `package.json` data applicable to the module being loaded + +* opts.extensions - array of file extensions to search in order + +* opts.includeCoreModules - set to `false` to exclude node core modules (e.g. `fs`) from the search + +* opts.readFile - how to read files asynchronously + +* opts.isFile - function to asynchronously test whether a file exists + +* opts.isDirectory - function to asynchronously test whether a file exists and is a directory + +* opts.realpath - function to asynchronously resolve a potential symlink to its real path + +* `opts.readPackage(readFile, pkgfile, cb)` - function to asynchronously read and parse a package.json file + * readFile - the passed `opts.readFile` or `fs.readFile` if not specified + * pkgfile - path to package.json + * cb - callback + +* `opts.packageFilter(pkg, pkgfile, dir)` - transform the parsed package.json contents before looking at the "main" field + * pkg - package data + * pkgfile - path to package.json + * dir - directory that contains package.json + +* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package + * pkg - package data + * path - the path being resolved + * relativePath - the path relative from the package.json location + * returns - a relative path that will be joined from the package.json location + +* opts.paths - require.paths array to use if nothing is found on the normal `node_modules` recursive walk (probably don't use this) + + For advanced users, `paths` can also be a `opts.paths(request, start, opts)` function + * request - the import specifier being resolved + * start - lookup path + * getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution + * opts - the resolution options + +* `opts.packageIterator(request, start, opts)` - return the list of candidate paths where the packages sources may be found (probably don't use this) + * request - the import specifier being resolved + * start - lookup path + * getPackageCandidates - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution + * opts - the resolution options + +* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"` + +* opts.preserveSymlinks - if true, doesn't resolve `basedir` to real path before resolving. +This is the way Node resolves dependencies when executed with the [--preserve-symlinks](https://nodejs.org/api/all.html#cli_preserve_symlinks) flag. +**Note:** this property is currently `true` by default but it will be changed to +`false` in the next major version because *Node's resolution algorithm does not preserve symlinks by default*. + +default `opts` values: + +```js +{ + paths: [], + basedir: __dirname, + extensions: ['.js'], + includeCoreModules: true, + readFile: fs.readFile, + isFile: function isFile(file, cb) { + fs.stat(file, function (err, stat) { + if (!err) { + return cb(null, stat.isFile() || stat.isFIFO()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); + }, + isDirectory: function isDirectory(dir, cb) { + fs.stat(dir, function (err, stat) { + if (!err) { + return cb(null, stat.isDirectory()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); + }, + realpath: function realpath(file, cb) { + var realpath = typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; + realpath(file, function (realPathErr, realPath) { + if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr); + else cb(null, realPathErr ? file : realPath); + }); + }, + readPackage: function defaultReadPackage(readFile, pkgfile, cb) { + readFile(pkgfile, function (readFileErr, body) { + if (readFileErr) cb(readFileErr); + else { + try { + var pkg = JSON.parse(body); + cb(null, pkg); + } catch (jsonErr) { + cb(null); + } + } + }); + }, + moduleDirectory: 'node_modules', + preserveSymlinks: true +} +``` + +## resolve.sync(id, opts) + +Synchronously resolve the module path string `id`, returning the result and +throwing an error when `id` can't be resolved. + +options are: + +* opts.basedir - directory to begin resolving from + +* opts.extensions - array of file extensions to search in order + +* opts.includeCoreModules - set to `false` to exclude node core modules (e.g. `fs`) from the search + +* opts.readFileSync - how to read files synchronously + +* opts.isFile - function to synchronously test whether a file exists + +* opts.isDirectory - function to synchronously test whether a file exists and is a directory + +* opts.realpathSync - function to synchronously resolve a potential symlink to its real path + +* `opts.readPackageSync(readFileSync, pkgfile)` - function to synchronously read and parse a package.json file + * readFileSync - the passed `opts.readFileSync` or `fs.readFileSync` if not specified + * pkgfile - path to package.json + +* `opts.packageFilter(pkg, dir)` - transform the parsed package.json contents before looking at the "main" field + * pkg - package data + * dir - directory that contains package.json (Note: the second argument will change to "pkgfile" in v2) + +* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package + * pkg - package data + * path - the path being resolved + * relativePath - the path relative from the package.json location + * returns - a relative path that will be joined from the package.json location + +* opts.paths - require.paths array to use if nothing is found on the normal `node_modules` recursive walk (probably don't use this) + + For advanced users, `paths` can also be a `opts.paths(request, start, opts)` function + * request - the import specifier being resolved + * start - lookup path + * getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution + * opts - the resolution options + +* `opts.packageIterator(request, start, opts)` - return the list of candidate paths where the packages sources may be found (probably don't use this) + * request - the import specifier being resolved + * start - lookup path + * getPackageCandidates - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution + * opts - the resolution options + +* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"` + +* opts.preserveSymlinks - if true, doesn't resolve `basedir` to real path before resolving. +This is the way Node resolves dependencies when executed with the [--preserve-symlinks](https://nodejs.org/api/all.html#cli_preserve_symlinks) flag. +**Note:** this property is currently `true` by default but it will be changed to +`false` in the next major version because *Node's resolution algorithm does not preserve symlinks by default*. + +default `opts` values: + +```js +{ + paths: [], + basedir: __dirname, + extensions: ['.js'], + includeCoreModules: true, + readFileSync: fs.readFileSync, + isFile: function isFile(file) { + try { + var stat = fs.statSync(file); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; + } + return stat.isFile() || stat.isFIFO(); + }, + isDirectory: function isDirectory(dir) { + try { + var stat = fs.statSync(dir); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; + } + return stat.isDirectory(); + }, + realpathSync: function realpathSync(file) { + try { + var realpath = typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; + return realpath(file); + } catch (realPathErr) { + if (realPathErr.code !== 'ENOENT') { + throw realPathErr; + } + } + return file; + }, + readPackageSync: function defaultReadPackageSync(readFileSync, pkgfile) { + var body = readFileSync(pkgfile); + try { + var pkg = JSON.parse(body); + return pkg; + } catch (jsonErr) {} + }, + moduleDirectory: 'node_modules', + preserveSymlinks: true +} +``` + +# install + +With [npm](https://npmjs.org) do: + +```sh +npm install resolve +``` + +# license + +MIT + +[1]: https://npmjs.org/package/resolve +[2]: https://versionbadg.es/browserify/resolve.svg +[5]: https://david-dm.org/browserify/resolve.svg +[6]: https://david-dm.org/browserify/resolve +[7]: https://david-dm.org/browserify/resolve/dev-status.svg +[8]: https://david-dm.org/browserify/resolve#info=devDependencies +[11]: https://nodei.co/npm/resolve.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/resolve.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/resolve.svg +[downloads-url]: https://npm-stat.com/charts.html?package=resolve +[codecov-image]: https://codecov.io/gh/browserify/resolve/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/browserify/resolve/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/browserify/resolve +[actions-url]: https://github.com/browserify/resolve/actions diff --git a/node_modules/resolve/sync.js b/node_modules/resolve/sync.js new file mode 100644 index 0000000000000000000000000000000000000000..cd0ee040177e92c676b1a063406c743289719bd0 --- /dev/null +++ b/node_modules/resolve/sync.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./lib/sync'); diff --git a/node_modules/resolve/test/core.js b/node_modules/resolve/test/core.js new file mode 100644 index 0000000000000000000000000000000000000000..a477adc5ce2a4464362d617a21604b367a8d9718 --- /dev/null +++ b/node_modules/resolve/test/core.js @@ -0,0 +1,88 @@ +var test = require('tape'); +var keys = require('object-keys'); +var semver = require('semver'); + +var resolve = require('../'); + +var brokenNode = semver.satisfies(process.version, '11.11 - 11.13'); + +test('core modules', function (t) { + t.test('isCore()', function (st) { + st.ok(resolve.isCore('fs')); + st.ok(resolve.isCore('net')); + st.ok(resolve.isCore('http')); + + st.ok(!resolve.isCore('seq')); + st.ok(!resolve.isCore('../')); + + st.ok(!resolve.isCore('toString')); + + st.end(); + }); + + t.test('core list', function (st) { + var cores = keys(resolve.core); + st.plan(cores.length); + + for (var i = 0; i < cores.length; ++i) { + var mod = cores[i]; + // note: this must be require, not require.resolve, due to https://github.com/nodejs/node/issues/43274 + var requireFunc = function () { require(mod); }; // eslint-disable-line no-loop-func + t.comment(mod + ': ' + resolve.core[mod]); + if (resolve.core[mod]) { + st.doesNotThrow(requireFunc, mod + ' supported; requiring does not throw'); + } else if (brokenNode) { + st.ok(true, 'this version of node is broken: attempting to require things that fail to resolve breaks "home_paths" tests'); + } else { + st.throws(requireFunc, mod + ' not supported; requiring throws'); + } + } + + st.end(); + }); + + t.test('core via repl module', { skip: !resolve.core.repl }, function (st) { + var libs = require('repl')._builtinLibs; // eslint-disable-line no-underscore-dangle + if (!libs) { + st.skip('module.builtinModules does not exist'); + return st.end(); + } + for (var i = 0; i < libs.length; ++i) { + var mod = libs[i]; + st.ok(resolve.core[mod], mod + ' is a core module'); + st.doesNotThrow( + function () { require(mod); }, // eslint-disable-line no-loop-func + 'requiring ' + mod + ' does not throw' + ); + } + st.end(); + }); + + t.test('core via builtinModules list', { skip: !resolve.core.module }, function (st) { + var libs = require('module').builtinModules; + if (!libs) { + st.skip('module.builtinModules does not exist'); + return st.end(); + } + var blacklist = [ + '_debug_agent', + 'v8/tools/tickprocessor-driver', + 'v8/tools/SourceMap', + 'v8/tools/tickprocessor', + 'v8/tools/profile' + ]; + for (var i = 0; i < libs.length; ++i) { + var mod = libs[i]; + if (blacklist.indexOf(mod) === -1) { + st.ok(resolve.core[mod], mod + ' is a core module'); + st.doesNotThrow( + function () { require(mod); }, // eslint-disable-line no-loop-func + 'requiring ' + mod + ' does not throw' + ); + } + } + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/resolve/test/dotdot.js b/node_modules/resolve/test/dotdot.js new file mode 100644 index 0000000000000000000000000000000000000000..30806659be2ef27d410722636d6f79c8f8e999b0 --- /dev/null +++ b/node_modules/resolve/test/dotdot.js @@ -0,0 +1,29 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('dotdot', function (t) { + t.plan(4); + var dir = path.join(__dirname, '/dotdot/abc'); + + resolve('..', { basedir: dir }, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(__dirname, 'dotdot/index.js')); + }); + + resolve('.', { basedir: dir }, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, 'index.js')); + }); +}); + +test('dotdot sync', function (t) { + t.plan(2); + var dir = path.join(__dirname, '/dotdot/abc'); + + var a = resolve.sync('..', { basedir: dir }); + t.equal(a, path.join(__dirname, 'dotdot/index.js')); + + var b = resolve.sync('.', { basedir: dir }); + t.equal(b, path.join(dir, 'index.js')); +}); diff --git a/node_modules/resolve/test/dotdot/abc/index.js b/node_modules/resolve/test/dotdot/abc/index.js new file mode 100644 index 0000000000000000000000000000000000000000..67f2534ebf90dcc4c2c1c13ce3ab52c41f4d2ed9 --- /dev/null +++ b/node_modules/resolve/test/dotdot/abc/index.js @@ -0,0 +1,2 @@ +var x = require('..'); +console.log(x); diff --git a/node_modules/resolve/test/dotdot/index.js b/node_modules/resolve/test/dotdot/index.js new file mode 100644 index 0000000000000000000000000000000000000000..643f9fcc6a6a7cf025dcc86559e83d00b993ed96 --- /dev/null +++ b/node_modules/resolve/test/dotdot/index.js @@ -0,0 +1 @@ +module.exports = 'whatever'; diff --git a/node_modules/resolve/test/faulty_basedir.js b/node_modules/resolve/test/faulty_basedir.js new file mode 100644 index 0000000000000000000000000000000000000000..5f2141a67267bceaf743ab292ca8e7bebb2b6bbc --- /dev/null +++ b/node_modules/resolve/test/faulty_basedir.js @@ -0,0 +1,29 @@ +var test = require('tape'); +var path = require('path'); +var resolve = require('../'); + +test('faulty basedir must produce error in windows', { skip: process.platform !== 'win32' }, function (t) { + t.plan(1); + + var resolverDir = 'C:\\a\\b\\c\\d'; + + resolve('tape/lib/test.js', { basedir: resolverDir }, function (err, res, pkg) { + t.equal(!!err, true); + }); +}); + +test('non-existent basedir should not throw when preserveSymlinks is false', function (t) { + t.plan(2); + + var opts = { + basedir: path.join(path.sep, 'unreal', 'path', 'that', 'does', 'not', 'exist'), + preserveSymlinks: false + }; + + var module = './dotdot/abc'; + + resolve(module, opts, function (err, res) { + t.equal(err.code, 'MODULE_NOT_FOUND'); + t.equal(res, undefined); + }); +}); diff --git a/node_modules/resolve/test/filter.js b/node_modules/resolve/test/filter.js new file mode 100644 index 0000000000000000000000000000000000000000..8f8cccdb2f59f3ea03a27151da52f73ed9f068de --- /dev/null +++ b/node_modules/resolve/test/filter.js @@ -0,0 +1,34 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('filter', function (t) { + t.plan(4); + var dir = path.join(__dirname, 'resolver'); + var packageFilterArgs; + resolve('./baz', { + basedir: dir, + packageFilter: function (pkg, pkgfile) { + pkg.main = 'doom'; // eslint-disable-line no-param-reassign + packageFilterArgs = [pkg, pkgfile]; + return pkg; + } + }, function (err, res, pkg) { + if (err) t.fail(err); + + t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works'); + + var packageData = packageFilterArgs[0]; + t.equal(pkg, packageData, 'first packageFilter argument is "pkg"'); + t.equal(packageData.main, 'doom', 'package "main" was altered'); + + var packageFile = packageFilterArgs[1]; + t.equal( + packageFile, + path.join(dir, 'baz/package.json'), + 'second packageFilter argument is "pkgfile"' + ); + + t.end(); + }); +}); diff --git a/node_modules/resolve/test/filter_sync.js b/node_modules/resolve/test/filter_sync.js new file mode 100644 index 0000000000000000000000000000000000000000..8a43b9818973dfba95a2389f27e966ff4f315343 --- /dev/null +++ b/node_modules/resolve/test/filter_sync.js @@ -0,0 +1,33 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('filter', function (t) { + var dir = path.join(__dirname, 'resolver'); + var packageFilterArgs; + var res = resolve.sync('./baz', { + basedir: dir, + // NOTE: in v2.x, this will be `pkg, pkgfile, dir`, but must remain "broken" here in v1.x for compatibility + packageFilter: function (pkg, /*pkgfile,*/ dir) { // eslint-disable-line spaced-comment + pkg.main = 'doom'; // eslint-disable-line no-param-reassign + packageFilterArgs = 'is 1.x' ? [pkg, dir] : [pkg, pkgfile, dir]; // eslint-disable-line no-constant-condition, no-undef + return pkg; + } + }); + + t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works'); + + var packageData = packageFilterArgs[0]; + t.equal(packageData.main, 'doom', 'package "main" was altered'); + + if (!'is 1.x') { // eslint-disable-line no-constant-condition + var packageFile = packageFilterArgs[1]; + t.equal(packageFile, path.join(dir, 'baz', 'package.json'), 'package.json path is correct'); + } + + var packageDir = packageFilterArgs['is 1.x' ? 1 : 2]; // eslint-disable-line no-constant-condition + // eslint-disable-next-line no-constant-condition + t.equal(packageDir, path.join(dir, 'baz'), ('is 1.x' ? 'second' : 'third') + ' packageFilter argument is "dir"'); + + t.end(); +}); diff --git a/node_modules/resolve/test/home_paths.js b/node_modules/resolve/test/home_paths.js new file mode 100644 index 0000000000000000000000000000000000000000..3b8c9b32c87bd73fb2a3ec42494d13faae1594e4 --- /dev/null +++ b/node_modules/resolve/test/home_paths.js @@ -0,0 +1,127 @@ +'use strict'; + +var fs = require('fs'); +var homedir = require('../lib/homedir'); +var path = require('path'); + +var test = require('tape'); +var mkdirp = require('mkdirp'); +var rimraf = require('rimraf'); +var mv = require('mv'); +var copyDir = require('copy-dir'); +var tmp = require('tmp'); + +var HOME = homedir(); + +var hnm = path.join(HOME, '.node_modules'); +var hnl = path.join(HOME, '.node_libraries'); + +var resolve = require('../async'); + +function makeDir(t, dir, cb) { + mkdirp(dir, function (err) { + if (err) { + cb(err); + } else { + t.teardown(function cleanup() { + rimraf.sync(dir); + }); + cb(); + } + }); +} + +function makeTempDir(t, dir, cb) { + if (fs.existsSync(dir)) { + var tmpResult = tmp.dirSync(); + t.teardown(tmpResult.removeCallback); + var backup = path.join(tmpResult.name, path.basename(dir)); + mv(dir, backup, function (err) { + if (err) { + cb(err); + } else { + t.teardown(function () { + mv(backup, dir, cb); + }); + makeDir(t, dir, cb); + } + }); + } else { + makeDir(t, dir, cb); + } +} + +test('homedir module paths', function (t) { + t.plan(7); + + makeTempDir(t, hnm, function (err) { + t.error(err, 'no error with HNM temp dir'); + if (err) { + return t.end(); + } + + var bazHNMDir = path.join(hnm, 'baz'); + var dotMainDir = path.join(hnm, 'dot_main'); + copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNMDir); + copyDir.sync(path.join(__dirname, 'resolver/dot_main'), dotMainDir); + + var bazPkg = { name: 'baz', main: 'quux.js' }; + var dotMainPkg = { main: 'index' }; + + var bazHNMmain = path.join(bazHNMDir, 'quux.js'); + t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`'); + var dotMainMain = path.join(dotMainDir, 'index.js'); + t.equal(require.resolve('dot_main'), dotMainMain, 'sanity check: require.resolve finds `dot_main`'); + + makeTempDir(t, hnl, function (err) { + t.error(err, 'no error with HNL temp dir'); + if (err) { + return t.end(); + } + var bazHNLDir = path.join(hnl, 'baz'); + copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNLDir); + + var dotSlashMainDir = path.join(hnl, 'dot_slash_main'); + var dotSlashMainMain = path.join(dotSlashMainDir, 'index.js'); + var dotSlashMainPkg = { main: 'index' }; + copyDir.sync(path.join(__dirname, 'resolver/dot_slash_main'), dotSlashMainDir); + + t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`'); + t.equal(require.resolve('dot_slash_main'), dotSlashMainMain, 'sanity check: require.resolve finds HNL `dot_slash_main`'); + + t.test('with temp dirs', function (st) { + st.plan(3); + + st.test('just in `$HOME/.node_modules`', function (s2t) { + s2t.plan(3); + + resolve('dot_main', function (err, res, pkg) { + s2t.error(err, 'no error resolving `dot_main`'); + s2t.equal(res, dotMainMain, '`dot_main` resolves in `$HOME/.node_modules`'); + s2t.deepEqual(pkg, dotMainPkg); + }); + }); + + st.test('just in `$HOME/.node_libraries`', function (s2t) { + s2t.plan(3); + + resolve('dot_slash_main', function (err, res, pkg) { + s2t.error(err, 'no error resolving `dot_slash_main`'); + s2t.equal(res, dotSlashMainMain, '`dot_slash_main` resolves in `$HOME/.node_libraries`'); + s2t.deepEqual(pkg, dotSlashMainPkg); + }); + }); + + st.test('in `$HOME/.node_libraries` and `$HOME/.node_modules`', function (s2t) { + s2t.plan(3); + + resolve('baz', function (err, res, pkg) { + s2t.error(err, 'no error resolving `baz`'); + s2t.equal(res, bazHNMmain, '`baz` resolves in `$HOME/.node_modules` when in both'); + s2t.deepEqual(pkg, bazPkg); + }); + }); + }); + }); + }); +}); diff --git a/node_modules/resolve/test/home_paths_sync.js b/node_modules/resolve/test/home_paths_sync.js new file mode 100644 index 0000000000000000000000000000000000000000..5d2c56fd35d0a3ad072c3549f12695c93654aaed --- /dev/null +++ b/node_modules/resolve/test/home_paths_sync.js @@ -0,0 +1,114 @@ +'use strict'; + +var fs = require('fs'); +var homedir = require('../lib/homedir'); +var path = require('path'); + +var test = require('tape'); +var mkdirp = require('mkdirp'); +var rimraf = require('rimraf'); +var mv = require('mv'); +var copyDir = require('copy-dir'); +var tmp = require('tmp'); + +var HOME = homedir(); + +var hnm = path.join(HOME, '.node_modules'); +var hnl = path.join(HOME, '.node_libraries'); + +var resolve = require('../sync'); + +function makeDir(t, dir, cb) { + mkdirp(dir, function (err) { + if (err) { + cb(err); + } else { + t.teardown(function cleanup() { + rimraf.sync(dir); + }); + cb(); + } + }); +} + +function makeTempDir(t, dir, cb) { + if (fs.existsSync(dir)) { + var tmpResult = tmp.dirSync(); + t.teardown(tmpResult.removeCallback); + var backup = path.join(tmpResult.name, path.basename(dir)); + mv(dir, backup, function (err) { + if (err) { + cb(err); + } else { + t.teardown(function () { + mv(backup, dir, cb); + }); + makeDir(t, dir, cb); + } + }); + } else { + makeDir(t, dir, cb); + } +} + +test('homedir module paths', function (t) { + t.plan(7); + + makeTempDir(t, hnm, function (err) { + t.error(err, 'no error with HNM temp dir'); + if (err) { + return t.end(); + } + + var bazHNMDir = path.join(hnm, 'baz'); + var dotMainDir = path.join(hnm, 'dot_main'); + copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNMDir); + copyDir.sync(path.join(__dirname, 'resolver/dot_main'), dotMainDir); + + var bazHNMmain = path.join(bazHNMDir, 'quux.js'); + t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`'); + var dotMainMain = path.join(dotMainDir, 'index.js'); + t.equal(require.resolve('dot_main'), dotMainMain, 'sanity check: require.resolve finds `dot_main`'); + + makeTempDir(t, hnl, function (err) { + t.error(err, 'no error with HNL temp dir'); + if (err) { + return t.end(); + } + var bazHNLDir = path.join(hnl, 'baz'); + copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNLDir); + + var dotSlashMainDir = path.join(hnl, 'dot_slash_main'); + var dotSlashMainMain = path.join(dotSlashMainDir, 'index.js'); + copyDir.sync(path.join(__dirname, 'resolver/dot_slash_main'), dotSlashMainDir); + + t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`'); + t.equal(require.resolve('dot_slash_main'), dotSlashMainMain, 'sanity check: require.resolve finds HNL `dot_slash_main`'); + + t.test('with temp dirs', function (st) { + st.plan(3); + + st.test('just in `$HOME/.node_modules`', function (s2t) { + s2t.plan(1); + + var res = resolve('dot_main'); + s2t.equal(res, dotMainMain, '`dot_main` resolves in `$HOME/.node_modules`'); + }); + + st.test('just in `$HOME/.node_libraries`', function (s2t) { + s2t.plan(1); + + var res = resolve('dot_slash_main'); + s2t.equal(res, dotSlashMainMain, '`dot_slash_main` resolves in `$HOME/.node_libraries`'); + }); + + st.test('in `$HOME/.node_libraries` and `$HOME/.node_modules`', function (s2t) { + s2t.plan(1); + + var res = resolve('baz'); + s2t.equal(res, bazHNMmain, '`baz` resolves in `$HOME/.node_modules` when in both'); + }); + }); + }); + }); +}); diff --git a/node_modules/resolve/test/mock.js b/node_modules/resolve/test/mock.js new file mode 100644 index 0000000000000000000000000000000000000000..611627549889541b31e4eb8d8f9277871a452076 --- /dev/null +++ b/node_modules/resolve/test/mock.js @@ -0,0 +1,315 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('mock', function (t) { + t.plan(8); + + var files = {}; + files[path.resolve('/foo/bar/baz.js')] = 'beep'; + + var dirs = {}; + dirs[path.resolve('/foo/bar')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file))); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + readFile: function (file, cb) { + cb(null, files[path.resolve(file)]); + }, + realpath: function (file, cb) { + cb(null, file); + } + }; + } + + resolve('./baz', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/baz.js')); + t.equal(pkg, undefined); + }); + + resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/baz.js')); + t.equal(pkg, undefined); + }); + + resolve('baz', opts('/foo/bar'), function (err, res) { + t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); + + resolve('../baz', opts('/foo/bar'), function (err, res) { + t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); +}); + +test('mock from package', function (t) { + t.plan(8); + + var files = {}; + files[path.resolve('/foo/bar/baz.js')] = 'beep'; + + var dirs = {}; + dirs[path.resolve('/foo/bar')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, file)); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + 'package': { main: 'bar' }, + readFile: function (file, cb) { + cb(null, files[file]); + }, + realpath: function (file, cb) { + cb(null, file); + } + }; + } + + resolve('./baz', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/baz.js')); + t.equal(pkg && pkg.main, 'bar'); + }); + + resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/baz.js')); + t.equal(pkg && pkg.main, 'bar'); + }); + + resolve('baz', opts('/foo/bar'), function (err, res) { + t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); + + resolve('../baz', opts('/foo/bar'), function (err, res) { + t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); +}); + +test('mock package', function (t) { + t.plan(2); + + var files = {}; + files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep'; + files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({ + main: './baz.js' + }); + + var dirs = {}; + dirs[path.resolve('/foo')] = true; + dirs[path.resolve('/foo/node_modules')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file))); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + readFile: function (file, cb) { + cb(null, files[path.resolve(file)]); + }, + realpath: function (file, cb) { + cb(null, file); + } + }; + } + + resolve('bar', opts('/foo'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/node_modules/bar/baz.js')); + t.equal(pkg && pkg.main, './baz.js'); + }); +}); + +test('mock package from package', function (t) { + t.plan(2); + + var files = {}; + files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep'; + files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({ + main: './baz.js' + }); + + var dirs = {}; + dirs[path.resolve('/foo')] = true; + dirs[path.resolve('/foo/node_modules')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file))); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + 'package': { main: 'bar' }, + readFile: function (file, cb) { + cb(null, files[path.resolve(file)]); + }, + realpath: function (file, cb) { + cb(null, file); + } + }; + } + + resolve('bar', opts('/foo'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/node_modules/bar/baz.js')); + t.equal(pkg && pkg.main, './baz.js'); + }); +}); + +test('symlinked', function (t) { + t.plan(4); + + var files = {}; + files[path.resolve('/foo/bar/baz.js')] = 'beep'; + files[path.resolve('/foo/bar/symlinked/baz.js')] = 'beep'; + + var dirs = {}; + dirs[path.resolve('/foo/bar')] = true; + dirs[path.resolve('/foo/bar/symlinked')] = true; + + function opts(basedir) { + return { + preserveSymlinks: false, + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file))); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + readFile: function (file, cb) { + cb(null, files[path.resolve(file)]); + }, + realpath: function (file, cb) { + var resolved = path.resolve(file); + + if (resolved.indexOf('symlinked') >= 0) { + cb(null, resolved); + return; + } + + var ext = path.extname(resolved); + + if (ext) { + var dir = path.dirname(resolved); + var base = path.basename(resolved); + cb(null, path.join(dir, 'symlinked', base)); + } else { + cb(null, path.join(resolved, 'symlinked')); + } + } + }; + } + + resolve('./baz', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/symlinked/baz.js')); + t.equal(pkg, undefined); + }); + + resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) { + if (err) return t.fail(err); + t.equal(res, path.resolve('/foo/bar/symlinked/baz.js')); + t.equal(pkg, undefined); + }); +}); + +test('readPackage', function (t) { + t.plan(3); + + var files = {}; + files[path.resolve('/foo/node_modules/bar/something-else.js')] = 'beep'; + files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({ + main: './baz.js' + }); + files[path.resolve('/foo/node_modules/bar/baz.js')] = 'boop'; + + var dirs = {}; + dirs[path.resolve('/foo')] = true; + dirs[path.resolve('/foo/node_modules')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file, cb) { + cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file))); + }, + isDirectory: function (dir, cb) { + cb(null, !!dirs[path.resolve(dir)]); + }, + 'package': { main: 'bar' }, + readFile: function (file, cb) { + cb(null, files[path.resolve(file)]); + }, + realpath: function (file, cb) { + cb(null, file); + } + }; + } + + t.test('with readFile', function (st) { + st.plan(3); + + resolve('bar', opts('/foo'), function (err, res, pkg) { + st.error(err); + st.equal(res, path.resolve('/foo/node_modules/bar/baz.js')); + st.equal(pkg && pkg.main, './baz.js'); + }); + }); + + var readPackage = function (readFile, file, cb) { + var barPackage = path.join('bar', 'package.json'); + if (file.slice(-barPackage.length) === barPackage) { + cb(null, { main: './something-else.js' }); + } else { + cb(null, JSON.parse(files[path.resolve(file)])); + } + }; + + t.test('with readPackage', function (st) { + st.plan(3); + + var options = opts('/foo'); + delete options.readFile; + options.readPackage = readPackage; + resolve('bar', options, function (err, res, pkg) { + st.error(err); + st.equal(res, path.resolve('/foo/node_modules/bar/something-else.js')); + st.equal(pkg && pkg.main, './something-else.js'); + }); + }); + + t.test('with readFile and readPackage', function (st) { + st.plan(1); + + var options = opts('/foo'); + options.readPackage = readPackage; + resolve('bar', options, function (err) { + st.throws(function () { throw err; }, TypeError, 'errors when both readFile and readPackage are provided'); + }); + }); +}); diff --git a/node_modules/resolve/test/mock_sync.js b/node_modules/resolve/test/mock_sync.js new file mode 100644 index 0000000000000000000000000000000000000000..c5a7e2a98030d90cc256c9f4174eafdce395280d --- /dev/null +++ b/node_modules/resolve/test/mock_sync.js @@ -0,0 +1,214 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('mock', function (t) { + t.plan(4); + + var files = {}; + files[path.resolve('/foo/bar/baz.js')] = 'beep'; + + var dirs = {}; + dirs[path.resolve('/foo/bar')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file) { + return Object.prototype.hasOwnProperty.call(files, path.resolve(file)); + }, + isDirectory: function (dir) { + return !!dirs[path.resolve(dir)]; + }, + readFileSync: function (file) { + return files[path.resolve(file)]; + }, + realpathSync: function (file) { + return file; + } + }; + } + + t.equal( + resolve.sync('./baz', opts('/foo/bar')), + path.resolve('/foo/bar/baz.js') + ); + + t.equal( + resolve.sync('./baz.js', opts('/foo/bar')), + path.resolve('/foo/bar/baz.js') + ); + + t.throws(function () { + resolve.sync('baz', opts('/foo/bar')); + }); + + t.throws(function () { + resolve.sync('../baz', opts('/foo/bar')); + }); +}); + +test('mock package', function (t) { + t.plan(1); + + var files = {}; + files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep'; + files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({ + main: './baz.js' + }); + + var dirs = {}; + dirs[path.resolve('/foo')] = true; + dirs[path.resolve('/foo/node_modules')] = true; + + function opts(basedir) { + return { + basedir: path.resolve(basedir), + isFile: function (file) { + return Object.prototype.hasOwnProperty.call(files, path.resolve(file)); + }, + isDirectory: function (dir) { + return !!dirs[path.resolve(dir)]; + }, + readFileSync: function (file) { + return files[path.resolve(file)]; + }, + realpathSync: function (file) { + return file; + } + }; + } + + t.equal( + resolve.sync('bar', opts('/foo')), + path.resolve('/foo/node_modules/bar/baz.js') + ); +}); + +test('symlinked', function (t) { + t.plan(2); + + var files = {}; + files[path.resolve('/foo/bar/baz.js')] = 'beep'; + files[path.resolve('/foo/bar/symlinked/baz.js')] = 'beep'; + + var dirs = {}; + dirs[path.resolve('/foo/bar')] = true; + dirs[path.resolve('/foo/bar/symlinked')] = true; + + function opts(basedir) { + return { + preserveSymlinks: false, + basedir: path.resolve(basedir), + isFile: function (file) { + return Object.prototype.hasOwnProperty.call(files, path.resolve(file)); + }, + isDirectory: function (dir) { + return !!dirs[path.resolve(dir)]; + }, + readFileSync: function (file) { + return files[path.resolve(file)]; + }, + realpathSync: function (file) { + var resolved = path.resolve(file); + + if (resolved.indexOf('symlinked') >= 0) { + return resolved; + } + + var ext = path.extname(resolved); + + if (ext) { + var dir = path.dirname(resolved); + var base = path.basename(resolved); + return path.join(dir, 'symlinked', base); + } + return path.join(resolved, 'symlinked'); + } + }; + } + + t.equal( + resolve.sync('./baz', opts('/foo/bar')), + path.resolve('/foo/bar/symlinked/baz.js') + ); + + t.equal( + resolve.sync('./baz.js', opts('/foo/bar')), + path.resolve('/foo/bar/symlinked/baz.js') + ); +}); + +test('readPackageSync', function (t) { + t.plan(3); + + var files = {}; + files[path.resolve('/foo/node_modules/bar/something-else.js')] = 'beep'; + files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({ + main: './baz.js' + }); + files[path.resolve('/foo/node_modules/bar/baz.js')] = 'boop'; + + var dirs = {}; + dirs[path.resolve('/foo')] = true; + dirs[path.resolve('/foo/node_modules')] = true; + + function opts(basedir, useReadPackage) { + return { + basedir: path.resolve(basedir), + isFile: function (file) { + return Object.prototype.hasOwnProperty.call(files, path.resolve(file)); + }, + isDirectory: function (dir) { + return !!dirs[path.resolve(dir)]; + }, + readFileSync: useReadPackage ? null : function (file) { + return files[path.resolve(file)]; + }, + realpathSync: function (file) { + return file; + } + }; + } + t.test('with readFile', function (st) { + st.plan(1); + + st.equal( + resolve.sync('bar', opts('/foo')), + path.resolve('/foo/node_modules/bar/baz.js') + ); + }); + + var readPackageSync = function (readFileSync, file) { + if (file.indexOf(path.join('bar', 'package.json')) >= 0) { + return { main: './something-else.js' }; + } + return JSON.parse(files[path.resolve(file)]); + }; + + t.test('with readPackage', function (st) { + st.plan(1); + + var options = opts('/foo'); + delete options.readFileSync; + options.readPackageSync = readPackageSync; + + st.equal( + resolve.sync('bar', options), + path.resolve('/foo/node_modules/bar/something-else.js') + ); + }); + + t.test('with readFile and readPackage', function (st) { + st.plan(1); + + var options = opts('/foo'); + options.readPackageSync = readPackageSync; + st.throws( + function () { resolve.sync('bar', options); }, + TypeError, + 'errors when both readFile and readPackage are provided' + ); + }); +}); + diff --git a/node_modules/resolve/test/module_dir.js b/node_modules/resolve/test/module_dir.js new file mode 100644 index 0000000000000000000000000000000000000000..b50e5bb1751d69694deaae36d5f0bc6691498008 --- /dev/null +++ b/node_modules/resolve/test/module_dir.js @@ -0,0 +1,56 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('moduleDirectory strings', function (t) { + t.plan(4); + var dir = path.join(__dirname, 'module_dir'); + var xopts = { + basedir: dir, + moduleDirectory: 'xmodules' + }; + resolve('aaa', xopts, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, '/xmodules/aaa/index.js')); + }); + + var yopts = { + basedir: dir, + moduleDirectory: 'ymodules' + }; + resolve('aaa', yopts, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, '/ymodules/aaa/index.js')); + }); +}); + +test('moduleDirectory array', function (t) { + t.plan(6); + var dir = path.join(__dirname, 'module_dir'); + var aopts = { + basedir: dir, + moduleDirectory: ['xmodules', 'ymodules', 'zmodules'] + }; + resolve('aaa', aopts, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, '/xmodules/aaa/index.js')); + }); + + var bopts = { + basedir: dir, + moduleDirectory: ['zmodules', 'ymodules', 'xmodules'] + }; + resolve('aaa', bopts, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, '/ymodules/aaa/index.js')); + }); + + var copts = { + basedir: dir, + moduleDirectory: ['xmodules', 'ymodules', 'zmodules'] + }; + resolve('bbb', copts, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, '/zmodules/bbb/main.js')); + }); +}); diff --git a/node_modules/resolve/test/module_dir/xmodules/aaa/index.js b/node_modules/resolve/test/module_dir/xmodules/aaa/index.js new file mode 100644 index 0000000000000000000000000000000000000000..dd7cf7b2d022daae3c3f7628fcfb2f8bf186efac --- /dev/null +++ b/node_modules/resolve/test/module_dir/xmodules/aaa/index.js @@ -0,0 +1 @@ +module.exports = function (x) { return x * 100; }; diff --git a/node_modules/resolve/test/module_dir/ymodules/aaa/index.js b/node_modules/resolve/test/module_dir/ymodules/aaa/index.js new file mode 100644 index 0000000000000000000000000000000000000000..ef2d4d4bf76e61fdfe16ef406c9752c6435138f3 --- /dev/null +++ b/node_modules/resolve/test/module_dir/ymodules/aaa/index.js @@ -0,0 +1 @@ +module.exports = function (x) { return x + 100; }; diff --git a/node_modules/resolve/test/module_dir/zmodules/bbb/main.js b/node_modules/resolve/test/module_dir/zmodules/bbb/main.js new file mode 100644 index 0000000000000000000000000000000000000000..e8ba629936a7ad11134ac826edfad2379759c7cb --- /dev/null +++ b/node_modules/resolve/test/module_dir/zmodules/bbb/main.js @@ -0,0 +1 @@ +module.exports = function (n) { return n * 111; }; diff --git a/node_modules/resolve/test/module_dir/zmodules/bbb/package.json b/node_modules/resolve/test/module_dir/zmodules/bbb/package.json new file mode 100644 index 0000000000000000000000000000000000000000..c13b8cf6acfd3344bc2c7969a31d930d933fdf22 --- /dev/null +++ b/node_modules/resolve/test/module_dir/zmodules/bbb/package.json @@ -0,0 +1,3 @@ +{ + "main": "main.js" +} diff --git a/node_modules/resolve/test/node-modules-paths.js b/node_modules/resolve/test/node-modules-paths.js new file mode 100644 index 0000000000000000000000000000000000000000..675441db2ced7b7facac9b7344fe8ea98c16e45b --- /dev/null +++ b/node_modules/resolve/test/node-modules-paths.js @@ -0,0 +1,143 @@ +var test = require('tape'); +var path = require('path'); +var parse = path.parse || require('path-parse'); +var keys = require('object-keys'); + +var nodeModulesPaths = require('../lib/node-modules-paths'); + +var verifyDirs = function verifyDirs(t, start, dirs, moduleDirectories, paths) { + var moduleDirs = [].concat(moduleDirectories || 'node_modules'); + if (paths) { + for (var k = 0; k < paths.length; ++k) { + moduleDirs.push(path.basename(paths[k])); + } + } + + var foundModuleDirs = {}; + var uniqueDirs = {}; + var parsedDirs = {}; + for (var i = 0; i < dirs.length; ++i) { + var parsed = parse(dirs[i]); + if (!foundModuleDirs[parsed.base]) { foundModuleDirs[parsed.base] = 0; } + foundModuleDirs[parsed.base] += 1; + parsedDirs[parsed.dir] = true; + uniqueDirs[dirs[i]] = true; + } + t.equal(keys(parsedDirs).length >= start.split(path.sep).length, true, 'there are >= dirs than "start" has'); + var foundModuleDirNames = keys(foundModuleDirs); + t.deepEqual(foundModuleDirNames, moduleDirs, 'all desired module dirs were found'); + t.equal(keys(uniqueDirs).length, dirs.length, 'all dirs provided were unique'); + + var counts = {}; + for (var j = 0; j < foundModuleDirNames.length; ++j) { + counts[foundModuleDirs[j]] = true; + } + t.equal(keys(counts).length, 1, 'all found module directories had the same count'); +}; + +test('node-modules-paths', function (t) { + t.test('no options', function (t) { + var start = path.join(__dirname, 'resolver'); + var dirs = nodeModulesPaths(start); + + verifyDirs(t, start, dirs); + + t.end(); + }); + + t.test('empty options', function (t) { + var start = path.join(__dirname, 'resolver'); + var dirs = nodeModulesPaths(start, {}); + + verifyDirs(t, start, dirs); + + t.end(); + }); + + t.test('with paths=array option', function (t) { + var start = path.join(__dirname, 'resolver'); + var paths = ['a', 'b']; + var dirs = nodeModulesPaths(start, { paths: paths }); + + verifyDirs(t, start, dirs, null, paths); + + t.end(); + }); + + t.test('with paths=function option', function (t) { + var paths = function paths(request, absoluteStart, getNodeModulesDirs, opts) { + return getNodeModulesDirs().concat(path.join(absoluteStart, 'not node modules', request)); + }; + + var start = path.join(__dirname, 'resolver'); + var dirs = nodeModulesPaths(start, { paths: paths }, 'pkg'); + + verifyDirs(t, start, dirs, null, [path.join(start, 'not node modules', 'pkg')]); + + t.end(); + }); + + t.test('with paths=function skipping node modules resolution', function (t) { + var paths = function paths(request, absoluteStart, getNodeModulesDirs, opts) { + return []; + }; + var start = path.join(__dirname, 'resolver'); + var dirs = nodeModulesPaths(start, { paths: paths }); + t.deepEqual(dirs, [], 'no node_modules was computed'); + t.end(); + }); + + t.test('with moduleDirectory option', function (t) { + var start = path.join(__dirname, 'resolver'); + var moduleDirectory = 'not node modules'; + var dirs = nodeModulesPaths(start, { moduleDirectory: moduleDirectory }); + + verifyDirs(t, start, dirs, moduleDirectory); + + t.end(); + }); + + t.test('with 1 moduleDirectory and paths options', function (t) { + var start = path.join(__dirname, 'resolver'); + var paths = ['a', 'b']; + var moduleDirectory = 'not node modules'; + var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectory }); + + verifyDirs(t, start, dirs, moduleDirectory, paths); + + t.end(); + }); + + t.test('with 1+ moduleDirectory and paths options', function (t) { + var start = path.join(__dirname, 'resolver'); + var paths = ['a', 'b']; + var moduleDirectories = ['not node modules', 'other modules']; + var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories }); + + verifyDirs(t, start, dirs, moduleDirectories, paths); + + t.end(); + }); + + t.test('combine paths correctly on Windows', function (t) { + var start = 'C:\\Users\\username\\myProject\\src'; + var paths = []; + var moduleDirectories = ['node_modules', start]; + var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories }); + + t.equal(dirs.indexOf(path.resolve(start)) > -1, true, 'should contain start dir'); + + t.end(); + }); + + t.test('combine paths correctly on non-Windows', { skip: process.platform === 'win32' }, function (t) { + var start = '/Users/username/git/myProject/src'; + var paths = []; + var moduleDirectories = ['node_modules', '/Users/username/git/myProject/src']; + var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories }); + + t.equal(dirs.indexOf(path.resolve(start)) > -1, true, 'should contain start dir'); + + t.end(); + }); +}); diff --git a/node_modules/resolve/test/node_path.js b/node_modules/resolve/test/node_path.js new file mode 100644 index 0000000000000000000000000000000000000000..e463d6c8c313b3554d5d4e07643fea29cfa86c51 --- /dev/null +++ b/node_modules/resolve/test/node_path.js @@ -0,0 +1,70 @@ +var fs = require('fs'); +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('$NODE_PATH', function (t) { + t.plan(8); + + var isDir = function (dir, cb) { + if (dir === '/node_path' || dir === 'node_path/x') { + return cb(null, true); + } + fs.stat(dir, function (err, stat) { + if (!err) { + return cb(null, stat.isDirectory()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); + }; + + resolve('aaa', { + paths: [ + path.join(__dirname, '/node_path/x'), + path.join(__dirname, '/node_path/y') + ], + basedir: __dirname, + isDirectory: isDir + }, function (err, res) { + t.error(err); + t.equal(res, path.join(__dirname, '/node_path/x/aaa/index.js'), 'aaa resolves'); + }); + + resolve('bbb', { + paths: [ + path.join(__dirname, '/node_path/x'), + path.join(__dirname, '/node_path/y') + ], + basedir: __dirname, + isDirectory: isDir + }, function (err, res) { + t.error(err); + t.equal(res, path.join(__dirname, '/node_path/y/bbb/index.js'), 'bbb resolves'); + }); + + resolve('ccc', { + paths: [ + path.join(__dirname, '/node_path/x'), + path.join(__dirname, '/node_path/y') + ], + basedir: __dirname, + isDirectory: isDir + }, function (err, res) { + t.error(err); + t.equal(res, path.join(__dirname, '/node_path/x/ccc/index.js'), 'ccc resolves'); + }); + + // ensure that relative paths still resolve against the regular `node_modules` correctly + resolve('tap', { + paths: [ + 'node_path' + ], + basedir: path.join(__dirname, 'node_path/x'), + isDirectory: isDir + }, function (err, res) { + var root = require('tap/package.json').main; // eslint-disable-line global-require + t.error(err); + t.equal(res, path.resolve(__dirname, '..', 'node_modules/tap', root), 'tap resolves'); + }); +}); diff --git a/node_modules/resolve/test/node_path/x/aaa/index.js b/node_modules/resolve/test/node_path/x/aaa/index.js new file mode 100644 index 0000000000000000000000000000000000000000..ad70d0bb03f6f433224a681f9055fe9d0a388dfc --- /dev/null +++ b/node_modules/resolve/test/node_path/x/aaa/index.js @@ -0,0 +1 @@ +module.exports = 'A'; diff --git a/node_modules/resolve/test/node_path/x/ccc/index.js b/node_modules/resolve/test/node_path/x/ccc/index.js new file mode 100644 index 0000000000000000000000000000000000000000..a64132e4c7e52cfea76744d826e99932e994c7c1 --- /dev/null +++ b/node_modules/resolve/test/node_path/x/ccc/index.js @@ -0,0 +1 @@ +module.exports = 'C'; diff --git a/node_modules/resolve/test/node_path/y/bbb/index.js b/node_modules/resolve/test/node_path/y/bbb/index.js new file mode 100644 index 0000000000000000000000000000000000000000..4d0f32e24368185d6f3c16445f88b902329025d6 --- /dev/null +++ b/node_modules/resolve/test/node_path/y/bbb/index.js @@ -0,0 +1 @@ +module.exports = 'B'; diff --git a/node_modules/resolve/test/node_path/y/ccc/index.js b/node_modules/resolve/test/node_path/y/ccc/index.js new file mode 100644 index 0000000000000000000000000000000000000000..793315e846687e1dd2bae012fc30676b2a421753 --- /dev/null +++ b/node_modules/resolve/test/node_path/y/ccc/index.js @@ -0,0 +1 @@ +module.exports = 'CY'; diff --git a/node_modules/resolve/test/nonstring.js b/node_modules/resolve/test/nonstring.js new file mode 100644 index 0000000000000000000000000000000000000000..ef63c40f9393dc63219d5e3debb7ed6db175c455 --- /dev/null +++ b/node_modules/resolve/test/nonstring.js @@ -0,0 +1,9 @@ +var test = require('tape'); +var resolve = require('../'); + +test('nonstring', function (t) { + t.plan(1); + resolve(555, function (err, res, pkg) { + t.ok(err); + }); +}); diff --git a/node_modules/resolve/test/pathfilter.js b/node_modules/resolve/test/pathfilter.js new file mode 100644 index 0000000000000000000000000000000000000000..16519aeae51c4fb65b8ccdd69f303a2315358ef3 --- /dev/null +++ b/node_modules/resolve/test/pathfilter.js @@ -0,0 +1,75 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +var resolverDir = path.join(__dirname, '/pathfilter/deep_ref'); + +var pathFilterFactory = function (t) { + return function (pkg, x, remainder) { + t.equal(pkg.version, '1.2.3'); + t.equal(x, path.join(resolverDir, 'node_modules/deep/ref')); + t.equal(remainder, 'ref'); + return 'alt'; + }; +}; + +test('#62: deep module references and the pathFilter', function (t) { + t.test('deep/ref.js', function (st) { + st.plan(3); + + resolve('deep/ref', { basedir: resolverDir }, function (err, res, pkg) { + if (err) st.fail(err); + + st.equal(pkg.version, '1.2.3'); + st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js')); + }); + + var res = resolve.sync('deep/ref', { basedir: resolverDir }); + st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js')); + }); + + t.test('deep/deeper/ref', function (st) { + st.plan(4); + + resolve( + 'deep/deeper/ref', + { basedir: resolverDir }, + function (err, res, pkg) { + if (err) t.fail(err); + st.notEqual(pkg, undefined); + st.equal(pkg.version, '1.2.3'); + st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js')); + } + ); + + var res = resolve.sync( + 'deep/deeper/ref', + { basedir: resolverDir } + ); + st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js')); + }); + + t.test('deep/ref alt', function (st) { + st.plan(8); + + var pathFilter = pathFilterFactory(st); + + var res = resolve.sync( + 'deep/ref', + { basedir: resolverDir, pathFilter: pathFilter } + ); + st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js')); + + resolve( + 'deep/ref', + { basedir: resolverDir, pathFilter: pathFilter }, + function (err, res, pkg) { + if (err) st.fail(err); + st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js')); + st.end(); + } + ); + }); + + t.end(); +}); diff --git a/node_modules/resolve/test/pathfilter/deep_ref/main.js b/node_modules/resolve/test/pathfilter/deep_ref/main.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/precedence.js b/node_modules/resolve/test/precedence.js new file mode 100644 index 0000000000000000000000000000000000000000..2febb598fbc06832ce5b076735cb9f79fb257c7c --- /dev/null +++ b/node_modules/resolve/test/precedence.js @@ -0,0 +1,23 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); + +test('precedence', function (t) { + t.plan(3); + var dir = path.join(__dirname, 'precedence/aaa'); + + resolve('./', { basedir: dir }, function (err, res, pkg) { + t.ifError(err); + t.equal(res, path.join(dir, 'index.js')); + t.equal(pkg.name, 'resolve'); + }); +}); + +test('./ should not load ${dir}.js', function (t) { // eslint-disable-line no-template-curly-in-string + t.plan(1); + var dir = path.join(__dirname, 'precedence/bbb'); + + resolve('./', { basedir: dir }, function (err, res, pkg) { + t.ok(err); + }); +}); diff --git a/node_modules/resolve/test/precedence/aaa.js b/node_modules/resolve/test/precedence/aaa.js new file mode 100644 index 0000000000000000000000000000000000000000..b83a3e7ad98d17536ebc574326276c0fe341b99a --- /dev/null +++ b/node_modules/resolve/test/precedence/aaa.js @@ -0,0 +1 @@ +module.exports = 'wtf'; diff --git a/node_modules/resolve/test/precedence/aaa/index.js b/node_modules/resolve/test/precedence/aaa/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e0f8f6abf72f7fe517abf6c57fae219b831b1cc9 --- /dev/null +++ b/node_modules/resolve/test/precedence/aaa/index.js @@ -0,0 +1 @@ +module.exports = 'okok'; diff --git a/node_modules/resolve/test/precedence/aaa/main.js b/node_modules/resolve/test/precedence/aaa/main.js new file mode 100644 index 0000000000000000000000000000000000000000..93542a965e0ea4fa1a548dcb4491e1defd73afe0 --- /dev/null +++ b/node_modules/resolve/test/precedence/aaa/main.js @@ -0,0 +1 @@ +console.log(require('./')); diff --git a/node_modules/resolve/test/precedence/bbb.js b/node_modules/resolve/test/precedence/bbb.js new file mode 100644 index 0000000000000000000000000000000000000000..2298f47fdd16dcc8375b62d1a15109a5833da926 --- /dev/null +++ b/node_modules/resolve/test/precedence/bbb.js @@ -0,0 +1 @@ +module.exports = '>_<'; diff --git a/node_modules/resolve/test/precedence/bbb/main.js b/node_modules/resolve/test/precedence/bbb/main.js new file mode 100644 index 0000000000000000000000000000000000000000..716b81d4bd463f66980f3cb44588b283bfb23edc --- /dev/null +++ b/node_modules/resolve/test/precedence/bbb/main.js @@ -0,0 +1 @@ +console.log(require('./')); // should throw diff --git a/node_modules/resolve/test/resolver.js b/node_modules/resolve/test/resolver.js new file mode 100644 index 0000000000000000000000000000000000000000..490316594c22ff5937190212579d17d8ff3e5141 --- /dev/null +++ b/node_modules/resolve/test/resolver.js @@ -0,0 +1,595 @@ +var path = require('path'); +var test = require('tape'); +var resolve = require('../'); +var async = require('../async'); + +test('`./async` entry point', function (t) { + t.equal(resolve, async, '`./async` entry point is the same as `main`'); + t.end(); +}); + +test('async foo', function (t) { + t.plan(12); + var dir = path.join(__dirname, 'resolver'); + + resolve('./foo', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo.js')); + t.equal(pkg && pkg.name, 'resolve'); + }); + + resolve('./foo.js', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo.js')); + t.equal(pkg && pkg.name, 'resolve'); + }); + + resolve('./foo', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo.js')); + t.equal(pkg && pkg.main, 'resolver'); + }); + + resolve('./foo.js', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo.js')); + t.equal(pkg.main, 'resolver'); + }); + + resolve('./foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo.js')); + }); + + resolve('foo', { basedir: dir }, function (err) { + t.equal(err.message, "Cannot find module 'foo' from '" + path.resolve(dir) + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); + + // Test that filename is reported as the "from" value when passed. + resolve('foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err) { + t.equal(err.message, "Cannot find module 'foo' from '" + path.join(dir, 'baz.js') + "'"); + }); +}); + +test('bar', function (t) { + t.plan(6); + var dir = path.join(__dirname, 'resolver'); + + resolve('foo', { basedir: dir + '/bar' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js')); + t.equal(pkg, undefined); + }); + + resolve('foo', { basedir: dir + '/bar' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js')); + t.equal(pkg, undefined); + }); + + resolve('foo', { basedir: dir + '/bar', 'package': { main: 'bar' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js')); + t.equal(pkg.main, 'bar'); + }); +}); + +test('baz', function (t) { + t.plan(4); + var dir = path.join(__dirname, 'resolver'); + + resolve('./baz', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'baz/quux.js')); + t.equal(pkg.main, 'quux.js'); + }); + + resolve('./baz', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'baz/quux.js')); + t.equal(pkg.main, 'quux.js'); + }); +}); + +test('biz', function (t) { + t.plan(24); + var dir = path.join(__dirname, 'resolver/biz/node_modules'); + + resolve('./grux', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'grux/index.js')); + t.equal(pkg, undefined); + }); + + resolve('./grux', { basedir: dir, 'package': { main: 'biz' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'grux/index.js')); + t.equal(pkg.main, 'biz'); + }); + + resolve('./garply', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'garply/lib/index.js')); + t.equal(pkg.main, './lib'); + }); + + resolve('./garply', { basedir: dir, 'package': { main: 'biz' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'garply/lib/index.js')); + t.equal(pkg.main, './lib'); + }); + + resolve('tiv', { basedir: dir + '/grux' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'tiv/index.js')); + t.equal(pkg, undefined); + }); + + resolve('tiv', { basedir: dir + '/grux', 'package': { main: 'grux' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'tiv/index.js')); + t.equal(pkg.main, 'grux'); + }); + + resolve('tiv', { basedir: dir + '/garply' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'tiv/index.js')); + t.equal(pkg, undefined); + }); + + resolve('tiv', { basedir: dir + '/garply', 'package': { main: './lib' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'tiv/index.js')); + t.equal(pkg.main, './lib'); + }); + + resolve('grux', { basedir: dir + '/tiv' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'grux/index.js')); + t.equal(pkg, undefined); + }); + + resolve('grux', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'grux/index.js')); + t.equal(pkg.main, 'tiv'); + }); + + resolve('garply', { basedir: dir + '/tiv' }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'garply/lib/index.js')); + t.equal(pkg.main, './lib'); + }); + + resolve('garply', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'garply/lib/index.js')); + t.equal(pkg.main, './lib'); + }); +}); + +test('quux', function (t) { + t.plan(2); + var dir = path.join(__dirname, 'resolver/quux'); + + resolve('./foo', { basedir: dir, 'package': { main: 'quux' } }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'foo/index.js')); + t.equal(pkg.main, 'quux'); + }); +}); + +test('normalize', function (t) { + t.plan(2); + var dir = path.join(__dirname, 'resolver/biz/node_modules/grux'); + + resolve('../grux', { basedir: dir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'index.js')); + t.equal(pkg, undefined); + }); +}); + +test('cup', function (t) { + t.plan(5); + var dir = path.join(__dirname, 'resolver'); + + resolve('./cup', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'cup.coffee')); + }); + + resolve('./cup.coffee', { basedir: dir }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'cup.coffee')); + }); + + resolve('./cup', { basedir: dir, extensions: ['.js'] }, function (err, res) { + t.equal(err.message, "Cannot find module './cup' from '" + path.resolve(dir) + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); + + // Test that filename is reported as the "from" value when passed. + resolve('./cup', { basedir: dir, extensions: ['.js'], filename: path.join(dir, 'cupboard.js') }, function (err, res) { + t.equal(err.message, "Cannot find module './cup' from '" + path.join(dir, 'cupboard.js') + "'"); + }); +}); + +test('mug', function (t) { + t.plan(3); + var dir = path.join(__dirname, 'resolver'); + + resolve('./mug', { basedir: dir }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'mug.js')); + }); + + resolve('./mug', { basedir: dir, extensions: ['.coffee', '.js'] }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(dir, '/mug.coffee')); + }); + + resolve('./mug', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) { + t.equal(res, path.join(dir, '/mug.js')); + }); +}); + +test('other path', function (t) { + t.plan(6); + var resolverDir = path.join(__dirname, 'resolver'); + var dir = path.join(resolverDir, 'bar'); + var otherDir = path.join(resolverDir, 'other_path'); + + resolve('root', { basedir: dir, paths: [otherDir] }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(resolverDir, 'other_path/root.js')); + }); + + resolve('lib/other-lib', { basedir: dir, paths: [otherDir] }, function (err, res) { + if (err) t.fail(err); + t.equal(res, path.join(resolverDir, 'other_path/lib/other-lib.js')); + }); + + resolve('root', { basedir: dir }, function (err, res) { + t.equal(err.message, "Cannot find module 'root' from '" + path.resolve(dir) + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); + + resolve('zzz', { basedir: dir, paths: [otherDir] }, function (err, res) { + t.equal(err.message, "Cannot find module 'zzz' from '" + path.resolve(dir) + "'"); + t.equal(err.code, 'MODULE_NOT_FOUND'); + }); +}); + +test('path iterator', function (t) { + t.plan(2); + + var resolverDir = path.join(__dirname, 'resolver'); + + var exactIterator = function (x, start, getPackageCandidates, opts) { + return [path.join(resolverDir, x)]; + }; + + resolve('baz', { packageIterator: exactIterator }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(resolverDir, 'baz/quux.js')); + t.equal(pkg && pkg.name, 'baz'); + }); +}); + +test('incorrect main', function (t) { + t.plan(1); + + var resolverDir = path.join(__dirname, 'resolver'); + var dir = path.join(resolverDir, 'incorrect_main'); + + resolve('./incorrect_main', { basedir: resolverDir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'index.js')); + }); +}); + +test('missing index', function (t) { + t.plan(2); + + var resolverDir = path.join(__dirname, 'resolver'); + resolve('./missing_index', { basedir: resolverDir }, function (err, res, pkg) { + t.ok(err instanceof Error); + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + }); +}); + +test('missing main', function (t) { + t.plan(1); + + var resolverDir = path.join(__dirname, 'resolver'); + + resolve('./missing_main', { basedir: resolverDir }, function (err, res, pkg) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + }); +}); + +test('null main', function (t) { + t.plan(1); + + var resolverDir = path.join(__dirname, 'resolver'); + + resolve('./null_main', { basedir: resolverDir }, function (err, res, pkg) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + }); +}); + +test('main: false', function (t) { + t.plan(2); + + var basedir = path.join(__dirname, 'resolver'); + var dir = path.join(basedir, 'false_main'); + resolve('./false_main', { basedir: basedir }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal( + res, + path.join(dir, 'index.js'), + '`"main": false`: resolves to `index.js`' + ); + t.deepEqual(pkg, { + name: 'false_main', + main: false + }); + }); +}); + +test('without basedir', function (t) { + t.plan(1); + + var dir = path.join(__dirname, 'resolver/without_basedir'); + var tester = require(path.join(dir, 'main.js')); // eslint-disable-line global-require + + tester(t, function (err, res, pkg) { + if (err) { + t.fail(err); + } else { + t.equal(res, path.join(dir, 'node_modules/mymodule.js')); + } + }); +}); + +test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) { + t.plan(2); + + var dir = path.join(__dirname, 'resolver'); + + resolve('./foo', { basedir: path.join(dir, 'same_names') }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'same_names/foo.js')); + }); + + resolve('./foo/', { basedir: path.join(dir, 'same_names') }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'same_names/foo/index.js')); + }); +}); + +test('#211 - incorrectly resolves module-paths like "." when from inside a folder with a sibling file of the same name', function (t) { + t.plan(2); + + var dir = path.join(__dirname, 'resolver'); + + resolve('./', { basedir: path.join(dir, 'same_names/foo') }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'same_names/foo/index.js')); + }); + + resolve('.', { basedir: path.join(dir, 'same_names/foo') }, function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'same_names/foo/index.js')); + }); +}); + +test('async: #121 - treating an existing file as a dir when no basedir', function (t) { + var testFile = path.basename(__filename); + + t.test('sanity check', function (st) { + st.plan(1); + resolve('./' + testFile, function (err, res, pkg) { + if (err) t.fail(err); + st.equal(res, __filename, 'sanity check'); + }); + }); + + t.test('with a fake directory', function (st) { + st.plan(4); + + resolve('./' + testFile + '/blah', function (err, res, pkg) { + st.ok(err, 'there is an error'); + st.notOk(res, 'no result'); + + st.equal(err && err.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve'); + st.equal( + err && err.message, + 'Cannot find module \'./' + testFile + '/blah\' from \'' + __dirname + '\'', + 'can not find nonexistent module' + ); + st.end(); + }); + }); + + t.end(); +}); + +test('async dot main', function (t) { + var start = new Date(); + t.plan(3); + resolve('./resolver/dot_main', function (err, ret) { + t.notOk(err); + t.equal(ret, path.join(__dirname, 'resolver/dot_main/index.js')); + t.ok(new Date() - start < 50, 'resolve.sync timedout'); + t.end(); + }); +}); + +test('async dot slash main', function (t) { + var start = new Date(); + t.plan(3); + resolve('./resolver/dot_slash_main', function (err, ret) { + t.notOk(err); + t.equal(ret, path.join(__dirname, 'resolver/dot_slash_main/index.js')); + t.ok(new Date() - start < 50, 'resolve.sync timedout'); + t.end(); + }); +}); + +test('not a directory', function (t) { + t.plan(6); + var path = './foo'; + resolve(path, { basedir: __filename }, function (err, res, pkg) { + t.ok(err, 'a non-directory errors'); + t.equal(arguments.length, 1); + t.equal(res, undefined); + t.equal(pkg, undefined); + + t.equal(err && err.message, 'Cannot find module \'' + path + '\' from \'' + __filename + '\''); + t.equal(err && err.code, 'MODULE_NOT_FOUND'); + }); +}); + +test('non-string "main" field in package.json', function (t) { + t.plan(5); + + var dir = path.join(__dirname, 'resolver'); + resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) { + t.ok(err, 'errors on non-string main'); + t.equal(err.message, 'package “invalid_main” `main` must be a string'); + t.equal(err.code, 'INVALID_PACKAGE_MAIN'); + t.equal(res, undefined, 'res is undefined'); + t.equal(pkg, undefined, 'pkg is undefined'); + }); +}); + +test('non-string "main" field in package.json', function (t) { + t.plan(5); + + var dir = path.join(__dirname, 'resolver'); + resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) { + t.ok(err, 'errors on non-string main'); + t.equal(err.message, 'package “invalid_main” `main` must be a string'); + t.equal(err.code, 'INVALID_PACKAGE_MAIN'); + t.equal(res, undefined, 'res is undefined'); + t.equal(pkg, undefined, 'pkg is undefined'); + }); +}); + +test('browser field in package.json', function (t) { + t.plan(3); + + var dir = path.join(__dirname, 'resolver'); + resolve( + './browser_field', + { + basedir: dir, + packageFilter: function packageFilter(pkg) { + if (pkg.browser) { + pkg.main = pkg.browser; // eslint-disable-line no-param-reassign + delete pkg.browser; // eslint-disable-line no-param-reassign + } + return pkg; + } + }, + function (err, res, pkg) { + if (err) t.fail(err); + t.equal(res, path.join(dir, 'browser_field', 'b.js')); + t.equal(pkg && pkg.main, 'b'); + t.equal(pkg && pkg.browser, undefined); + } + ); +}); + +test('absolute paths', function (t) { + t.plan(4); + + var extensionless = __filename.slice(0, -path.extname(__filename).length); + + resolve(__filename, function (err, res) { + t.equal( + res, + __filename, + 'absolute path to this file resolves' + ); + }); + resolve(extensionless, function (err, res) { + t.equal( + res, + __filename, + 'extensionless absolute path to this file resolves' + ); + }); + resolve(__filename, { basedir: process.cwd() }, function (err, res) { + t.equal( + res, + __filename, + 'absolute path to this file with a basedir resolves' + ); + }); + resolve(extensionless, { basedir: process.cwd() }, function (err, res) { + t.equal( + res, + __filename, + 'extensionless absolute path to this file with a basedir resolves' + ); + }); +}); + +test('malformed package.json', function (t) { + /* eslint operator-linebreak: ["error", "before"], function-paren-newline: "off" */ + t.plan( + (3 * 3) // 3 sets of 3 assertions in the final callback + + 2 // 1 readPackage call with malformed package.json + ); + + var basedir = path.join(__dirname, 'resolver/malformed_package_json'); + var expected = path.join(basedir, 'index.js'); + + resolve('./index.js', { basedir: basedir }, function (err, res, pkg) { + t.error(err, 'no error'); + t.equal(res, expected, 'malformed package.json is silently ignored'); + t.equal(pkg, undefined, 'malformed package.json gives an undefined `pkg` argument'); + }); + + resolve( + './index.js', + { + basedir: basedir, + packageFilter: function (pkg, pkgfile, dir) { + t.fail('should not reach here'); + } + }, + function (err, res, pkg) { + t.error(err, 'with packageFilter: no error'); + t.equal(res, expected, 'with packageFilter: malformed package.json is silently ignored'); + t.equal(pkg, undefined, 'with packageFilter: malformed package.json gives an undefined `pkg` argument'); + } + ); + + resolve( + './index.js', + { + basedir: basedir, + readPackage: function (readFile, pkgfile, cb) { + t.equal(pkgfile, path.join(basedir, 'package.json'), 'readPackageSync: `pkgfile` is package.json path'); + readFile(pkgfile, function (err, result) { + try { + cb(null, JSON.parse(result)); + } catch (e) { + t.ok(e instanceof SyntaxError, 'readPackage: malformed package.json parses as a syntax error'); + cb(null); + } + }); + } + }, + function (err, res, pkg) { + t.error(err, 'with readPackage: no error'); + t.equal(res, expected, 'with readPackage: malformed package.json is silently ignored'); + t.equal(pkg, undefined, 'with readPackage: malformed package.json gives an undefined `pkg` argument'); + } + ); +}); diff --git a/node_modules/resolve/test/resolver/baz/doom.js b/node_modules/resolve/test/resolver/baz/doom.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/baz/package.json b/node_modules/resolve/test/resolver/baz/package.json new file mode 100644 index 0000000000000000000000000000000000000000..2f77720b8672a0e2ed8b49636775335884cb3ec0 --- /dev/null +++ b/node_modules/resolve/test/resolver/baz/package.json @@ -0,0 +1,4 @@ +{ + "name": "baz", + "main": "quux.js" +} diff --git a/node_modules/resolve/test/resolver/baz/quux.js b/node_modules/resolve/test/resolver/baz/quux.js new file mode 100644 index 0000000000000000000000000000000000000000..bd816eaba4ca3be8e4d68cfc0ae9f64b5aa712cc --- /dev/null +++ b/node_modules/resolve/test/resolver/baz/quux.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/node_modules/resolve/test/resolver/browser_field/a.js b/node_modules/resolve/test/resolver/browser_field/a.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/browser_field/b.js b/node_modules/resolve/test/resolver/browser_field/b.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/browser_field/package.json b/node_modules/resolve/test/resolver/browser_field/package.json new file mode 100644 index 0000000000000000000000000000000000000000..bf406f0830f8aab6aaec9e3f60f1623fbe6854e6 --- /dev/null +++ b/node_modules/resolve/test/resolver/browser_field/package.json @@ -0,0 +1,5 @@ +{ + "name": "browser_field", + "main": "a", + "browser": "b" +} diff --git a/node_modules/resolve/test/resolver/cup.coffee b/node_modules/resolve/test/resolver/cup.coffee new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/node_modules/resolve/test/resolver/cup.coffee @@ -0,0 +1 @@ + diff --git a/node_modules/resolve/test/resolver/dot_main/index.js b/node_modules/resolve/test/resolver/dot_main/index.js new file mode 100644 index 0000000000000000000000000000000000000000..bd816eaba4ca3be8e4d68cfc0ae9f64b5aa712cc --- /dev/null +++ b/node_modules/resolve/test/resolver/dot_main/index.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/node_modules/resolve/test/resolver/dot_main/package.json b/node_modules/resolve/test/resolver/dot_main/package.json new file mode 100644 index 0000000000000000000000000000000000000000..d7f4fc8079f60aaee820b293537b21d488a1bc31 --- /dev/null +++ b/node_modules/resolve/test/resolver/dot_main/package.json @@ -0,0 +1,3 @@ +{ + "main": "." +} diff --git a/node_modules/resolve/test/resolver/dot_slash_main/index.js b/node_modules/resolve/test/resolver/dot_slash_main/index.js new file mode 100644 index 0000000000000000000000000000000000000000..bd816eaba4ca3be8e4d68cfc0ae9f64b5aa712cc --- /dev/null +++ b/node_modules/resolve/test/resolver/dot_slash_main/index.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/node_modules/resolve/test/resolver/dot_slash_main/package.json b/node_modules/resolve/test/resolver/dot_slash_main/package.json new file mode 100644 index 0000000000000000000000000000000000000000..f51287b9d1e739a8827578a541e89f7e91450615 --- /dev/null +++ b/node_modules/resolve/test/resolver/dot_slash_main/package.json @@ -0,0 +1,3 @@ +{ + "main": "./" +} diff --git a/node_modules/resolve/test/resolver/false_main/index.js b/node_modules/resolve/test/resolver/false_main/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/false_main/package.json b/node_modules/resolve/test/resolver/false_main/package.json new file mode 100644 index 0000000000000000000000000000000000000000..a7416c0c7aa4a1df56419f92dcc7519836db8978 --- /dev/null +++ b/node_modules/resolve/test/resolver/false_main/package.json @@ -0,0 +1,4 @@ +{ + "name": "false_main", + "main": false +} diff --git a/node_modules/resolve/test/resolver/foo.js b/node_modules/resolve/test/resolver/foo.js new file mode 100644 index 0000000000000000000000000000000000000000..bd816eaba4ca3be8e4d68cfc0ae9f64b5aa712cc --- /dev/null +++ b/node_modules/resolve/test/resolver/foo.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/node_modules/resolve/test/resolver/incorrect_main/index.js b/node_modules/resolve/test/resolver/incorrect_main/index.js new file mode 100644 index 0000000000000000000000000000000000000000..bc1fb0a6f4ede17ec05e767ca8ccacbc3015ff70 --- /dev/null +++ b/node_modules/resolve/test/resolver/incorrect_main/index.js @@ -0,0 +1,2 @@ +// this is the actual main file 'index.js', not 'wrong.js' like the package.json would indicate +module.exports = 1; diff --git a/node_modules/resolve/test/resolver/incorrect_main/package.json b/node_modules/resolve/test/resolver/incorrect_main/package.json new file mode 100644 index 0000000000000000000000000000000000000000..b7188041763f8a94977f173a26c41fdbf5f2effb --- /dev/null +++ b/node_modules/resolve/test/resolver/incorrect_main/package.json @@ -0,0 +1,3 @@ +{ + "main": "wrong.js" +} diff --git a/node_modules/resolve/test/resolver/invalid_main/package.json b/node_modules/resolve/test/resolver/invalid_main/package.json new file mode 100644 index 0000000000000000000000000000000000000000..0590748642ae2eadb17726ec3d1b501c94652277 --- /dev/null +++ b/node_modules/resolve/test/resolver/invalid_main/package.json @@ -0,0 +1,7 @@ +{ + "name": "invalid_main", + "main": [ + "why is this a thing", + "srsly omg wtf" + ] +} diff --git a/node_modules/resolve/test/resolver/malformed_package_json/index.js b/node_modules/resolve/test/resolver/malformed_package_json/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/malformed_package_json/package.json b/node_modules/resolve/test/resolver/malformed_package_json/package.json new file mode 100644 index 0000000000000000000000000000000000000000..98232c64fce9360c79f119cf6de8f670f69f1c44 --- /dev/null +++ b/node_modules/resolve/test/resolver/malformed_package_json/package.json @@ -0,0 +1 @@ +{ diff --git a/node_modules/resolve/test/resolver/mug.coffee b/node_modules/resolve/test/resolver/mug.coffee new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/mug.js b/node_modules/resolve/test/resolver/mug.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/multirepo/lerna.json b/node_modules/resolve/test/resolver/multirepo/lerna.json new file mode 100644 index 0000000000000000000000000000000000000000..d6707ca0cd64d48d212b90abe2e72f24b092572f --- /dev/null +++ b/node_modules/resolve/test/resolver/multirepo/lerna.json @@ -0,0 +1,6 @@ +{ + "packages": [ + "packages/*" + ], + "version": "0.0.0" +} diff --git a/node_modules/resolve/test/resolver/multirepo/package.json b/node_modules/resolve/test/resolver/multirepo/package.json new file mode 100644 index 0000000000000000000000000000000000000000..8508f9d2c4a2d7f3dfae7f02aac88f0f38b4ece8 --- /dev/null +++ b/node_modules/resolve/test/resolver/multirepo/package.json @@ -0,0 +1,20 @@ +{ + "name": "monorepo-symlink-test", + "private": true, + "version": "0.0.0", + "description": "", + "main": "index.js", + "scripts": { + "postinstall": "lerna bootstrap", + "test": "node packages/package-a" + }, + "author": "", + "license": "MIT", + "dependencies": { + "jquery": "^3.3.1", + "resolve": "../../../" + }, + "devDependencies": { + "lerna": "^3.4.3" + } +} diff --git a/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js b/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js new file mode 100644 index 0000000000000000000000000000000000000000..8875a32df0ffc4eda94bb6c6dd9855ac604820c4 --- /dev/null +++ b/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js @@ -0,0 +1,35 @@ +'use strict'; + +var assert = require('assert'); +var path = require('path'); +var resolve = require('resolve'); + +var basedir = __dirname + '/node_modules/@my-scope/package-b'; + +var expected = path.join(__dirname, '../../node_modules/jquery/dist/jquery.js'); + +/* + * preserveSymlinks === false + * will search NPM package from + * - packages/package-b/node_modules + * - packages/node_modules + * - node_modules + */ +assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: false }), expected); +assert.equal(resolve.sync('../../node_modules/jquery', { basedir: basedir, preserveSymlinks: false }), expected); + +/* + * preserveSymlinks === true + * will search NPM package from + * - packages/package-a/node_modules/@my-scope/packages/package-b/node_modules + * - packages/package-a/node_modules/@my-scope/packages/node_modules + * - packages/package-a/node_modules/@my-scope/node_modules + * - packages/package-a/node_modules/node_modules + * - packages/package-a/node_modules + * - packages/node_modules + * - node_modules + */ +assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: true }), expected); +assert.equal(resolve.sync('../../../../../node_modules/jquery', { basedir: basedir, preserveSymlinks: true }), expected); + +console.log(' * all monorepo paths successfully resolved through symlinks'); diff --git a/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json b/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json new file mode 100644 index 0000000000000000000000000000000000000000..204de51e05878b3451223ba654c5e4a790ef1e51 --- /dev/null +++ b/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json @@ -0,0 +1,14 @@ +{ + "name": "@my-scope/package-a", + "version": "0.0.0", + "private": true, + "description": "", + "license": "MIT", + "main": "index.js", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "dependencies": { + "@my-scope/package-b": "^0.0.0" + } +} diff --git a/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js b/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json b/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json new file mode 100644 index 0000000000000000000000000000000000000000..f57c3b5f5e454d3948e1a4bc5aec10fdcd79d8b5 --- /dev/null +++ b/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json @@ -0,0 +1,14 @@ +{ + "name": "@my-scope/package-b", + "private": true, + "version": "0.0.0", + "description": "", + "license": "MIT", + "main": "index.js", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "dependencies": { + "@my-scope/package-a": "^0.0.0" + } +} diff --git a/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js b/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js new file mode 100644 index 0000000000000000000000000000000000000000..9b4846a82a77be169097f041f791070732229cb7 --- /dev/null +++ b/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js @@ -0,0 +1,26 @@ +var a = require.resolve('buffer/').replace(process.cwd(), '$CWD'); +var b; +var c; + +var test = function test() { + console.log(a, ': require.resolve, preserveSymlinks ' + (process.execArgv.indexOf('preserve-symlinks') > -1 ? 'true' : 'false')); + console.log(b, ': preserveSymlinks true'); + console.log(c, ': preserveSymlinks false'); + + if (a !== b && a !== c) { + throw 'async: no match'; + } + console.log('async: success! a matched either b or c\n'); +}; + +require('resolve')('buffer/', { preserveSymlinks: true }, function (err, result) { + if (err) { throw err; } + b = result.replace(process.cwd(), '$CWD'); + if (b && c) { test(); } +}); +require('resolve')('buffer/', { preserveSymlinks: false }, function (err, result) { + if (err) { throw err; } + c = result.replace(process.cwd(), '$CWD'); + if (b && c) { test(); } +}); + diff --git a/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json b/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json new file mode 100644 index 0000000000000000000000000000000000000000..acfe9e9517720ab5532c247052fadb214c5ffef3 --- /dev/null +++ b/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json @@ -0,0 +1,15 @@ +{ + "name": "mylib", + "version": "0.0.0", + "description": "", + "private": true, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "buffer": "*" + } +} diff --git a/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js b/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js new file mode 100644 index 0000000000000000000000000000000000000000..3283efc2ec81f8d2a62be9a1fd28a192403ce549 --- /dev/null +++ b/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js @@ -0,0 +1,12 @@ +var a = require.resolve('buffer/').replace(process.cwd(), '$CWD'); +var b = require('resolve').sync('buffer/', { preserveSymlinks: true }).replace(process.cwd(), '$CWD'); +var c = require('resolve').sync('buffer/', { preserveSymlinks: false }).replace(process.cwd(), '$CWD'); + +console.log(a, ': require.resolve, preserveSymlinks ' + (process.execArgv.indexOf('preserve-symlinks') > -1 ? 'true' : 'false')); +console.log(b, ': preserveSymlinks true'); +console.log(c, ': preserveSymlinks false'); + +if (a !== b && a !== c) { + throw 'sync: no match'; +} +console.log('sync: success! a matched either b or c\n'); diff --git a/node_modules/resolve/test/resolver/other_path/root.js b/node_modules/resolve/test/resolver/other_path/root.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/quux/foo/index.js b/node_modules/resolve/test/resolver/quux/foo/index.js new file mode 100644 index 0000000000000000000000000000000000000000..bd816eaba4ca3be8e4d68cfc0ae9f64b5aa712cc --- /dev/null +++ b/node_modules/resolve/test/resolver/quux/foo/index.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/node_modules/resolve/test/resolver/same_names/foo.js b/node_modules/resolve/test/resolver/same_names/foo.js new file mode 100644 index 0000000000000000000000000000000000000000..888cae37af95c51299d735439cf896dc4d5aaafc --- /dev/null +++ b/node_modules/resolve/test/resolver/same_names/foo.js @@ -0,0 +1 @@ +module.exports = 42; diff --git a/node_modules/resolve/test/resolver/same_names/foo/index.js b/node_modules/resolve/test/resolver/same_names/foo/index.js new file mode 100644 index 0000000000000000000000000000000000000000..bd816eaba4ca3be8e4d68cfc0ae9f64b5aa712cc --- /dev/null +++ b/node_modules/resolve/test/resolver/same_names/foo/index.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js b/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep b/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/resolver/symlinked/package/bar.js b/node_modules/resolve/test/resolver/symlinked/package/bar.js new file mode 100644 index 0000000000000000000000000000000000000000..cb1c2c01e753b31f6e550e991a82022f7acf8638 --- /dev/null +++ b/node_modules/resolve/test/resolver/symlinked/package/bar.js @@ -0,0 +1 @@ +module.exports = 'bar'; diff --git a/node_modules/resolve/test/resolver/symlinked/package/package.json b/node_modules/resolve/test/resolver/symlinked/package/package.json new file mode 100644 index 0000000000000000000000000000000000000000..8e1b585914a7b46cd21d5d8709ac08bc1fe84962 --- /dev/null +++ b/node_modules/resolve/test/resolver/symlinked/package/package.json @@ -0,0 +1,3 @@ +{ + "main": "bar.js" +} \ No newline at end of file diff --git a/node_modules/resolve/test/resolver/without_basedir/main.js b/node_modules/resolve/test/resolver/without_basedir/main.js new file mode 100644 index 0000000000000000000000000000000000000000..5b31975be69da5efea03fac676afa5f2199831be --- /dev/null +++ b/node_modules/resolve/test/resolver/without_basedir/main.js @@ -0,0 +1,5 @@ +var resolve = require('../../../'); + +module.exports = function (t, cb) { + resolve('mymodule', null, cb); +}; diff --git a/node_modules/resolve/test/resolver_sync.js b/node_modules/resolve/test/resolver_sync.js new file mode 100644 index 0000000000000000000000000000000000000000..53453d666471400a33250d107b973554a64caf2c --- /dev/null +++ b/node_modules/resolve/test/resolver_sync.js @@ -0,0 +1,726 @@ +var path = require('path'); +var fs = require('fs'); +var test = require('tape'); + +var resolve = require('../'); +var sync = require('../sync'); + +var requireResolveSupportsPaths = require.resolve.length > 1 + && !(/^v12\.[012]\./).test(process.version); // broken in v12.0-12.2, see https://github.com/nodejs/node/issues/27794 + +test('`./sync` entry point', function (t) { + t.equal(resolve.sync, sync, '`./sync` entry point is the same as `.sync` on `main`'); + t.end(); +}); + +test('foo', function (t) { + var dir = path.join(__dirname, 'resolver'); + + t.equal( + resolve.sync('./foo', { basedir: dir }), + path.join(dir, 'foo.js'), + './foo' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./foo', { basedir: dir }), + require.resolve('./foo', { paths: [dir] }), + './foo: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync('./foo.js', { basedir: dir }), + path.join(dir, 'foo.js'), + './foo.js' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./foo.js', { basedir: dir }), + require.resolve('./foo.js', { paths: [dir] }), + './foo.js: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync('./foo.js', { basedir: dir, filename: path.join(dir, 'bar.js') }), + path.join(dir, 'foo.js') + ); + + t.throws(function () { + resolve.sync('foo', { basedir: dir }); + }); + + // Test that filename is reported as the "from" value when passed. + t.throws( + function () { + resolve.sync('foo', { basedir: dir, filename: path.join(dir, 'bar.js') }); + }, + { + name: 'Error', + message: "Cannot find module 'foo' from '" + path.join(dir, 'bar.js') + "'" + } + ); + + t.end(); +}); + +test('bar', function (t) { + var dir = path.join(__dirname, 'resolver'); + + var basedir = path.join(dir, 'bar'); + + t.equal( + resolve.sync('foo', { basedir: basedir }), + path.join(dir, 'bar/node_modules/foo/index.js'), + 'foo in bar' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('foo', { basedir: basedir }), + require.resolve('foo', { paths: [basedir] }), + 'foo in bar: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('baz', function (t) { + var dir = path.join(__dirname, 'resolver'); + + t.equal( + resolve.sync('./baz', { basedir: dir }), + path.join(dir, 'baz/quux.js'), + './baz' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./baz', { basedir: dir }), + require.resolve('./baz', { paths: [dir] }), + './baz: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('biz', function (t) { + var dir = path.join(__dirname, 'resolver/biz/node_modules'); + + t.equal( + resolve.sync('./grux', { basedir: dir }), + path.join(dir, 'grux/index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./grux', { basedir: dir }), + require.resolve('./grux', { paths: [dir] }), + './grux: resolve.sync === require.resolve' + ); + } + + var tivDir = path.join(dir, 'grux'); + t.equal( + resolve.sync('tiv', { basedir: tivDir }), + path.join(dir, 'tiv/index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('tiv', { basedir: tivDir }), + require.resolve('tiv', { paths: [tivDir] }), + 'tiv: resolve.sync === require.resolve' + ); + } + + var gruxDir = path.join(dir, 'tiv'); + t.equal( + resolve.sync('grux', { basedir: gruxDir }), + path.join(dir, 'grux/index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('grux', { basedir: gruxDir }), + require.resolve('grux', { paths: [gruxDir] }), + 'grux: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('normalize', function (t) { + var dir = path.join(__dirname, 'resolver/biz/node_modules/grux'); + + t.equal( + resolve.sync('../grux', { basedir: dir }), + path.join(dir, 'index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('../grux', { basedir: dir }), + require.resolve('../grux', { paths: [dir] }), + '../grux: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('cup', function (t) { + var dir = path.join(__dirname, 'resolver'); + + t.equal( + resolve.sync('./cup', { + basedir: dir, + extensions: ['.js', '.coffee'] + }), + path.join(dir, 'cup.coffee'), + './cup -> ./cup.coffee' + ); + + t.equal( + resolve.sync('./cup.coffee', { basedir: dir }), + path.join(dir, 'cup.coffee'), + './cup.coffee' + ); + + t.throws(function () { + resolve.sync('./cup', { + basedir: dir, + extensions: ['.js'] + }); + }); + + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./cup.coffee', { basedir: dir, extensions: ['.js', '.coffee'] }), + require.resolve('./cup.coffee', { paths: [dir] }), + './cup.coffee: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('mug', function (t) { + var dir = path.join(__dirname, 'resolver'); + + t.equal( + resolve.sync('./mug', { basedir: dir }), + path.join(dir, 'mug.js'), + './mug -> ./mug.js' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./mug', { basedir: dir }), + require.resolve('./mug', { paths: [dir] }), + './mug: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync('./mug', { + basedir: dir, + extensions: ['.coffee', '.js'] + }), + path.join(dir, 'mug.coffee'), + './mug -> ./mug.coffee' + ); + + t.equal( + resolve.sync('./mug', { + basedir: dir, + extensions: ['.js', '.coffee'] + }), + path.join(dir, 'mug.js'), + './mug -> ./mug.js' + ); + + t.end(); +}); + +test('other path', function (t) { + var resolverDir = path.join(__dirname, 'resolver'); + var dir = path.join(resolverDir, 'bar'); + var otherDir = path.join(resolverDir, 'other_path'); + + t.equal( + resolve.sync('root', { + basedir: dir, + paths: [otherDir] + }), + path.join(resolverDir, 'other_path/root.js') + ); + + t.equal( + resolve.sync('lib/other-lib', { + basedir: dir, + paths: [otherDir] + }), + path.join(resolverDir, 'other_path/lib/other-lib.js') + ); + + t.throws(function () { + resolve.sync('root', { basedir: dir }); + }); + + t.throws(function () { + resolve.sync('zzz', { + basedir: dir, + paths: [otherDir] + }); + }); + + t.end(); +}); + +test('path iterator', function (t) { + var resolverDir = path.join(__dirname, 'resolver'); + + var exactIterator = function (x, start, getPackageCandidates, opts) { + return [path.join(resolverDir, x)]; + }; + + t.equal( + resolve.sync('baz', { packageIterator: exactIterator }), + path.join(resolverDir, 'baz/quux.js') + ); + + t.end(); +}); + +test('incorrect main', function (t) { + var resolverDir = path.join(__dirname, 'resolver'); + var dir = path.join(resolverDir, 'incorrect_main'); + + t.equal( + resolve.sync('./incorrect_main', { basedir: resolverDir }), + path.join(dir, 'index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./incorrect_main', { basedir: resolverDir }), + require.resolve('./incorrect_main', { paths: [resolverDir] }), + './incorrect_main: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('missing index', function (t) { + t.plan(requireResolveSupportsPaths ? 2 : 1); + + var resolverDir = path.join(__dirname, 'resolver'); + try { + resolve.sync('./missing_index', { basedir: resolverDir }); + t.fail('did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + if (requireResolveSupportsPaths) { + try { + require.resolve('./missing_index', { basedir: resolverDir }); + t.fail('require.resolve did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + } +}); + +test('missing main', function (t) { + var resolverDir = path.join(__dirname, 'resolver'); + + try { + resolve.sync('./missing_main', { basedir: resolverDir }); + t.fail('require.resolve did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + if (requireResolveSupportsPaths) { + try { + resolve.sync('./missing_main', { basedir: resolverDir }); + t.fail('require.resolve did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + } + + t.end(); +}); + +test('null main', function (t) { + var resolverDir = path.join(__dirname, 'resolver'); + + try { + resolve.sync('./null_main', { basedir: resolverDir }); + t.fail('require.resolve did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + if (requireResolveSupportsPaths) { + try { + resolve.sync('./null_main', { basedir: resolverDir }); + t.fail('require.resolve did not fail'); + } catch (err) { + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code'); + } + } + + t.end(); +}); + +test('main: false', function (t) { + var basedir = path.join(__dirname, 'resolver'); + var dir = path.join(basedir, 'false_main'); + t.equal( + resolve.sync('./false_main', { basedir: basedir }), + path.join(dir, 'index.js'), + '`"main": false`: resolves to `index.js`' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./false_main', { basedir: basedir }), + require.resolve('./false_main', { paths: [basedir] }), + '`"main": false`: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +var stubStatSync = function stubStatSync(fn) { + var statSync = fs.statSync; + try { + fs.statSync = function () { + throw new EvalError('Unknown Error'); + }; + return fn(); + } finally { + fs.statSync = statSync; + } +}; + +test('#79 - re-throw non ENOENT errors from stat', function (t) { + var dir = path.join(__dirname, 'resolver'); + + stubStatSync(function () { + t.throws(function () { + resolve.sync('foo', { basedir: dir }); + }, /Unknown Error/); + }); + + t.end(); +}); + +test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) { + var dir = path.join(__dirname, 'resolver'); + var basedir = path.join(dir, 'same_names'); + + t.equal( + resolve.sync('./foo', { basedir: basedir }), + path.join(dir, 'same_names/foo.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./foo', { basedir: basedir }), + require.resolve('./foo', { paths: [basedir] }), + './foo: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync('./foo/', { basedir: basedir }), + path.join(dir, 'same_names/foo/index.js') + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./foo/', { basedir: basedir }), + require.resolve('./foo/', { paths: [basedir] }), + './foo/: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('#211 - incorrectly resolves module-paths like "." when from inside a folder with a sibling file of the same name', function (t) { + var dir = path.join(__dirname, 'resolver'); + var basedir = path.join(dir, 'same_names/foo'); + + t.equal( + resolve.sync('./', { basedir: basedir }), + path.join(dir, 'same_names/foo/index.js'), + './' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./', { basedir: basedir }), + require.resolve('./', { paths: [basedir] }), + './: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync('.', { basedir: basedir }), + path.join(dir, 'same_names/foo/index.js'), + '.' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('.', { basedir: basedir }), + require.resolve('.', { paths: [basedir] }), + '.: resolve.sync === require.resolve', + { todo: true } + ); + } + + t.end(); +}); + +test('sync: #121 - treating an existing file as a dir when no basedir', function (t) { + var testFile = path.basename(__filename); + + t.test('sanity check', function (st) { + st.equal( + resolve.sync('./' + testFile), + __filename, + 'sanity check' + ); + st.equal( + resolve.sync('./' + testFile), + require.resolve('./' + testFile), + 'sanity check: resolve.sync === require.resolve' + ); + + st.end(); + }); + + t.test('with a fake directory', function (st) { + function run() { return resolve.sync('./' + testFile + '/blah'); } + + st.throws(run, 'throws an error'); + + try { + run(); + } catch (e) { + st.equal(e.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve'); + st.equal( + e.message, + 'Cannot find module \'./' + testFile + '/blah\' from \'' + __dirname + '\'', + 'can not find nonexistent module' + ); + } + + st.end(); + }); + + t.end(); +}); + +test('sync dot main', function (t) { + var start = new Date(); + + t.equal( + resolve.sync('./resolver/dot_main'), + path.join(__dirname, 'resolver/dot_main/index.js'), + './resolver/dot_main' + ); + t.equal( + resolve.sync('./resolver/dot_main'), + require.resolve('./resolver/dot_main'), + './resolver/dot_main: resolve.sync === require.resolve' + ); + + t.ok(new Date() - start < 50, 'resolve.sync timedout'); + + t.end(); +}); + +test('sync dot slash main', function (t) { + var start = new Date(); + + t.equal( + resolve.sync('./resolver/dot_slash_main'), + path.join(__dirname, 'resolver/dot_slash_main/index.js') + ); + t.equal( + resolve.sync('./resolver/dot_slash_main'), + require.resolve('./resolver/dot_slash_main'), + './resolver/dot_slash_main: resolve.sync === require.resolve' + ); + + t.ok(new Date() - start < 50, 'resolve.sync timedout'); + + t.end(); +}); + +test('not a directory', function (t) { + var path = './foo'; + try { + resolve.sync(path, { basedir: __filename }); + t.fail(); + } catch (err) { + t.ok(err, 'a non-directory errors'); + t.equal(err && err.message, 'Cannot find module \'' + path + "' from '" + __filename + "'"); + t.equal(err && err.code, 'MODULE_NOT_FOUND'); + } + t.end(); +}); + +test('non-string "main" field in package.json', function (t) { + var dir = path.join(__dirname, 'resolver'); + try { + var result = resolve.sync('./invalid_main', { basedir: dir }); + t.equal(result, undefined, 'result should not exist'); + t.fail('should not get here'); + } catch (err) { + t.ok(err, 'errors on non-string main'); + t.equal(err.message, 'package “invalid_main” `main` must be a string'); + t.equal(err.code, 'INVALID_PACKAGE_MAIN'); + } + t.end(); +}); + +test('non-string "main" field in package.json', function (t) { + var dir = path.join(__dirname, 'resolver'); + try { + var result = resolve.sync('./invalid_main', { basedir: dir }); + t.equal(result, undefined, 'result should not exist'); + t.fail('should not get here'); + } catch (err) { + t.ok(err, 'errors on non-string main'); + t.equal(err.message, 'package “invalid_main” `main` must be a string'); + t.equal(err.code, 'INVALID_PACKAGE_MAIN'); + } + t.end(); +}); + +test('browser field in package.json', function (t) { + var dir = path.join(__dirname, 'resolver'); + var res = resolve.sync('./browser_field', { + basedir: dir, + packageFilter: function packageFilter(pkg) { + if (pkg.browser) { + pkg.main = pkg.browser; // eslint-disable-line no-param-reassign + delete pkg.browser; // eslint-disable-line no-param-reassign + } + return pkg; + } + }); + t.equal(res, path.join(dir, 'browser_field', 'b.js')); + t.end(); +}); + +test('absolute paths', function (t) { + var extensionless = __filename.slice(0, -path.extname(__filename).length); + + t.equal( + resolve.sync(__filename), + __filename, + 'absolute path to this file resolves' + ); + t.equal( + resolve.sync(__filename), + require.resolve(__filename), + 'absolute path to this file: resolve.sync === require.resolve' + ); + + t.equal( + resolve.sync(extensionless), + __filename, + 'extensionless absolute path to this file resolves' + ); + t.equal( + resolve.sync(__filename), + require.resolve(__filename), + 'absolute path to this file: resolve.sync === require.resolve' + ); + + t.equal( + resolve.sync(__filename, { basedir: process.cwd() }), + __filename, + 'absolute path to this file with a basedir resolves' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync(__filename, { basedir: process.cwd() }), + require.resolve(__filename, { paths: [process.cwd()] }), + 'absolute path to this file + basedir: resolve.sync === require.resolve' + ); + } + + t.equal( + resolve.sync(extensionless, { basedir: process.cwd() }), + __filename, + 'extensionless absolute path to this file with a basedir resolves' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync(extensionless, { basedir: process.cwd() }), + require.resolve(extensionless, { paths: [process.cwd()] }), + 'extensionless absolute path to this file + basedir: resolve.sync === require.resolve' + ); + } + + t.end(); +}); + +test('malformed package.json', function (t) { + t.plan(5 + (requireResolveSupportsPaths ? 1 : 0)); + + var basedir = path.join(__dirname, 'resolver/malformed_package_json'); + var expected = path.join(basedir, 'index.js'); + + t.equal( + resolve.sync('./index.js', { basedir: basedir }), + expected, + 'malformed package.json is silently ignored' + ); + if (requireResolveSupportsPaths) { + t.equal( + resolve.sync('./index.js', { basedir: basedir }), + require.resolve('./index.js', { paths: [basedir] }), + 'malformed package.json: resolve.sync === require.resolve' + ); + } + + var res1 = resolve.sync( + './index.js', + { + basedir: basedir, + packageFilter: function (pkg, pkgfile, dir) { + t.fail('should not reach here'); + } + } + ); + + t.equal( + res1, + expected, + 'with packageFilter: malformed package.json is silently ignored' + ); + + var res2 = resolve.sync( + './index.js', + { + basedir: basedir, + readPackageSync: function (readFileSync, pkgfile) { + t.equal(pkgfile, path.join(basedir, 'package.json'), 'readPackageSync: `pkgfile` is package.json path'); + var result = String(readFileSync(pkgfile)); + try { + return JSON.parse(result); + } catch (e) { + t.ok(e instanceof SyntaxError, 'readPackageSync: malformed package.json parses as a syntax error'); + } + } + } + ); + + t.equal( + res2, + expected, + 'with readPackageSync: malformed package.json is silently ignored' + ); +}); diff --git a/node_modules/resolve/test/shadowed_core.js b/node_modules/resolve/test/shadowed_core.js new file mode 100644 index 0000000000000000000000000000000000000000..3a5f4fcff728f305c2d3d17a416fea4cbfe31f6b --- /dev/null +++ b/node_modules/resolve/test/shadowed_core.js @@ -0,0 +1,54 @@ +var test = require('tape'); +var resolve = require('../'); +var path = require('path'); + +test('shadowed core modules still return core module', function (t) { + t.plan(2); + + resolve('util', { basedir: path.join(__dirname, 'shadowed_core') }, function (err, res) { + t.ifError(err); + t.equal(res, 'util'); + }); +}); + +test('shadowed core modules still return core module [sync]', function (t) { + t.plan(1); + + var res = resolve.sync('util', { basedir: path.join(__dirname, 'shadowed_core') }); + + t.equal(res, 'util'); +}); + +test('shadowed core modules return shadow when appending `/`', function (t) { + t.plan(2); + + resolve('util/', { basedir: path.join(__dirname, 'shadowed_core') }, function (err, res) { + t.ifError(err); + t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js')); + }); +}); + +test('shadowed core modules return shadow when appending `/` [sync]', function (t) { + t.plan(1); + + var res = resolve.sync('util/', { basedir: path.join(__dirname, 'shadowed_core') }); + + t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js')); +}); + +test('shadowed core modules return shadow with `includeCoreModules: false`', function (t) { + t.plan(2); + + resolve('util', { basedir: path.join(__dirname, 'shadowed_core'), includeCoreModules: false }, function (err, res) { + t.ifError(err); + t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js')); + }); +}); + +test('shadowed core modules return shadow with `includeCoreModules: false` [sync]', function (t) { + t.plan(1); + + var res = resolve.sync('util', { basedir: path.join(__dirname, 'shadowed_core'), includeCoreModules: false }); + + t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js')); +}); diff --git a/node_modules/resolve/test/shadowed_core/node_modules/util/index.js b/node_modules/resolve/test/shadowed_core/node_modules/util/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/resolve/test/subdirs.js b/node_modules/resolve/test/subdirs.js new file mode 100644 index 0000000000000000000000000000000000000000..b7b8450a9ef231940eca37b8fe951310147a9470 --- /dev/null +++ b/node_modules/resolve/test/subdirs.js @@ -0,0 +1,13 @@ +var test = require('tape'); +var resolve = require('../'); +var path = require('path'); + +test('subdirs', function (t) { + t.plan(2); + + var dir = path.join(__dirname, '/subdirs'); + resolve('a/b/c/x.json', { basedir: dir }, function (err, res) { + t.ifError(err); + t.equal(res, path.join(dir, 'node_modules/a/b/c/x.json')); + }); +}); diff --git a/node_modules/resolve/test/symlinks.js b/node_modules/resolve/test/symlinks.js new file mode 100644 index 0000000000000000000000000000000000000000..35f881afb8c7e043567cf85953d9046c011cec3d --- /dev/null +++ b/node_modules/resolve/test/symlinks.js @@ -0,0 +1,176 @@ +var path = require('path'); +var fs = require('fs'); +var test = require('tape'); +var map = require('array.prototype.map'); +var resolve = require('../'); + +var symlinkDir = path.join(__dirname, 'resolver', 'symlinked', 'symlink'); +var packageDir = path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'package'); +var modADir = path.join(__dirname, 'symlinks', 'source', 'node_modules', 'mod-a'); +var symlinkModADir = path.join(__dirname, 'symlinks', 'dest', 'node_modules', 'mod-a'); +try { + fs.unlinkSync(symlinkDir); +} catch (err) {} +try { + fs.unlinkSync(packageDir); +} catch (err) {} +try { + fs.unlinkSync(modADir); +} catch (err) {} +try { + fs.unlinkSync(symlinkModADir); +} catch (err) {} + +try { + fs.symlinkSync('./_/symlink_target', symlinkDir, 'dir'); +} catch (err) { + // if fails then it is probably on Windows and lets try to create a junction + fs.symlinkSync(path.join(__dirname, 'resolver', 'symlinked', '_', 'symlink_target') + '\\', symlinkDir, 'junction'); +} +try { + fs.symlinkSync('../../package', packageDir, 'dir'); +} catch (err) { + // if fails then it is probably on Windows and lets try to create a junction + fs.symlinkSync(path.join(__dirname, '..', '..', 'package') + '\\', packageDir, 'junction'); +} +try { + fs.symlinkSync('../../source/node_modules/mod-a', symlinkModADir, 'dir'); +} catch (err) { + // if fails then it is probably on Windows and lets try to create a junction + fs.symlinkSync(path.join(__dirname, '..', '..', 'source', 'node_modules', 'mod-a') + '\\', symlinkModADir, 'junction'); +} + +test('symlink', function (t) { + t.plan(2); + + resolve('foo', { basedir: symlinkDir, preserveSymlinks: false }, function (err, res, pkg) { + t.error(err); + t.equal(res, path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js')); + }); +}); + +test('sync symlink when preserveSymlinks = true', function (t) { + t.plan(4); + + resolve('foo', { basedir: symlinkDir }, function (err, res, pkg) { + t.ok(err, 'there is an error'); + t.notOk(res, 'no result'); + + t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve'); + t.equal( + err && err.message, + 'Cannot find module \'foo\' from \'' + symlinkDir + '\'', + 'can not find nonexistent module' + ); + }); +}); + +test('sync symlink', function (t) { + var start = new Date(); + t.doesNotThrow(function () { + t.equal( + resolve.sync('foo', { basedir: symlinkDir, preserveSymlinks: false }), + path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js') + ); + }); + t.ok(new Date() - start < 50, 'resolve.sync timedout'); + t.end(); +}); + +test('sync symlink when preserveSymlinks = true', function (t) { + t.throws(function () { + resolve.sync('foo', { basedir: symlinkDir }); + }, /Cannot find module 'foo'/); + t.end(); +}); + +test('sync symlink from node_modules to other dir when preserveSymlinks = false', function (t) { + var basedir = path.join(__dirname, 'resolver', 'symlinked', '_'); + var fn = resolve.sync('package', { basedir: basedir, preserveSymlinks: false }); + + t.equal(fn, path.resolve(__dirname, 'resolver/symlinked/package/bar.js')); + t.end(); +}); + +test('async symlink from node_modules to other dir when preserveSymlinks = false', function (t) { + t.plan(2); + var basedir = path.join(__dirname, 'resolver', 'symlinked', '_'); + resolve('package', { basedir: basedir, preserveSymlinks: false }, function (err, result) { + t.notOk(err, 'no error'); + t.equal(result, path.resolve(__dirname, 'resolver/symlinked/package/bar.js')); + }); +}); + +test('packageFilter', function (t) { + function relative(x) { + return path.relative(__dirname, x); + } + + function testPackageFilter(preserveSymlinks) { + return function (st) { + st.plan('is 1.x' ? 3 : 5); // eslint-disable-line no-constant-condition + + var destMain = 'symlinks/dest/node_modules/mod-a/index.js'; + var destPkg = 'symlinks/dest/node_modules/mod-a/package.json'; + var sourceMain = 'symlinks/source/node_modules/mod-a/index.js'; + var sourcePkg = 'symlinks/source/node_modules/mod-a/package.json'; + var destDir = path.join(__dirname, 'symlinks', 'dest'); + + /* eslint multiline-comment-style: 0 */ + /* v2.x will restore these tests + var packageFilterPath = []; + var actualPath = resolve.sync('mod-a', { + basedir: destDir, + preserveSymlinks: preserveSymlinks, + packageFilter: function (pkg, pkgfile, dir) { + packageFilterPath.push(pkgfile); + } + }); + st.equal( + relative(actualPath), + path.normalize(preserveSymlinks ? destMain : sourceMain), + 'sync: actual path is correct' + ); + st.deepEqual( + map(packageFilterPath, relative), + map(preserveSymlinks ? [destPkg, destPkg] : [sourcePkg, sourcePkg], path.normalize), + 'sync: packageFilter pkgfile arg is correct' + ); + */ + + var asyncPackageFilterPath = []; + resolve( + 'mod-a', + { + basedir: destDir, + preserveSymlinks: preserveSymlinks, + packageFilter: function (pkg, pkgfile) { + asyncPackageFilterPath.push(pkgfile); + } + }, + function (err, actualPath) { + st.error(err, 'no error'); + st.equal( + relative(actualPath), + path.normalize(preserveSymlinks ? destMain : sourceMain), + 'async: actual path is correct' + ); + st.deepEqual( + map(asyncPackageFilterPath, relative), + map( + preserveSymlinks ? [destPkg, destPkg, destPkg] : [sourcePkg, sourcePkg, sourcePkg], + path.normalize + ), + 'async: packageFilter pkgfile arg is correct' + ); + } + ); + }; + } + + t.test('preserveSymlinks: false', testPackageFilter(false)); + + t.test('preserveSymlinks: true', testPackageFilter(true)); + + t.end(); +}); diff --git a/node_modules/reusify/.coveralls.yml b/node_modules/reusify/.coveralls.yml new file mode 100644 index 0000000000000000000000000000000000000000..359f68349d7f771cb7d1f349efe22fc00e836782 --- /dev/null +++ b/node_modules/reusify/.coveralls.yml @@ -0,0 +1 @@ +repo_token: yIxhFqtaaz5iGVYfie9mODehFYogm8S8L diff --git a/node_modules/reusify/.travis.yml b/node_modules/reusify/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..1970476817b18f62db3e24c93164e3b87cffbb57 --- /dev/null +++ b/node_modules/reusify/.travis.yml @@ -0,0 +1,28 @@ +language: node_js +sudo: false + +node_js: + - 9 + - 8 + - 7 + - 6 + - 5 + - 4 + - 4.0 + - iojs-v3 + - iojs-v2 + - iojs-v1 + - 0.12 + - 0.10 + +cache: + directories: + - node_modules + +after_script: +- npm run coverage + +notifications: + email: + on_success: never + on_failure: always diff --git a/node_modules/reusify/LICENSE b/node_modules/reusify/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..fbf3a01d8c7558bf611480e7a38b3abb48f76b42 --- /dev/null +++ b/node_modules/reusify/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Matteo Collina + +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/reusify/README.md b/node_modules/reusify/README.md new file mode 100644 index 0000000000000000000000000000000000000000..badcb7ccfec55d05947f74adf94616ef83e8e0d5 --- /dev/null +++ b/node_modules/reusify/README.md @@ -0,0 +1,145 @@ +# reusify + +[![npm version][npm-badge]][npm-url] +[![Build Status][travis-badge]][travis-url] +[![Coverage Status][coveralls-badge]][coveralls-url] + +Reuse your objects and functions for maximum speed. This technique will +make any function run ~10% faster. You call your functions a +lot, and it adds up quickly in hot code paths. + +``` +$ node benchmarks/createNoCodeFunction.js +Total time 53133 +Total iterations 100000000 +Iteration/s 1882069.5236482036 + +$ node benchmarks/reuseNoCodeFunction.js +Total time 50617 +Total iterations 100000000 +Iteration/s 1975620.838848608 +``` + +The above benchmark uses fibonacci to simulate a real high-cpu load. +The actual numbers might differ for your use case, but the difference +should not. + +The benchmark was taken using Node v6.10.0. + +This library was extracted from +[fastparallel](http://npm.im/fastparallel). + +## Example + +```js +var reusify = require('reusify') +var fib = require('reusify/benchmarks/fib') +var instance = reusify(MyObject) + +// get an object from the cache, +// or creates a new one when cache is empty +var obj = instance.get() + +// set the state +obj.num = 100 +obj.func() + +// reset the state. +// if the state contains any external object +// do not use delete operator (it is slow) +// prefer set them to null +obj.num = 0 + +// store an object in the cache +instance.release(obj) + +function MyObject () { + // you need to define this property + // so V8 can compile MyObject into an + // hidden class + this.next = null + this.num = 0 + + var that = this + + // this function is never reallocated, + // so it can be optimized by V8 + this.func = function () { + if (null) { + // do nothing + } else { + // calculates fibonacci + fib(that.num) + } + } +} +``` + +The above example was intended for synchronous code, let's see async: +```js +var reusify = require('reusify') +var instance = reusify(MyObject) + +for (var i = 0; i < 100; i++) { + getData(i, console.log) +} + +function getData (value, cb) { + var obj = instance.get() + + obj.value = value + obj.cb = cb + obj.run() +} + +function MyObject () { + this.next = null + this.value = null + + var that = this + + this.run = function () { + asyncOperation(that.value, that.handle) + } + + this.handle = function (err, result) { + that.cb(err, result) + that.value = null + that.cb = null + instance.release(that) + } +} +``` + +Also note how in the above examples, the code, that consumes an istance of `MyObject`, +reset the state to initial condition, just before storing it in the cache. +That's needed so that every subsequent request for an instance from the cache, +could get a clean instance. + +## Why + +It is faster because V8 doesn't have to collect all the functions you +create. On a short-lived benchmark, it is as fast as creating the +nested function, but on a longer time frame it creates less +pressure on the garbage collector. + +## Other examples +If you want to see some complex example, checkout [middie](https://github.com/fastify/middie) and [steed](https://github.com/mcollina/steed). + +## Acknowledgements + +Thanks to [Trevor Norris](https://github.com/trevnorris) for +getting me down the rabbit hole of performance, and thanks to [Mathias +Buss](http://github.com/mafintosh) for suggesting me to share this +trick. + +## License + +MIT + +[npm-badge]: https://badge.fury.io/js/reusify.svg +[npm-url]: https://badge.fury.io/js/reusify +[travis-badge]: https://api.travis-ci.org/mcollina/reusify.svg +[travis-url]: https://travis-ci.org/mcollina/reusify +[coveralls-badge]: https://coveralls.io/repos/mcollina/reusify/badge.svg?branch=master&service=github +[coveralls-url]: https://coveralls.io/github/mcollina/reusify?branch=master diff --git a/node_modules/reusify/benchmarks/createNoCodeFunction.js b/node_modules/reusify/benchmarks/createNoCodeFunction.js new file mode 100644 index 0000000000000000000000000000000000000000..ce1aac7b7a6968b0377eac9c4fd9dcc4836a8bac --- /dev/null +++ b/node_modules/reusify/benchmarks/createNoCodeFunction.js @@ -0,0 +1,30 @@ +'use strict' + +var fib = require('./fib') +var max = 100000000 +var start = Date.now() + +// create a funcion with the typical error +// pattern, that delegates the heavy load +// to something else +function createNoCodeFunction () { + /* eslint no-constant-condition: "off" */ + var num = 100 + + ;(function () { + if (null) { + // do nothing + } else { + fib(num) + } + })() +} + +for (var i = 0; i < max; i++) { + createNoCodeFunction() +} + +var time = Date.now() - start +console.log('Total time', time) +console.log('Total iterations', max) +console.log('Iteration/s', max / time * 1000) diff --git a/node_modules/reusify/benchmarks/fib.js b/node_modules/reusify/benchmarks/fib.js new file mode 100644 index 0000000000000000000000000000000000000000..e22cc48dec9efa13644385c395272f16a9e45462 --- /dev/null +++ b/node_modules/reusify/benchmarks/fib.js @@ -0,0 +1,13 @@ +'use strict' + +function fib (num) { + var fib = [] + + fib[0] = 0 + fib[1] = 1 + for (var i = 2; i <= num; i++) { + fib[i] = fib[i - 2] + fib[i - 1] + } +} + +module.exports = fib diff --git a/node_modules/reusify/benchmarks/reuseNoCodeFunction.js b/node_modules/reusify/benchmarks/reuseNoCodeFunction.js new file mode 100644 index 0000000000000000000000000000000000000000..3358d6e50d8ffbf1ce1559213ba63ffc50c5f752 --- /dev/null +++ b/node_modules/reusify/benchmarks/reuseNoCodeFunction.js @@ -0,0 +1,38 @@ +'use strict' + +var reusify = require('../') +var fib = require('./fib') +var instance = reusify(MyObject) +var max = 100000000 +var start = Date.now() + +function reuseNoCodeFunction () { + var obj = instance.get() + obj.num = 100 + obj.func() + obj.num = 0 + instance.release(obj) +} + +function MyObject () { + this.next = null + var that = this + this.num = 0 + this.func = function () { + /* eslint no-constant-condition: "off" */ + if (null) { + // do nothing + } else { + fib(that.num) + } + } +} + +for (var i = 0; i < max; i++) { + reuseNoCodeFunction() +} + +var time = Date.now() - start +console.log('Total time', time) +console.log('Total iterations', max) +console.log('Iteration/s', max / time * 1000) diff --git a/node_modules/reusify/package.json b/node_modules/reusify/package.json new file mode 100644 index 0000000000000000000000000000000000000000..ee66aeecb6a95e46c41642c69a8993a23c1c2fdc --- /dev/null +++ b/node_modules/reusify/package.json @@ -0,0 +1,45 @@ +{ + "name": "reusify", + "version": "1.0.4", + "description": "Reuse objects and functions with style", + "main": "reusify.js", + "scripts": { + "lint": "standard", + "test": "tape test.js | faucet", + "istanbul": "istanbul cover tape test.js", + "coverage": "npm run istanbul; cat coverage/lcov.info | coveralls" + }, + "pre-commit": [ + "lint", + "test" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/mcollina/reusify.git" + }, + "keywords": [ + "reuse", + "object", + "performance", + "function", + "fast" + ], + "author": "Matteo Collina ", + "license": "MIT", + "bugs": { + "url": "https://github.com/mcollina/reusify/issues" + }, + "homepage": "https://github.com/mcollina/reusify#readme", + "engines": { + "node": ">=0.10.0", + "iojs": ">=1.0.0" + }, + "devDependencies": { + "coveralls": "^2.13.3", + "faucet": "0.0.1", + "istanbul": "^0.4.5", + "pre-commit": "^1.2.2", + "standard": "^10.0.3", + "tape": "^4.8.0" + } +} diff --git a/node_modules/reusify/reusify.js b/node_modules/reusify/reusify.js new file mode 100644 index 0000000000000000000000000000000000000000..e6f36f3a83688ef6945cc9f7624c4e37539bd132 --- /dev/null +++ b/node_modules/reusify/reusify.js @@ -0,0 +1,33 @@ +'use strict' + +function reusify (Constructor) { + var head = new Constructor() + var tail = head + + function get () { + var current = head + + if (current.next) { + head = current.next + } else { + head = new Constructor() + tail = head + } + + current.next = null + + return current + } + + function release (obj) { + tail.next = obj + tail = obj + } + + return { + get: get, + release: release + } +} + +module.exports = reusify diff --git a/node_modules/reusify/test.js b/node_modules/reusify/test.js new file mode 100644 index 0000000000000000000000000000000000000000..929cfd71980d81ea9899bddeb8551b0e881c460b --- /dev/null +++ b/node_modules/reusify/test.js @@ -0,0 +1,66 @@ +'use strict' + +var test = require('tape') +var reusify = require('./') + +test('reuse objects', function (t) { + t.plan(6) + + function MyObject () { + t.pass('constructor called') + this.next = null + } + + var instance = reusify(MyObject) + var obj = instance.get() + + t.notEqual(obj, instance.get(), 'two instance created') + t.notOk(obj.next, 'next must be null') + + instance.release(obj) + + // the internals keeps a hot copy ready for reuse + // putting this one back in the queue + instance.release(instance.get()) + + // comparing the old one with the one we got + // never do this in real code, after release you + // should never reuse that instance + t.equal(obj, instance.get(), 'instance must be reused') +}) + +test('reuse more than 2 objects', function (t) { + function MyObject () { + t.pass('constructor called') + this.next = null + } + + var instance = reusify(MyObject) + var obj = instance.get() + var obj2 = instance.get() + var obj3 = instance.get() + + t.notOk(obj.next, 'next must be null') + t.notOk(obj2.next, 'next must be null') + t.notOk(obj3.next, 'next must be null') + + t.notEqual(obj, obj2) + t.notEqual(obj, obj3) + t.notEqual(obj3, obj2) + + instance.release(obj) + instance.release(obj2) + instance.release(obj3) + + // skip one + instance.get() + + var obj4 = instance.get() + var obj5 = instance.get() + var obj6 = instance.get() + + t.equal(obj4, obj) + t.equal(obj5, obj2) + t.equal(obj6, obj3) + t.end() +}) diff --git a/node_modules/run-parallel/LICENSE b/node_modules/run-parallel/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..c7e6852752b72edbf0eb6b2adef53f0863ae5876 --- /dev/null +++ b/node_modules/run-parallel/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +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/run-parallel/README.md b/node_modules/run-parallel/README.md new file mode 100644 index 0000000000000000000000000000000000000000..edc3da452c67ee8c442593f8cf668809fb0fd615 --- /dev/null +++ b/node_modules/run-parallel/README.md @@ -0,0 +1,85 @@ +# run-parallel [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] + +[travis-image]: https://img.shields.io/travis/feross/run-parallel/master.svg +[travis-url]: https://travis-ci.org/feross/run-parallel +[npm-image]: https://img.shields.io/npm/v/run-parallel.svg +[npm-url]: https://npmjs.org/package/run-parallel +[downloads-image]: https://img.shields.io/npm/dm/run-parallel.svg +[downloads-url]: https://npmjs.org/package/run-parallel +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com + +### Run an array of functions in parallel + +![parallel](https://raw.githubusercontent.com/feross/run-parallel/master/img.png) [![Sauce Test Status](https://saucelabs.com/browser-matrix/run-parallel.svg)](https://saucelabs.com/u/run-parallel) + +### install + +``` +npm install run-parallel +``` + +### usage + +#### parallel(tasks, [callback]) + +Run the `tasks` array of functions in parallel, without waiting until the previous +function has completed. If any of the functions pass an error to its callback, the main +`callback` is immediately called with the value of the error. Once the `tasks` have +completed, the results are passed to the final `callback` as an array. + +It is also possible to use an object instead of an array. Each property will be run as a +function and the results will be passed to the final `callback` as an object instead of +an array. This can be a more readable way of handling the results. + +##### arguments + +- `tasks` - An array or object containing functions to run. Each function is passed a +`callback(err, result)` which it must call on completion with an error `err` (which can +be `null`) and an optional `result` value. +- `callback(err, results)` - An optional callback to run once all the functions have +completed. This function gets a results array (or object) containing all the result +arguments passed to the task callbacks. + +##### example + +```js +var parallel = require('run-parallel') + +parallel([ + function (callback) { + setTimeout(function () { + callback(null, 'one') + }, 200) + }, + function (callback) { + setTimeout(function () { + callback(null, 'two') + }, 100) + } +], +// optional callback +function (err, results) { + // the results array will equal ['one','two'] even though + // the second function had a shorter timeout. +}) +``` + +This module is basically equavalent to +[`async.parallel`](https://github.com/caolan/async#paralleltasks-callback), but it's +handy to just have the one function you need instead of the kitchen sink. Modularity! +Especially handy if you're serving to the browser and need to reduce your javascript +bundle size. + +Works great in the browser with [browserify](http://browserify.org/)! + +### see also + +- [run-auto](https://github.com/feross/run-auto) +- [run-parallel-limit](https://github.com/feross/run-parallel-limit) +- [run-series](https://github.com/feross/run-series) +- [run-waterfall](https://github.com/feross/run-waterfall) + +### license + +MIT. Copyright (c) [Feross Aboukhadijeh](http://feross.org). diff --git a/node_modules/run-parallel/index.js b/node_modules/run-parallel/index.js new file mode 100644 index 0000000000000000000000000000000000000000..6307141d651c3abad5b03121fe133a54bcd35643 --- /dev/null +++ b/node_modules/run-parallel/index.js @@ -0,0 +1,51 @@ +/*! run-parallel. MIT License. Feross Aboukhadijeh */ +module.exports = runParallel + +const queueMicrotask = require('queue-microtask') + +function runParallel (tasks, cb) { + let results, pending, keys + let isSync = true + + if (Array.isArray(tasks)) { + results = [] + pending = tasks.length + } else { + keys = Object.keys(tasks) + results = {} + pending = keys.length + } + + function done (err) { + function end () { + if (cb) cb(err, results) + cb = null + } + if (isSync) queueMicrotask(end) + else end() + } + + function each (i, err, result) { + results[i] = result + if (--pending === 0 || err) { + done(err) + } + } + + if (!pending) { + // empty + done(null) + } else if (keys) { + // object + keys.forEach(function (key) { + tasks[key](function (err, result) { each(key, err, result) }) + }) + } else { + // array + tasks.forEach(function (task, i) { + task(function (err, result) { each(i, err, result) }) + }) + } + + isSync = false +} diff --git a/node_modules/run-parallel/package.json b/node_modules/run-parallel/package.json new file mode 100644 index 0000000000000000000000000000000000000000..1f14757881f8359fd5507d8bfa0cfc6f3c924fdc --- /dev/null +++ b/node_modules/run-parallel/package.json @@ -0,0 +1,58 @@ +{ + "name": "run-parallel", + "description": "Run an array of functions in parallel", + "version": "1.2.0", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "https://feross.org" + }, + "bugs": { + "url": "https://github.com/feross/run-parallel/issues" + }, + "dependencies": { + "queue-microtask": "^1.2.2" + }, + "devDependencies": { + "airtap": "^3.0.0", + "standard": "*", + "tape": "^5.0.1" + }, + "homepage": "https://github.com/feross/run-parallel", + "keywords": [ + "parallel", + "async", + "function", + "callback", + "asynchronous", + "run", + "array", + "run parallel" + ], + "license": "MIT", + "main": "index.js", + "repository": { + "type": "git", + "url": "git://github.com/feross/run-parallel.git" + }, + "scripts": { + "test": "standard && npm run test-node && npm run test-browser", + "test-browser": "airtap -- test/*.js", + "test-browser-local": "airtap --local -- test/*.js", + "test-node": "tape test/*.js" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] +} diff --git a/node_modules/source-map-js/CHANGELOG.md b/node_modules/source-map-js/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..4cd530754652bc75e7a0456b23cb12511204600f --- /dev/null +++ b/node_modules/source-map-js/CHANGELOG.md @@ -0,0 +1,320 @@ +# Change Log + +## 1.0.2 + +* Add types for path imports ([#13](https://github.com/7rulnik/source-map-js/pull/13)) [@TrySound](https://github.com/TrySound) + +## 1.0.1 + +* Remove cleanComments optimization ([#10](https://github.com/7rulnik/source-map-js/pull/10)) [@ai](https://github.com/ai) + +## 1.0.0 + +* Fix package.json#typings field ([#6](https://github.com/7rulnik/source-map-js/pull/6)) [@chalkygames123](https://github.com/chalkygames123) + +* Reduce memory usage of eachMapping w/ loop ([#5](https://github.com/7rulnik/source-map-js/pull/5)) [@noppa](https://github.com/noppa) + +* Reduce npm package size ([#7](https://github.com/7rulnik/source-map-js/pull/7)) [@ai](https://github.com/ai) + +---------- +# It doesn't related to this fork: + +## 0.5.6 + +* Fix for regression when people were using numbers as names in source maps. See + #236. + +## 0.5.5 + +* Fix "regression" of unsupported, implementation behavior that half the world + happens to have come to depend on. See #235. + +* Fix regression involving function hoisting in SpiderMonkey. See #233. + +## 0.5.4 + +* Large performance improvements to source-map serialization. See #228 and #229. + +## 0.5.3 + +* Do not include unnecessary distribution files. See + commit ef7006f8d1647e0a83fdc60f04f5a7ca54886f86. + +## 0.5.2 + +* Include browser distributions of the library in package.json's `files`. See + issue #212. + +## 0.5.1 + +* Fix latent bugs in IndexedSourceMapConsumer.prototype._parseMappings. See + ff05274becc9e6e1295ed60f3ea090d31d843379. + +## 0.5.0 + +* Node 0.8 is no longer supported. + +* Use webpack instead of dryice for bundling. + +* Big speedups serializing source maps. See pull request #203. + +* Fix a bug with `SourceMapConsumer.prototype.sourceContentFor` and sources that + explicitly start with the source root. See issue #199. + +## 0.4.4 + +* Fix an issue where using a `SourceMapGenerator` after having created a + `SourceMapConsumer` from it via `SourceMapConsumer.fromSourceMap` failed. See + issue #191. + +* Fix an issue with where `SourceMapGenerator` would mistakenly consider + different mappings as duplicates of each other and avoid generating them. See + issue #192. + +## 0.4.3 + +* A very large number of performance improvements, particularly when parsing + source maps. Collectively about 75% of time shaved off of the source map + parsing benchmark! + +* Fix a bug in `SourceMapConsumer.prototype.allGeneratedPositionsFor` and fuzzy + searching in the presence of a column option. See issue #177. + +* Fix a bug with joining a source and its source root when the source is above + the root. See issue #182. + +* Add the `SourceMapConsumer.prototype.hasContentsOfAllSources` method to + determine when all sources' contents are inlined into the source map. See + issue #190. + +## 0.4.2 + +* Add an `.npmignore` file so that the benchmarks aren't pulled down by + dependent projects. Issue #169. + +* Add an optional `column` argument to + `SourceMapConsumer.prototype.allGeneratedPositionsFor` and better handle lines + with no mappings. Issues #172 and #173. + +## 0.4.1 + +* Fix accidentally defining a global variable. #170. + +## 0.4.0 + +* The default direction for fuzzy searching was changed back to its original + direction. See #164. + +* There is now a `bias` option you can supply to `SourceMapConsumer` to control + the fuzzy searching direction. See #167. + +* About an 8% speed up in parsing source maps. See #159. + +* Added a benchmark for parsing and generating source maps. + +## 0.3.0 + +* Change the default direction that searching for positions fuzzes when there is + not an exact match. See #154. + +* Support for environments using json2.js for JSON serialization. See #156. + +## 0.2.0 + +* Support for consuming "indexed" source maps which do not have any remote + sections. See pull request #127. This introduces a minor backwards + incompatibility if you are monkey patching `SourceMapConsumer.prototype` + methods. + +## 0.1.43 + +* Performance improvements for `SourceMapGenerator` and `SourceNode`. See issue + #148 for some discussion and issues #150, #151, and #152 for implementations. + +## 0.1.42 + +* Fix an issue where `SourceNode`s from different versions of the source-map + library couldn't be used in conjunction with each other. See issue #142. + +## 0.1.41 + +* Fix a bug with getting the source content of relative sources with a "./" + prefix. See issue #145 and [Bug 1090768](bugzil.la/1090768). + +* Add the `SourceMapConsumer.prototype.computeColumnSpans` method to compute the + column span of each mapping. + +* Add the `SourceMapConsumer.prototype.allGeneratedPositionsFor` method to find + all generated positions associated with a given original source and line. + +## 0.1.40 + +* Performance improvements for parsing source maps in SourceMapConsumer. + +## 0.1.39 + +* Fix a bug where setting a source's contents to null before any source content + had been set before threw a TypeError. See issue #131. + +## 0.1.38 + +* Fix a bug where finding relative paths from an empty path were creating + absolute paths. See issue #129. + +## 0.1.37 + +* Fix a bug where if the source root was an empty string, relative source paths + would turn into absolute source paths. Issue #124. + +## 0.1.36 + +* Allow the `names` mapping property to be an empty string. Issue #121. + +## 0.1.35 + +* A third optional parameter was added to `SourceNode.fromStringWithSourceMap` + to specify a path that relative sources in the second parameter should be + relative to. Issue #105. + +* If no file property is given to a `SourceMapGenerator`, then the resulting + source map will no longer have a `null` file property. The property will + simply not exist. Issue #104. + +* Fixed a bug where consecutive newlines were ignored in `SourceNode`s. + Issue #116. + +## 0.1.34 + +* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103. + +* Fix bug involving source contents and the + `SourceMapGenerator.prototype.applySourceMap`. Issue #100. + +## 0.1.33 + +* Fix some edge cases surrounding path joining and URL resolution. + +* Add a third parameter for relative path to + `SourceMapGenerator.prototype.applySourceMap`. + +* Fix issues with mappings and EOLs. + +## 0.1.32 + +* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns + (issue 92). + +* Fixed test runner to actually report number of failed tests as its process + exit code. + +* Fixed a typo when reporting bad mappings (issue 87). + +## 0.1.31 + +* Delay parsing the mappings in SourceMapConsumer until queried for a source + location. + +* Support Sass source maps (which at the time of writing deviate from the spec + in small ways) in SourceMapConsumer. + +## 0.1.30 + +* Do not join source root with a source, when the source is a data URI. + +* Extend the test runner to allow running single specific test files at a time. + +* Performance improvements in `SourceNode.prototype.walk` and + `SourceMapConsumer.prototype.eachMapping`. + +* Source map browser builds will now work inside Workers. + +* Better error messages when attempting to add an invalid mapping to a + `SourceMapGenerator`. + +## 0.1.29 + +* Allow duplicate entries in the `names` and `sources` arrays of source maps + (usually from TypeScript) we are parsing. Fixes github issue 72. + +## 0.1.28 + +* Skip duplicate mappings when creating source maps from SourceNode; github + issue 75. + +## 0.1.27 + +* Don't throw an error when the `file` property is missing in SourceMapConsumer, + we don't use it anyway. + +## 0.1.26 + +* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70. + +## 0.1.25 + +* Make compatible with browserify + +## 0.1.24 + +* Fix issue with absolute paths and `file://` URIs. See + https://bugzilla.mozilla.org/show_bug.cgi?id=885597 + +## 0.1.23 + +* Fix issue with absolute paths and sourcesContent, github issue 64. + +## 0.1.22 + +* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21. + +## 0.1.21 + +* Fixed handling of sources that start with a slash so that they are relative to + the source root's host. + +## 0.1.20 + +* Fixed github issue #43: absolute URLs aren't joined with the source root + anymore. + +## 0.1.19 + +* Using Travis CI to run tests. + +## 0.1.18 + +* Fixed a bug in the handling of sourceRoot. + +## 0.1.17 + +* Added SourceNode.fromStringWithSourceMap. + +## 0.1.16 + +* Added missing documentation. + +* Fixed the generating of empty mappings in SourceNode. + +## 0.1.15 + +* Added SourceMapGenerator.applySourceMap. + +## 0.1.14 + +* The sourceRoot is now handled consistently. + +## 0.1.13 + +* Added SourceMapGenerator.fromSourceMap. + +## 0.1.12 + +* SourceNode now generates empty mappings too. + +## 0.1.11 + +* Added name support to SourceNode. + +## 0.1.10 + +* Added sourcesContent support to the customer and generator. diff --git a/node_modules/source-map-js/LICENSE b/node_modules/source-map-js/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..ed1b7cf27e97e136918e87ad7bb33baf169f0171 --- /dev/null +++ b/node_modules/source-map-js/LICENSE @@ -0,0 +1,28 @@ + +Copyright (c) 2009-2011, Mozilla Foundation and 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. + +* Neither the names of the Mozilla Foundation nor the names of project + contributors may 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 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 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/source-map-js/README.md b/node_modules/source-map-js/README.md new file mode 100644 index 0000000000000000000000000000000000000000..ba01846ca29c808a9f4b799d0f0600b0892180c6 --- /dev/null +++ b/node_modules/source-map-js/README.md @@ -0,0 +1,758 @@ +# Source Map JS + +[![NPM](https://nodei.co/npm/source-map-js.png?downloads=true&downloadRank=true)](https://www.npmjs.com/package/source-map-js) + +Difference between original [source-map](https://github.com/mozilla/source-map): + +> TL,DR: it's fork of original source-map@0.6, but with perfomance optimizations. + +This journey starts from [source-map@0.7.0](https://github.com/mozilla/source-map/blob/master/CHANGELOG.md#070). Some part of it was rewritten to Rust and WASM and API became async. + +It's still a major block for many libraries like PostCSS or Sass for example because they need to migrate the whole API to the async way. This is the reason why 0.6.1 has 2x more downloads than 0.7.3 while it's faster several times. + +![Downloads count](media/downloads.png) + +More important that WASM version has some optimizations in JS code too. This is why [community asked to create branch for 0.6 version](https://github.com/mozilla/source-map/issues/324) and port these optimizations but, sadly, the answer was «no». A bit later I discovered [the issue](https://github.com/mozilla/source-map/issues/370) created by [Ben Rothman (@benthemonkey)](https://github.com/benthemonkey) with no response at all. + +[Roman Dvornov (@lahmatiy)](https://github.com/lahmatiy) wrote a [serveral posts](https://t.me/gorshochekvarit/76) (russian, only, sorry) about source-map library in his own Telegram channel. He mentioned the article [«Maybe you don't need Rust and WASM to speed up your JS»](https://mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html) written by [Vyacheslav Egorov (@mraleph)](https://github.com/mraleph). This article contains optimizations and hacks that lead to almost the same performance compare to WASM implementation. + +I decided to fork the original source-map and port these optimizations from the article and several others PR from the original source-map. + +--------- + +This is a library to generate and consume the source map format +[described here][format]. + +[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit + +## Use with Node + + $ npm install source-map-js + + + +-------------------------------------------------------------------------------- + + + + + +## 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) + - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap) + - [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 +var 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' +}; + +var smc = new SourceMapConsumer(rawSourceMap); + +console.log(smc.sources); +// [ 'http://example.com/www/js/one.js', +// 'http://example.com/www/js/two.js' ] + +console.log(smc.originalPositionFor({ + line: 2, + column: 28 +})); +// { source: 'http://example.com/www/js/two.js', +// line: 2, +// column: 10, +// name: 'n' } + +console.log(smc.generatedPositionFor({ + source: 'http://example.com/www/js/two.js', + line: 2, + column: 10 +})); +// { line: 2, column: 28 } + +smc.eachMapping(function (m) { + // ... +}); +``` + +### 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. + +#### 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. + +```js +var consumer = new sourceMap.SourceMapConsumer(rawSourceMapJsonData); +``` + +#### 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 +var consumer = new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8")); +var 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/source-map-js/package.json b/node_modules/source-map-js/package.json new file mode 100644 index 0000000000000000000000000000000000000000..501fafe161597e8f5bcf5860f7eb93576fc518e3 --- /dev/null +++ b/node_modules/source-map-js/package.json @@ -0,0 +1,71 @@ +{ + "name": "source-map-js", + "description": "Generates and consumes source maps", + "version": "1.0.2", + "homepage": "https://github.com/7rulnik/source-map-js", + "author": "Valentin 7rulnik Semirulnik ", + "contributors": [ + "Nick Fitzgerald ", + "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": "7rulnik/source-map-js", + "main": "./source-map.js", + "files": [ + "source-map.js", + "source-map.d.ts", + "lib/" + ], + "engines": { + "node": ">=0.10.0" + }, + "license": "BSD-3-Clause", + "scripts": { + "test": "npm run build && node test/run-tests.js", + "build": "webpack --color", + "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" + }, + "devDependencies": { + "clean-publish": "^3.1.0", + "doctoc": "^0.15.0", + "webpack": "^1.12.0" + }, + "clean-publish": { + "cleanDocs": true + }, + "typings": "source-map.d.ts" +} diff --git a/node_modules/source-map-js/source-map.d.ts b/node_modules/source-map-js/source-map.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9f8a4b38316b1cdf0fc6515dcddad74528f4cccd --- /dev/null +++ b/node_modules/source-map-js/source-map.d.ts @@ -0,0 +1,115 @@ +declare module 'source-map-js' { + export interface StartOfSourceMap { + file?: string; + sourceRoot?: string; + } + + export interface RawSourceMap extends StartOfSourceMap { + version: string; + sources: string[]; + names: string[]; + sourcesContent?: string[]; + mappings: string; + } + + export interface Position { + line: number; + column: number; + } + + export interface LineRange extends Position { + lastColumn: number; + } + + export interface FindPosition extends Position { + // SourceMapConsumer.GREATEST_LOWER_BOUND or SourceMapConsumer.LEAST_UPPER_BOUND + bias?: number; + } + + export interface SourceFindPosition extends FindPosition { + source: string; + } + + export interface MappedPosition extends Position { + source: string; + name?: string; + } + + export interface MappingItem { + source: string; + generatedLine: number; + generatedColumn: number; + originalLine: number; + originalColumn: number; + name: string; + } + + export class SourceMapConsumer { + static GENERATED_ORDER: number; + static ORIGINAL_ORDER: number; + + static GREATEST_LOWER_BOUND: number; + static LEAST_UPPER_BOUND: number; + + constructor(rawSourceMap: RawSourceMap); + computeColumnSpans(): void; + originalPositionFor(generatedPosition: FindPosition): MappedPosition; + generatedPositionFor(originalPosition: SourceFindPosition): LineRange; + allGeneratedPositionsFor(originalPosition: MappedPosition): Position[]; + hasContentsOfAllSources(): boolean; + sourceContentFor(source: string, returnNullOnMissing?: boolean): string; + eachMapping(callback: (mapping: MappingItem) => void, context?: any, order?: number): void; + } + + export interface Mapping { + generated: Position; + original: Position; + source: string; + name?: string; + } + + export class SourceMapGenerator { + constructor(startOfSourceMap?: StartOfSourceMap); + static fromSourceMap(sourceMapConsumer: SourceMapConsumer): SourceMapGenerator; + addMapping(mapping: Mapping): void; + setSourceContent(sourceFile: string, sourceContent: string): void; + applySourceMap(sourceMapConsumer: SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void; + toString(): string; + } + + export interface CodeWithSourceMap { + code: string; + map: SourceMapGenerator; + } + + export class SourceNode { + constructor(); + constructor(line: number, column: number, source: string); + constructor(line: number, column: number, source: string, chunk?: string, name?: string); + static fromStringWithSourceMap(code: string, sourceMapConsumer: SourceMapConsumer, relativePath?: string): SourceNode; + add(chunk: string): void; + prepend(chunk: string): void; + 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; + } +} + +declare module 'source-map-js/lib/source-map-generator' { + import { SourceMapGenerator } from 'source-map-js' + export { SourceMapGenerator } +} + +declare module 'source-map-js/lib/source-map-consumer' { + import { SourceMapConsumer } from 'source-map-js' + export { SourceMapConsumer } +} + +declare module 'source-map-js/lib/source-node' { + import { SourceNode } from 'source-map-js' + export { SourceNode } +} diff --git a/node_modules/source-map-js/source-map.js b/node_modules/source-map-js/source-map.js new file mode 100644 index 0000000000000000000000000000000000000000..bc88fe820c87a217d27eb010281fe39b71163835 --- /dev/null +++ b/node_modules/source-map-js/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/sucrase/LICENSE b/node_modules/sucrase/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..06d77d6ad38ff147f6da4057ce1ad6955b9cd15e --- /dev/null +++ b/node_modules/sucrase/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012-2018 various contributors (see AUTHORS) + +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/sucrase/README.md b/node_modules/sucrase/README.md new file mode 100644 index 0000000000000000000000000000000000000000..90e13dd16f728d9d3ee2952f4d93bd6a5785f83a --- /dev/null +++ b/node_modules/sucrase/README.md @@ -0,0 +1,290 @@ +# Sucrase + +[![Build Status](https://github.com/alangpierce/sucrase/workflows/All%20tests/badge.svg)](https://github.com/alangpierce/sucrase/actions) +[![npm version](https://img.shields.io/npm/v/sucrase.svg)](https://www.npmjs.com/package/sucrase) +[![Install Size](https://packagephobia.now.sh/badge?p=sucrase)](https://packagephobia.now.sh/result?p=sucrase) +[![MIT License](https://img.shields.io/npm/l/express.svg?maxAge=2592000)](LICENSE) +[![Join the chat at https://gitter.im/sucrasejs](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/sucrasejs/Lobby) + +## [Try it out](https://sucrase.io) + +## Quick usage + +```bash +yarn add --dev sucrase # Or npm install --save-dev sucrase +node -r sucrase/register main.ts +``` + +Using the [ts-node](https://github.com/TypeStrong/ts-node) integration: + +```bash +yarn add --dev sucrase ts-node typescript +./node_modules/.bin/ts-node --transpiler sucrase/ts-node-plugin main.ts +``` + +## Project overview + +Sucrase is an alternative to Babel that allows super-fast development builds. +Instead of compiling a large range of JS features to be able to work in Internet +Explorer, Sucrase assumes that you're developing with a recent browser or recent +Node.js version, so it focuses on compiling non-standard language extensions: +JSX, TypeScript, and Flow. Because of this smaller scope, Sucrase can get away +with an architecture that is much more performant but less extensible and +maintainable. Sucrase's parser is forked from Babel's parser (so Sucrase is +indebted to Babel and wouldn't be possible without it) and trims it down to a +focused subset of what Babel solves. If it fits your use case, hopefully Sucrase +can speed up your development experience! + +**Sucrase has been extensively tested.** It can successfully build +the [Benchling](https://benchling.com/) frontend code, +[Babel](https://github.com/babel/babel), +[React](https://github.com/facebook/react), +[TSLint](https://github.com/palantir/tslint), +[Apollo client](https://github.com/apollographql/apollo-client), and +[decaffeinate](https://github.com/decaffeinate/decaffeinate) +with all tests passing, about 1 million lines of code total. + +**Sucrase is about 20x faster than Babel.** Here's one measurement of how +Sucrase compares with other tools when compiling the Jest codebase 3 times, +about 360k lines of code total: + +```text + Time Speed +Sucrase 0.57 seconds 636975 lines per second +swc 1.19 seconds 304526 lines per second +esbuild 1.45 seconds 248692 lines per second +TypeScript 8.98 seconds 40240 lines per second +Babel 9.18 seconds 39366 lines per second +``` + +Details: Measured on July 2022. Tools run in single-threaded mode without warm-up. See the +[benchmark code](https://github.com/alangpierce/sucrase/blob/main/benchmark/benchmark.ts) +for methodology and caveats. + +## Transforms + +The main configuration option in Sucrase is an array of transform names. These +transforms are available: + +* **jsx**: Enables JSX syntax. By default, JSX is transformed to `React.createClass`, + but may be preserved or transformed to `_jsx()` by setting the `jsxRuntime` option. + Also adds `createReactClass` display names and JSX context information. +* **typescript**: Compiles TypeScript code to JavaScript, removing type + annotations and handling features like enums. Does not check types. Sucrase + transforms each file independently, so you should enable the `isolatedModules` + TypeScript flag so that the typechecker will disallow the few features like + `const enum`s that need cross-file compilation. +* **flow**: Removes Flow type annotations. Does not check types. +* **imports**: Transforms ES Modules (`import`/`export`) to CommonJS + (`require`/`module.exports`) using the same approach as Babel and TypeScript + with `--esModuleInterop`. If `preserveDynamicImport` is specified in the Sucrase + options, then dynamic `import` expressions are left alone, which is particularly + useful in Node to load ESM-only libraries. If `preserveDynamicImport` is not + specified, `import` expressions are transformed into a promise-wrapped call to + `require`. +* **react-hot-loader**: Performs the equivalent of the `react-hot-loader/babel` + transform in the [react-hot-loader](https://github.com/gaearon/react-hot-loader) + project. This enables advanced hot reloading use cases such as editing of + bound methods. +* **jest**: Hoist desired [jest](https://jestjs.io/) method calls above imports in + the same way as [babel-plugin-jest-hoist](https://github.com/facebook/jest/tree/master/packages/babel-plugin-jest-hoist). + Does not validate the arguments passed to `jest.mock`, but the same rules still apply. + +When the `imports` transform is *not* specified (i.e. when targeting ESM), the +`injectCreateRequireForImportRequire` option can be specified to transform TS +`import foo = require("foo");` in a way that matches the +[TypeScript 4.7 behavior](https://devblogs.microsoft.com/typescript/announcing-typescript-4-7/#commonjs-interoperability) +with `module: nodenext`. + +These newer JS features are transformed by default: + +* [Optional chaining](https://github.com/tc39/proposal-optional-chaining): `a?.b` +* [Nullish coalescing](https://github.com/tc39/proposal-nullish-coalescing): `a ?? b` +* [Class fields](https://github.com/tc39/proposal-class-fields): `class C { x = 1; }`. + This includes static fields but not the `#x` private field syntax. +* [Numeric separators](https://github.com/tc39/proposal-numeric-separator): + `const n = 1_234;` +* [Optional catch binding](https://github.com/tc39/proposal-optional-catch-binding): + `try { doThing(); } catch { }`. + +If your target runtime supports these features, you can specify +`disableESTransforms: true` so that Sucrase preserves the syntax rather than +trying to transform it. Note that transpiled and standard class fields behave +slightly differently; see the +[TypeScript 3.7 release notes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#the-usedefineforclassfields-flag-and-the-declare-property-modifier) +for details. If you use TypeScript, you can enable the TypeScript option +`useDefineForClassFields` to enable error checking related to these differences. + +### Unsupported syntax + +All JS syntax not mentioned above will "pass through" and needs to be supported +by your JS runtime. For example: + +* Decorators, private fields, `throw` expressions, generator arrow functions, + and `do` expressions are all unsupported in browsers and Node (as of this + writing), and Sucrase doesn't make an attempt to transpile them. +* Object rest/spread, async functions, and async iterators are all recent + features that should work fine, but might cause issues if you use older + versions of tools like webpack. BigInt and newer regex features may or may not + work, based on your tooling. + +### JSX Options + +By default, JSX is compiled to React functions in development mode. This can be +configured with a few options: + +* **jsxRuntime**: A string specifying the transform mode, which can be one of three values: + * `"classic"` (default): The original JSX transform that calls `React.createElement` by default. + To configure for non-React use cases, specify: + * **jsxPragma**: Element creation function, defaults to `React.createElement`. + * **jsxFragmentPragma**: Fragment component, defaults to `React.Fragment`. + * `"automatic"`: The [new JSX transform](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html) + introduced with React 17, which calls `jsx` functions and auto-adds import statements. + To configure for non-React use cases, specify: + * **jsxImportSource**: Package name for auto-generated import statements, defaults to `react`. + * `"preserve"`: Don't transform JSX, and instead emit it as-is in the output code. +* **production**: If `true`, use production version of functions and don't include debugging + information. When using React in production mode with the automatic transform, this *must* be + set to true to avoid an error about `jsxDEV` being missing. + +### Legacy CommonJS interop + +Two legacy modes can be used with the `imports` transform: + +* **enableLegacyTypeScriptModuleInterop**: Use the default TypeScript approach + to CommonJS interop instead of assuming that TypeScript's `--esModuleInterop` + flag is enabled. For example, if a CJS module exports a function, legacy + TypeScript interop requires you to write `import * as add from './add';`, + while Babel, Webpack, Node.js, and TypeScript with `--esModuleInterop` require + you to write `import add from './add';`. As mentioned in the + [docs](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#support-for-import-d-from-cjs-form-commonjs-modules-with---esmoduleinterop), + the TypeScript team recommends you always use `--esModuleInterop`. +* **enableLegacyBabel5ModuleInterop**: Use the Babel 5 approach to CommonJS + interop, so that you can run `require('./MyModule')` instead of + `require('./MyModule').default`. Analogous to + [babel-plugin-add-module-exports](https://github.com/59naga/babel-plugin-add-module-exports). + +## Usage + +### Tool integrations + +* [Webpack](https://github.com/alangpierce/sucrase/tree/main/integrations/webpack-loader) +* [Gulp](https://github.com/alangpierce/sucrase/tree/main/integrations/gulp-plugin) +* [Jest](https://github.com/alangpierce/sucrase/tree/main/integrations/jest-plugin) +* [Rollup](https://github.com/rollup/plugins/tree/master/packages/sucrase) +* [Broccoli](https://github.com/stefanpenner/broccoli-sucrase) + +### Usage in Node + +The most robust way is to use the Sucrase plugin for [ts-node](https://github.com/TypeStrong/ts-node), +which has various Node integrations and configures Sucrase via `tsconfig.json`: +```bash +ts-node --transpiler sucrase/ts-node-plugin +``` + +For projects that don't target ESM, Sucrase also has a require hook with some +reasonable defaults that can be accessed in a few ways: + +* From code: `require("sucrase/register");` +* When invoking Node: `node -r sucrase/register main.ts` +* As a separate binary: `sucrase-node main.ts` + +### Compiling a project to JS + +For simple use cases, Sucrase comes with a `sucrase` CLI that mirrors your +directory structure to an output directory: +```bash +sucrase ./srcDir -d ./outDir --transforms typescript,imports +``` + +### Usage from code + +For any advanced use cases, Sucrase can be called from JS directly: + +```js +import {transform} from "sucrase"; +const compiledCode = transform(code, {transforms: ["typescript", "imports"]}).code; +``` + +## What Sucrase is not + +Sucrase is intended to be useful for the most common cases, but it does not aim +to have nearly the scope and versatility of Babel. Some specific examples: + +* Sucrase does not check your code for errors. Sucrase's contract is that if you + give it valid code, it will produce valid JS code. If you give it invalid + code, it might produce invalid code, it might produce valid code, or it might + give an error. Always use Sucrase with a linter or typechecker, which is more + suited for error-checking. +* Sucrase is not pluginizable. With the current architecture, transforms need to + be explicitly written to cooperate with each other, so each additional + transform takes significant extra work. +* Sucrase is not good for prototyping language extensions and upcoming language + features. Its faster architecture makes new transforms more difficult to write + and more fragile. +* Sucrase will never produce code for old browsers like IE. Compiling code down + to ES5 is much more complicated than any transformation that Sucrase needs to + do. +* Sucrase is hesitant to implement upcoming JS features, although some of them + make sense to implement for pragmatic reasons. Its main focus is on language + extensions (JSX, TypeScript, Flow) that will never be supported by JS + runtimes. +* Like Babel, Sucrase is not a typechecker, and must process each file in + isolation. For example, TypeScript `const enum`s are treated as regular + `enum`s rather than inlining across files. +* You should think carefully before using Sucrase in production. Sucrase is + mostly beneficial in development, and in many cases, Babel or tsc will be more + suitable for production builds. + +See the [Project Vision](./docs/PROJECT_VISION.md) document for more details on +the philosophy behind Sucrase. + +## Motivation + +As JavaScript implementations mature, it becomes more and more reasonable to +disable Babel transforms, especially in development when you know that you're +targeting a modern runtime. You might hope that you could simplify and speed up +the build step by eventually disabling Babel entirely, but this isn't possible +if you're using a non-standard language extension like JSX, TypeScript, or Flow. +Unfortunately, disabling most transforms in Babel doesn't speed it up as much as +you might expect. To understand, let's take a look at how Babel works: + +1. Tokenize the input source code into a token stream. +2. Parse the token stream into an AST. +3. Walk the AST to compute the scope information for each variable. +4. Apply all transform plugins in a single traversal, resulting in a new AST. +5. Print the resulting AST. + +Only step 4 gets faster when disabling plugins, so there's always a fixed cost +to running Babel regardless of how many transforms are enabled. + +Sucrase bypasses most of these steps, and works like this: + +1. Tokenize the input source code into a token stream using a trimmed-down fork + of the Babel parser. This fork does not produce a full AST, but still + produces meaningful token metadata specifically designed for the later + transforms. +2. Scan through the tokens, computing preliminary information like all + imported/exported names. +3. Run the transform by doing a pass through the tokens and performing a number + of careful find-and-replace operations, like replacing `", + "license": "MIT", + "main": "dist/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "bin": { + "sucrase": "./bin/sucrase", + "sucrase-node": "./bin/sucrase-node" + }, + "scripts": { + "build": "sucrase-node script/build.ts", + "fast-build": "sucrase-node script/build.ts --fast", + "clean": "rm -rf ./build ./dist ./dist-self-build ./dist-types ./example-runner/example-repos ./spec-compliance-tests/test262/test262-checkout ./spec-compliance-tests/babel-tests/babel-tests-checkout", + "generate": "sucrase-node generator/generate.ts", + "benchmark": "cd benchmark && yarn && sucrase-node ./benchmark.ts", + "benchmark-compare": "sucrase-node ./benchmark/compare-performance.ts", + "microbenchmark": "sucrase-node benchmark/microbenchmark.ts", + "lint": "sucrase-node script/lint.ts", + "profile": "node --inspect-brk ./node_modules/.bin/sucrase-node ./benchmark/profile", + "profile-project": "node --inspect-brk ./node_modules/.bin/sucrase-node ./benchmark/benchmark-project.ts --profile", + "prepublishOnly": "yarn clean && yarn build", + "release": "sucrase-node script/release.ts", + "run-examples": "sucrase-node example-runner/example-runner.ts", + "test": "yarn lint && yarn test-only", + "test-only": "mocha './test/**/*.ts'", + "integration-test": "cd integration-test && yarn && yarn link @sucrase/jest-plugin && mocha --timeout 10000 ./integration-tests.ts", + "test262": "sucrase-node spec-compliance-tests/test262/run-test262.ts", + "check-babel-tests": "sucrase-node spec-compliance-tests/babel-tests/check-babel-tests.ts", + "test-with-coverage": "nyc mocha './test/**/*.ts'", + "report-coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov" + }, + "repository": { + "type": "git", + "url": "https://github.com/alangpierce/sucrase.git" + }, + "keywords": [ + "babel", + "jsx", + "typescript", + "flow" + ], + "bugs": { + "url": "https://github.com/alangpierce/sucrase/issues" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/glob": "^7", + "@types/mocha": "^9.1.1", + "@types/mz": "^2.7.4", + "@types/node": "^17.0.41", + "@typescript-eslint/eslint-plugin": "^5.27.1", + "@typescript-eslint/parser": "^5.27.1", + "chalk": "^4", + "codecov": "^3.8.3", + "eslint": "^8.17.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "~2.26", + "eslint-plugin-prettier": "^4.0.0", + "mocha": "^10.0.0", + "nyc": "^15.1.0", + "prettier": "^2.6.2", + "sucrase": "^3.31.0", + "test262-harness": "^10.0.0", + "ts-interface-builder": "^0.3.3", + "typescript": "~4.7" + }, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "engines": { + "node": ">=8" + }, + "resolutions": { + "**/eshost/socket.io": "^4" + } +} diff --git a/node_modules/sucrase/register/index.js b/node_modules/sucrase/register/index.js new file mode 100644 index 0000000000000000000000000000000000000000..f6eb814b5b6c63bca669b3461b7e05ec9210ef2b --- /dev/null +++ b/node_modules/sucrase/register/index.js @@ -0,0 +1 @@ +require("../dist/register").registerAll(); diff --git a/node_modules/sucrase/register/js.js b/node_modules/sucrase/register/js.js new file mode 100644 index 0000000000000000000000000000000000000000..48918960943c1aff94309098640832dc7b3d6043 --- /dev/null +++ b/node_modules/sucrase/register/js.js @@ -0,0 +1 @@ +require("../dist/register").registerJS(); diff --git a/node_modules/sucrase/register/jsx.js b/node_modules/sucrase/register/jsx.js new file mode 100644 index 0000000000000000000000000000000000000000..4bd476ea3611d4331b65fdccdcb9c25d05668d2e --- /dev/null +++ b/node_modules/sucrase/register/jsx.js @@ -0,0 +1 @@ +require("../dist/register").registerJSX(); diff --git a/node_modules/sucrase/register/ts-legacy-module-interop.js b/node_modules/sucrase/register/ts-legacy-module-interop.js new file mode 100644 index 0000000000000000000000000000000000000000..1ec5a6d78249e8bc3eb3222c9420dc165a27ef7c --- /dev/null +++ b/node_modules/sucrase/register/ts-legacy-module-interop.js @@ -0,0 +1 @@ +require("../dist/register").registerTSLegacyModuleInterop(); diff --git a/node_modules/sucrase/register/ts.js b/node_modules/sucrase/register/ts.js new file mode 100644 index 0000000000000000000000000000000000000000..23b8c8852ff3e9979a03a9dc53ed2e484c889608 --- /dev/null +++ b/node_modules/sucrase/register/ts.js @@ -0,0 +1 @@ +require("../dist/register").registerTS(); diff --git a/node_modules/sucrase/register/tsx-legacy-module-interop.js b/node_modules/sucrase/register/tsx-legacy-module-interop.js new file mode 100644 index 0000000000000000000000000000000000000000..a883680d07026308b50b170477ff91776d43b5ac --- /dev/null +++ b/node_modules/sucrase/register/tsx-legacy-module-interop.js @@ -0,0 +1 @@ +require("../dist/register").registerTSXLegacyModuleInterop(); diff --git a/node_modules/sucrase/register/tsx.js b/node_modules/sucrase/register/tsx.js new file mode 100644 index 0000000000000000000000000000000000000000..deb8b34ef8ec019cda99bd80eecaa7b886f70ff0 --- /dev/null +++ b/node_modules/sucrase/register/tsx.js @@ -0,0 +1 @@ +require("../dist/register").registerTSX(); diff --git a/node_modules/sucrase/ts-node-plugin/index.js b/node_modules/sucrase/ts-node-plugin/index.js new file mode 100644 index 0000000000000000000000000000000000000000..d072c67373e20bb5976caf9500224661170dec20 --- /dev/null +++ b/node_modules/sucrase/ts-node-plugin/index.js @@ -0,0 +1,76 @@ +const {transform} = require("../dist"); + +// Enum constants taken from the TypeScript codebase. +const ModuleKindCommonJS = 1; + +const JsxEmitReactJSX = 4; +const JsxEmitReactJSXDev = 5; + +/** + * ts-node transpiler plugin + * + * This plugin hooks into ts-node so that Sucrase can handle all TS-to-JS + * conversion while ts-node handles the ESM loader, require hook, REPL + * integration, etc. ts-node automatically discovers the relevant tsconfig file, + * so the main logic in this integration is translating tsconfig options to the + * corresponding Sucrase options. + * + * Any tsconfig options relevant to Sucrase are translated, but some config + * options outside the scope of Sucrase are ignored. For example, we assume the + * isolatedModules option, and we ignore target because Sucrase doesn't provide + * JS syntax downleveling (at least not in a way that is useful for Node). + * + * One notable caveat is that importsNotUsedAsValues and preserveValueImports + * are ignored right now, and Sucrase uses TypeScript's default behavior of + * eliding imports only used as types. This usually makes no difference when + * running the code, so for now we ignore these options without a warning. + */ +function create(createOptions) { + const {nodeModuleEmitKind} = createOptions; + const {module, jsx, jsxFactory, jsxFragmentFactory, jsxImportSource, esModuleInterop} = + createOptions.service.config.options; + + return { + transpile(input, transpileOptions) { + const {fileName} = transpileOptions; + const transforms = []; + // Detect JS rather than TS so we bias toward including the typescript + // transform, since almost always it doesn't hurt to include. + const isJS = + fileName.endsWith(".js") || + fileName.endsWith(".jsx") || + fileName.endsWith(".mjs") || + fileName.endsWith(".cjs"); + if (!isJS) { + transforms.push("typescript"); + } + if (module === ModuleKindCommonJS || nodeModuleEmitKind === "nodecjs") { + transforms.push("imports"); + } + if (fileName.endsWith(".tsx") || fileName.endsWith(".jsx")) { + transforms.push("jsx"); + } + + const {code, sourceMap} = transform(input, { + transforms, + disableESTransforms: true, + jsxRuntime: jsx === JsxEmitReactJSX || jsx === JsxEmitReactJSXDev ? "automatic" : "classic", + production: jsx === JsxEmitReactJSX, + jsxImportSource, + jsxPragma: jsxFactory, + jsxFragmentPragma: jsxFragmentFactory, + preserveDynamicImport: nodeModuleEmitKind === "nodecjs", + injectCreateRequireForImportRequire: nodeModuleEmitKind === "nodeesm", + enableLegacyTypeScriptModuleInterop: !esModuleInterop, + sourceMapOptions: {compiledFilename: fileName}, + filePath: fileName, + }); + return { + outputText: code, + sourceMapText: JSON.stringify(sourceMap), + }; + }, + }; +} + +exports.create = create; diff --git a/node_modules/supports-preserve-symlinks-flag/.eslintrc b/node_modules/supports-preserve-symlinks-flag/.eslintrc new file mode 100644 index 0000000000000000000000000000000000000000..346ffeca87d3784723773d39f9e52b8c6d12f8c3 --- /dev/null +++ b/node_modules/supports-preserve-symlinks-flag/.eslintrc @@ -0,0 +1,14 @@ +{ + "root": true, + + "extends": "@ljharb", + + "env": { + "browser": true, + "node": true, + }, + + "rules": { + "id-length": "off", + }, +} diff --git a/node_modules/supports-preserve-symlinks-flag/.github/FUNDING.yml b/node_modules/supports-preserve-symlinks-flag/.github/FUNDING.yml new file mode 100644 index 0000000000000000000000000000000000000000..e8d64f37e5fc43885727dc3d086050af7dcc4bb1 --- /dev/null +++ b/node_modules/supports-preserve-symlinks-flag/.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/supports-preserve-symlink-flag +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/supports-preserve-symlinks-flag/.nycrc b/node_modules/supports-preserve-symlinks-flag/.nycrc new file mode 100644 index 0000000000000000000000000000000000000000..bdd626ce91477abbdd489b79988baebadbd3c897 --- /dev/null +++ b/node_modules/supports-preserve-symlinks-flag/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/supports-preserve-symlinks-flag/CHANGELOG.md b/node_modules/supports-preserve-symlinks-flag/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..61f607f4894beba4e0693c72a6446bf3497bb318 --- /dev/null +++ b/node_modules/supports-preserve-symlinks-flag/CHANGELOG.md @@ -0,0 +1,22 @@ +# 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.0 - 2022-01-02 + +### Commits + +- Tests [`e2f59ad`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/e2f59ad74e2ae0f5f4899fcde6a6f693ab7cc074) +- Initial commit [`dc222aa`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/dc222aad3c0b940d8d3af1ca9937d108bd2dc4b9) +- [meta] do not publish workflow files [`5ef77f7`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/5ef77f7cb6946d16ee38672be9ec0f1bbdf63262) +- npm init [`992b068`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/992b068503a461f7e8676f40ca2aab255fd8d6ff) +- read me [`6c9afa9`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/6c9afa9fabc8eaf0814aaed6dd01e6df0931b76d) +- Initial implementation [`2f98925`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/2f9892546396d4ab0ad9f1ff83e76c3f01234ae8) +- [meta] add `auto-changelog` [`6c476ae`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/6c476ae1ed7ce68b0480344f090ac2844f35509d) +- [Dev Deps] add `eslint`, `@ljharb/eslint-config` [`d0fffc8`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/d0fffc886d25fba119355520750a909d64da0087) +- Only apps should have lockfiles [`ab318ed`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/ab318ed7ae62f6c2c0e80a50398d40912afd8f69) +- [meta] add `safe-publish-latest` [`2bb23b3`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/2bb23b3ebab02dc4135c4cdf0217db82835b9fca) +- [meta] add `sideEffects` flag [`600223b`](https://github.com/inspect-js/node-supports-preserve-symlinks-flag/commit/600223ba24f30779f209d9097721eff35ed62741) diff --git a/node_modules/supports-preserve-symlinks-flag/LICENSE b/node_modules/supports-preserve-symlinks-flag/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..2e7b9a3eacf263cb418f4c16b087290ef78c39b2 --- /dev/null +++ b/node_modules/supports-preserve-symlinks-flag/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Inspect JS + +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/supports-preserve-symlinks-flag/README.md b/node_modules/supports-preserve-symlinks-flag/README.md new file mode 100644 index 0000000000000000000000000000000000000000..eb05b124ca68ba0312c98834f282a2cd6ce568b5 --- /dev/null +++ b/node_modules/supports-preserve-symlinks-flag/README.md @@ -0,0 +1,42 @@ +# node-supports-preserve-symlinks-flag [![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] + +Determine if the current node version supports the `--preserve-symlinks` flag. + +## Example + +```js +var supportsPreserveSymlinks = require('node-supports-preserve-symlinks-flag'); +var assert = require('assert'); + +assert.equal(supportsPreserveSymlinks, null); // in a browser +assert.equal(supportsPreserveSymlinks, false); // in node < v6.2 +assert.equal(supportsPreserveSymlinks, true); // in node v6.2+ +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/node-supports-preserve-symlinks-flag +[npm-version-svg]: https://versionbadg.es/inspect-js/node-supports-preserve-symlinks-flag.svg +[deps-svg]: https://david-dm.org/inspect-js/node-supports-preserve-symlinks-flag.svg +[deps-url]: https://david-dm.org/inspect-js/node-supports-preserve-symlinks-flag +[dev-deps-svg]: https://david-dm.org/inspect-js/node-supports-preserve-symlinks-flag/dev-status.svg +[dev-deps-url]: https://david-dm.org/inspect-js/node-supports-preserve-symlinks-flag#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/node-supports-preserve-symlinks-flag.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/node-supports-preserve-symlinks-flag.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/node-supports-preserve-symlinks-flag.svg +[downloads-url]: https://npm-stat.com/charts.html?package=node-supports-preserve-symlinks-flag +[codecov-image]: https://codecov.io/gh/inspect-js/node-supports-preserve-symlinks-flag/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/node-supports-preserve-symlinks-flag/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/node-supports-preserve-symlinks-flag +[actions-url]: https://github.com/inspect-js/node-supports-preserve-symlinks-flag/actions diff --git a/node_modules/supports-preserve-symlinks-flag/browser.js b/node_modules/supports-preserve-symlinks-flag/browser.js new file mode 100644 index 0000000000000000000000000000000000000000..087be1fe9fda8930ca66a68204bd0112b9d8710b --- /dev/null +++ b/node_modules/supports-preserve-symlinks-flag/browser.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = null; diff --git a/node_modules/supports-preserve-symlinks-flag/index.js b/node_modules/supports-preserve-symlinks-flag/index.js new file mode 100644 index 0000000000000000000000000000000000000000..86fd5d331c4a4d44e9a92d46fbb637165cea78d5 --- /dev/null +++ b/node_modules/supports-preserve-symlinks-flag/index.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = ( +// node 12+ + process.allowedNodeEnvironmentFlags && process.allowedNodeEnvironmentFlags.has('--preserve-symlinks') +) || ( +// node v6.2 - v11 + String(module.constructor._findPath).indexOf('preserveSymlinks') >= 0 // eslint-disable-line no-underscore-dangle +); diff --git a/node_modules/supports-preserve-symlinks-flag/package.json b/node_modules/supports-preserve-symlinks-flag/package.json new file mode 100644 index 0000000000000000000000000000000000000000..56edadcaad850fa1f348aeb0988e98d16eb14a84 --- /dev/null +++ b/node_modules/supports-preserve-symlinks-flag/package.json @@ -0,0 +1,70 @@ +{ + "name": "supports-preserve-symlinks-flag", + "version": "1.0.0", + "description": "Determine if the current node version supports the `--preserve-symlinks` flag.", + "main": "./index.js", + "browser": "./browser.js", + "exports": { + ".": [ + { + "browser": "./browser.js", + "default": "./index.js" + }, + "./index.js" + ], + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "lint": "eslint --ext=js,mjs .", + "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/inspect-js/node-supports-preserve-symlinks-flag.git" + }, + "keywords": [ + "node", + "flag", + "symlink", + "symlinks", + "preserve-symlinks" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/inspect-js/node-supports-preserve-symlinks-flag/issues" + }, + "homepage": "https://github.com/inspect-js/node-supports-preserve-symlinks-flag#readme", + "devDependencies": { + "@ljharb/eslint-config": "^20.1.0", + "aud": "^1.1.5", + "auto-changelog": "^2.3.0", + "eslint": "^8.6.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "semver": "^6.3.0", + "tape": "^5.4.0" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + } +} diff --git a/node_modules/supports-preserve-symlinks-flag/test/index.js b/node_modules/supports-preserve-symlinks-flag/test/index.js new file mode 100644 index 0000000000000000000000000000000000000000..9938d671691790a75bacefc6100b39d6e4ab937a --- /dev/null +++ b/node_modules/supports-preserve-symlinks-flag/test/index.js @@ -0,0 +1,29 @@ +'use strict'; + +var test = require('tape'); +var semver = require('semver'); + +var supportsPreserveSymlinks = require('../'); +var browser = require('../browser'); + +test('supportsPreserveSymlinks', function (t) { + t.equal(typeof supportsPreserveSymlinks, 'boolean', 'is a boolean'); + + t.equal(browser, null, 'browser file is `null`'); + t.equal( + supportsPreserveSymlinks, + null, + 'in a browser, is null', + { skip: typeof window === 'undefined' } + ); + + var expected = semver.satisfies(process.version, '>= 6.2'); + t.equal( + supportsPreserveSymlinks, + expected, + 'is true in node v6.2+, false otherwise (actual: ' + supportsPreserveSymlinks + ', expected ' + expected + ')', + { skip: typeof window !== 'undefined' } + ); + + t.end(); +}); diff --git a/node_modules/tailwindcss/CHANGELOG.md b/node_modules/tailwindcss/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..b654143f46d2c3b1ac5c8db2813f9379fae7970b --- /dev/null +++ b/node_modules/tailwindcss/CHANGELOG.md @@ -0,0 +1,2433 @@ +# 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). + +## [Unreleased] + +- Nothing yet! + +## [3.3.1] - 2023-03-30 + +### Fixed + +- Try resolving `config.default` before `config` to ensure the config file is resolved correctly ([#10898](https://github.com/tailwindlabs/tailwindcss/pull/10898)) +- Pull pseudo elements outside of `:is` and `:has` when using `@apply` ([#10903](https://github.com/tailwindlabs/tailwindcss/pull/10903)) +- Update the types for the `safelist` config ([#10901](https://github.com/tailwindlabs/tailwindcss/pull/10901)) +- Fix `@tailwindcss/line-clamp` warning ([#10915](https://github.com/tailwindlabs/tailwindcss/pull/10915), [#10919](https://github.com/tailwindlabs/tailwindcss/pull/10919)) +- Fix `process` is not defined error ([#10919](https://github.com/tailwindlabs/tailwindcss/pull/10919)) + +## [3.3.0] - 2023-03-27 + +### Added + +- Support ESM and TypeScript config files ([#10785](https://github.com/tailwindlabs/tailwindcss/pull/10785)) +- Extend default color palette with new 950 shades ([#10879](https://github.com/tailwindlabs/tailwindcss/pull/10879)) +- Add `line-height` modifier support to `font-size` utilities ([#9875](https://github.com/tailwindlabs/tailwindcss/pull/9875)) +- Add support for using variables as arbitrary values without `var(...)` ([#9880](https://github.com/tailwindlabs/tailwindcss/pull/9880), [#9962](https://github.com/tailwindlabs/tailwindcss/pull/9962)) +- Add logical properties support for inline direction ([#10166](https://github.com/tailwindlabs/tailwindcss/pull/10166)) +- Add `hyphens` utilities ([#10071](https://github.com/tailwindlabs/tailwindcss/pull/10071)) +- Add `from-{position}`, `via-{position}` and `to-{position}` utilities ([#10886](https://github.com/tailwindlabs/tailwindcss/pull/10886)) +- Add `list-style-image` utilities ([#10817](https://github.com/tailwindlabs/tailwindcss/pull/10817)) +- Add `caption-side` utilities ([#10470](https://github.com/tailwindlabs/tailwindcss/pull/10470)) +- Add `line-clamp` utilities from `@tailwindcss/line-clamp` to core ([#10768](https://github.com/tailwindlabs/tailwindcss/pull/10768), [#10876](https://github.com/tailwindlabs/tailwindcss/pull/10876), [#10862](https://github.com/tailwindlabs/tailwindcss/pull/10862)) +- Add `delay-0` and `duration-0` utilities ([#10294](https://github.com/tailwindlabs/tailwindcss/pull/10294)) +- Add `justify-normal` and `justify-stretch` utilities ([#10560](https://github.com/tailwindlabs/tailwindcss/pull/10560)) +- Add `content-normal` and `content-stretch` utilities ([#10645](https://github.com/tailwindlabs/tailwindcss/pull/10645)) +- Add `whitespace-break-spaces` utility ([#10729](https://github.com/tailwindlabs/tailwindcss/pull/10729)) +- Add support for configuring default `font-variation-settings` for a `font-family` ([#10034](https://github.com/tailwindlabs/tailwindcss/pull/10034), [#10515](https://github.com/tailwindlabs/tailwindcss/pull/10515)) + +### Fixed + +- Disallow using multiple selectors in arbitrary variants ([#10655](https://github.com/tailwindlabs/tailwindcss/pull/10655)) +- Sort class lists deterministically for Prettier plugin ([#10672](https://github.com/tailwindlabs/tailwindcss/pull/10672)) +- Ensure CLI builds have a non-zero exit code on failure ([#10703](https://github.com/tailwindlabs/tailwindcss/pull/10703)) +- Ensure module dependencies for value `null`, is an empty `Set` ([#10877](https://github.com/tailwindlabs/tailwindcss/pull/10877)) +- Fix format assumption when resolving module dependencies ([#10878](https://github.com/tailwindlabs/tailwindcss/pull/10878)) + +### Changed + +- Mark `rtl` and `ltr` variants as stable and remove warnings ([#10764](https://github.com/tailwindlabs/tailwindcss/pull/10764)) +- Use `inset` instead of `top`, `right`, `bottom`, and `left` properties ([#10765](https://github.com/tailwindlabs/tailwindcss/pull/10765)) +- Make `dark` and `rtl`/`ltr` variants insensitive to DOM order ([#10766](https://github.com/tailwindlabs/tailwindcss/pull/10766)) +- Use `:is` to make important selector option insensitive to DOM order ([#10835](https://github.com/tailwindlabs/tailwindcss/pull/10835)) + +## [3.2.7] - 2023-02-16 + +### Fixed + +- Fix use of `:where(.btn)` when matching `!btn` ([#10601](https://github.com/tailwindlabs/tailwindcss/pull/10601)) +- Revert including `outline-color` in `transition` and `transition-colors` by default ([#10604](https://github.com/tailwindlabs/tailwindcss/pull/10604)) + +## [3.2.6] - 2023-02-08 + +### Fixed + +- Fix installation failing with yarn and pnpm by dropping `oxide-api-shim` ([add1636](https://github.com/tailwindlabs/tailwindcss/commit/add16364b4b1100e1af23ad1ca6900a0b53cbba0)) + +## [3.2.5] - 2023-02-08 + +### Added + +- Add standalone CLI build for 64-bit Windows on ARM (`node16-win-arm64`) ([#10001](https://github.com/tailwindlabs/tailwindcss/pull/10001)) + +### Fixed + +- Cleanup unused `variantOrder` ([#9829](https://github.com/tailwindlabs/tailwindcss/pull/9829)) +- Fix `foo-[abc]/[def]` not being handled correctly ([#9866](https://github.com/tailwindlabs/tailwindcss/pull/9866)) +- Add container queries plugin to standalone CLI ([#9865](https://github.com/tailwindlabs/tailwindcss/pull/9865)) +- Support renaming of output files by PostCSS plugins in CLI ([#9944](https://github.com/tailwindlabs/tailwindcss/pull/9944)) +- Improve return value of `resolveConfig`, unwrap `ResolvableTo` ([#9972](https://github.com/tailwindlabs/tailwindcss/pull/9972)) +- Clip unbalanced brackets in arbitrary values ([#9973](https://github.com/tailwindlabs/tailwindcss/pull/9973)) +- Don’t reorder webkit scrollbar pseudo elements ([#9991](https://github.com/tailwindlabs/tailwindcss/pull/9991)) +- Deterministic sorting of arbitrary variants ([#10016](https://github.com/tailwindlabs/tailwindcss/pull/10016)) +- Add `data` key to theme types ([#10023](https://github.com/tailwindlabs/tailwindcss/pull/10023)) +- Prevent invalid arbitrary variant selectors from failing the build ([#10059](https://github.com/tailwindlabs/tailwindcss/pull/10059)) +- Properly handle subtraction followed by a variable ([#10074](https://github.com/tailwindlabs/tailwindcss/pull/10074)) +- Fix missing `string[]` in the `theme.dropShadow` types ([#10072](https://github.com/tailwindlabs/tailwindcss/pull/10072)) +- Update list of length units ([#10100](https://github.com/tailwindlabs/tailwindcss/pull/10100)) +- Fix not matching arbitrary properties when closely followed by square brackets ([#10212](https://github.com/tailwindlabs/tailwindcss/pull/10212)) +- Allow direct nesting in `root` or `@layer` nodes ([#10229](https://github.com/tailwindlabs/tailwindcss/pull/10229)) +- Don't prefix classes in arbitrary variants ([#10214](https://github.com/tailwindlabs/tailwindcss/pull/10214)) +- Fix perf regression when checking for changed content ([#10234](https://github.com/tailwindlabs/tailwindcss/pull/10234)) +- Fix missing `blocklist` member in the `Config` type ([#10239](https://github.com/tailwindlabs/tailwindcss/pull/10239)) +- Escape group names in selectors ([#10276](https://github.com/tailwindlabs/tailwindcss/pull/10276)) +- Consider earlier variants before sorting functions ([#10288](https://github.com/tailwindlabs/tailwindcss/pull/10288)) +- Allow variants with slashes ([#10336](https://github.com/tailwindlabs/tailwindcss/pull/10336)) +- Ensure generated CSS is always sorted in the same order for a given set of templates ([#10382](https://github.com/tailwindlabs/tailwindcss/pull/10382)) +- Handle variants when the same class appears multiple times in a selector ([#10397](https://github.com/tailwindlabs/tailwindcss/pull/10397)) +- Handle group/peer variants with quoted strings ([#10400](https://github.com/tailwindlabs/tailwindcss/pull/10400)) +- Parse alpha value from rgba/hsla colors when using variables ([#10429](https://github.com/tailwindlabs/tailwindcss/pull/10429)) +- Sort by `layer` inside `variants` layer ([#10505](https://github.com/tailwindlabs/tailwindcss/pull/10505)) +- Add `--watch=always` option to prevent exit when stdin closes ([#9966](https://github.com/tailwindlabs/tailwindcss/pull/9966)) + +### Changed + +- Alphabetize `theme` keys in default config ([#9953](https://github.com/tailwindlabs/tailwindcss/pull/9953)) +- Update esbuild to v17 ([#10368](https://github.com/tailwindlabs/tailwindcss/pull/10368)) +- Include `outline-color` in `transition` and `transition-colors` utilities ([#10385](https://github.com/tailwindlabs/tailwindcss/pull/10385)) + +## [3.2.4] - 2022-11-11 + +### Added + +- Add `blocklist` option to prevent generating unwanted CSS ([#9812](https://github.com/tailwindlabs/tailwindcss/pull/9812)) + +### Fixed + +- Fix watching of files on Linux when renames are involved ([#9796](https://github.com/tailwindlabs/tailwindcss/pull/9796)) +- Make sure errors are always displayed when watching for changes ([#9810](https://github.com/tailwindlabs/tailwindcss/pull/9810)) + +## [3.2.3] - 2022-11-09 + +### Fixed + +- Fixed use of `raw` content in the CLI ([#9773](https://github.com/tailwindlabs/tailwindcss/pull/9773)) +- Pick up changes from files that are both context and content deps ([#9787](https://github.com/tailwindlabs/tailwindcss/pull/9787)) +- Sort pseudo-elements ONLY after classes when using variants and `@apply` ([#9765](https://github.com/tailwindlabs/tailwindcss/pull/9765)) +- Support important utilities in the safelist (pattern must include a `!`) ([#9791](https://github.com/tailwindlabs/tailwindcss/pull/9791)) + +## [3.2.2] - 2022-11-04 + +### Fixed + +- Escape special characters in resolved content base paths ([#9650](https://github.com/tailwindlabs/tailwindcss/pull/9650)) +- Don't reuse container for array returning variant functions ([#9644](https://github.com/tailwindlabs/tailwindcss/pull/9644)) +- Exclude non-relevant selectors when generating rules with the important modifier ([#9677](https://github.com/tailwindlabs/tailwindcss/issues/9677)) +- Fix merging of arrays during config resolution ([#9706](https://github.com/tailwindlabs/tailwindcss/issues/9706)) +- Ensure configured `font-feature-settings` are included in Preflight ([#9707](https://github.com/tailwindlabs/tailwindcss/pull/9707)) +- Fix fractional values not being parsed properly inside arbitrary properties ([#9705](https://github.com/tailwindlabs/tailwindcss/pull/9705)) +- Fix incorrect selectors when using `@apply` in selectors with combinators and pseudos ([#9722](https://github.com/tailwindlabs/tailwindcss/pull/9722)) +- Fix cannot read properties of undefined (reading 'modifier') ([#9656](https://github.com/tailwindlabs/tailwindcss/pull/9656), [aa979d6](https://github.com/tailwindlabs/tailwindcss/commit/aa979d645f8bf4108c5fc938d7c0ba085b654c31)) + +## [3.2.1] - 2022-10-21 + +### Fixed + +- Fix missing `supports` in types ([#9616](https://github.com/tailwindlabs/tailwindcss/pull/9616)) +- Fix missing PostCSS dependencies in the CLI ([#9617](https://github.com/tailwindlabs/tailwindcss/pull/9617)) +- Ensure `micromatch` is a proper CLI dependency ([#9620](https://github.com/tailwindlabs/tailwindcss/pull/9620)) +- Ensure modifier values exist when using a `modifiers` object for `matchVariant` ([ba6551d](https://github.com/tailwindlabs/tailwindcss/commit/ba6551db0f2726461371b4f3c6cd4c7090888504)) + +## [3.2.0] - 2022-10-19 + +### Added + +- Add new `@config` directive ([#9405](https://github.com/tailwindlabs/tailwindcss/pull/9405)) +- Add new `relative: true` option to resolve content paths relative to the config file ([#9396](https://github.com/tailwindlabs/tailwindcss/pull/9396)) +- Add new `supports-*` variant ([#9453](https://github.com/tailwindlabs/tailwindcss/pull/9453)) +- Add new `min-*` and `max-*` variants ([#9558](https://github.com/tailwindlabs/tailwindcss/pull/9558)) +- Add new `aria-*` variants ([#9557](https://github.com/tailwindlabs/tailwindcss/pull/9557), [#9588](https://github.com/tailwindlabs/tailwindcss/pull/9588)) +- Add new `data-*` variants ([#9559](https://github.com/tailwindlabs/tailwindcss/pull/9559), [#9588](https://github.com/tailwindlabs/tailwindcss/pull/9588)) +- Add new `break-keep` utility for `word-break: keep-all` ([#9393](https://github.com/tailwindlabs/tailwindcss/pull/9393)) +- Add new `collapse` utility for `visibility: collapse` ([#9181](https://github.com/tailwindlabs/tailwindcss/pull/9181)) +- Add new `fill-none` utility for `fill: none` ([#9403](https://github.com/tailwindlabs/tailwindcss/pull/9403)) +- Add new `stroke-none` utility for `stroke: none` ([#9403](https://github.com/tailwindlabs/tailwindcss/pull/9403)) +- Add new `place-content-baseline` utility for `place-content: baseline` ([#9498](https://github.com/tailwindlabs/tailwindcss/pull/9498)) +- Add new `place-items-baseline` utility for `place-items: baseline` ([#9507](https://github.com/tailwindlabs/tailwindcss/pull/9507)) +- Add new `content-baseline` utility for `align-content: baseline` ([#9507](https://github.com/tailwindlabs/tailwindcss/pull/9507)) +- Add support for configuring default `font-feature-settings` for a font family ([#9039](https://github.com/tailwindlabs/tailwindcss/pull/9039)) +- Add standalone CLI build for 32-bit Linux on ARM (`node16-linux-armv7`) ([#9084](https://github.com/tailwindlabs/tailwindcss/pull/9084)) +- Add future flag to disable color opacity utility plugins ([#9088](https://github.com/tailwindlabs/tailwindcss/pull/9088)) +- Add negative value support for `outline-offset` ([#9136](https://github.com/tailwindlabs/tailwindcss/pull/9136)) +- Add support for modifiers to `matchUtilities` ([#9541](https://github.com/tailwindlabs/tailwindcss/pull/9541)) +- Allow negating utilities using `min`/`max`/`clamp` ([#9237](https://github.com/tailwindlabs/tailwindcss/pull/9237)) +- Implement fallback plugins when there is ambiguity between plugins when using arbitrary values ([#9376](https://github.com/tailwindlabs/tailwindcss/pull/9376)) +- Support `sort` function in `matchVariant` ([#9423](https://github.com/tailwindlabs/tailwindcss/pull/9423)) +- Upgrade to `postcss-nested` v6.0 ([#9546](https://github.com/tailwindlabs/tailwindcss/pull/9546)) + +### Fixed + +- Use absolute paths when resolving changed files for resilience against working directory changes ([#9032](https://github.com/tailwindlabs/tailwindcss/pull/9032)) +- Fix ring color utility generation when using `respectDefaultRingColorOpacity` ([#9070](https://github.com/tailwindlabs/tailwindcss/pull/9070)) +- Sort tags before classes when `@apply`-ing a selector with joined classes ([#9107](https://github.com/tailwindlabs/tailwindcss/pull/9107)) +- Remove invalid `outline-hidden` utility ([#9147](https://github.com/tailwindlabs/tailwindcss/pull/9147)) +- Honor the `hidden` attribute on elements in preflight ([#9174](https://github.com/tailwindlabs/tailwindcss/pull/9174)) +- Don't stop watching atomically renamed files ([#9173](https://github.com/tailwindlabs/tailwindcss/pull/9173), [#9215](https://github.com/tailwindlabs/tailwindcss/pull/9215)) +- Fix duplicate utilities issue causing memory leaks ([#9208](https://github.com/tailwindlabs/tailwindcss/pull/9208)) +- Fix `fontFamily` config TypeScript types ([#9214](https://github.com/tailwindlabs/tailwindcss/pull/9214)) +- Handle variants on complex selector utilities ([#9262](https://github.com/tailwindlabs/tailwindcss/pull/9262)) +- Fix shared config mutation issue ([#9294](https://github.com/tailwindlabs/tailwindcss/pull/9294)) +- Fix ordering of parallel variants ([#9282](https://github.com/tailwindlabs/tailwindcss/pull/9282)) +- Handle variants in utility selectors using `:where()` and `:has()` ([#9309](https://github.com/tailwindlabs/tailwindcss/pull/9309)) +- Improve data type analysis for arbitrary values ([#9320](https://github.com/tailwindlabs/tailwindcss/pull/9320)) +- Don't emit generated utilities with invalid uses of theme functions ([#9319](https://github.com/tailwindlabs/tailwindcss/pull/9319)) +- Revert change that only listened for stdin close on TTYs ([#9331](https://github.com/tailwindlabs/tailwindcss/pull/9331)) +- Ignore unset values (like `null` or `undefined`) when resolving the classList for intellisense ([#9385](https://github.com/tailwindlabs/tailwindcss/pull/9385)) +- Improve type checking for formal syntax ([#9349](https://github.com/tailwindlabs/tailwindcss/pull/9349), [#9448](https://github.com/tailwindlabs/tailwindcss/pull/9448)) +- Fix incorrect required `content` key in custom plugin configs ([#9502](https://github.com/tailwindlabs/tailwindcss/pull/9502), [#9545](https://github.com/tailwindlabs/tailwindcss/pull/9545)) +- Fix content path detection on Windows ([#9569](https://github.com/tailwindlabs/tailwindcss/pull/9569)) +- Ensure `--content` is used in the CLI when passed ([#9587](https://github.com/tailwindlabs/tailwindcss/pull/9587)) + +## [3.1.8] - 2022-08-05 + +### Fixed + +- Don’t prefix classes within reused arbitrary variants ([#8992](https://github.com/tailwindlabs/tailwindcss/pull/8992)) +- Fix usage of alpha values inside single-named colors that are functions ([#9008](https://github.com/tailwindlabs/tailwindcss/pull/9008)) +- Fix `@apply` of user utilities when negative and non-negative versions both exist ([#9027](https://github.com/tailwindlabs/tailwindcss/pull/9027)) + +## [3.1.7] - 2022-07-29 + +### Fixed + +- Don't rewrite source maps for `@layer` rules ([#8971](https://github.com/tailwindlabs/tailwindcss/pull/8971)) + +### Added + +- Added types for `resolveConfig` ([#8924](https://github.com/tailwindlabs/tailwindcss/pull/8924)) + +## [3.1.6] - 2022-07-11 + +### Fixed + +- Fix usage on Node 12.x ([b4e637e](https://github.com/tailwindlabs/tailwindcss/commit/b4e637e2e096a9d6f2210efba9541f6fd4f28e56)) +- Handle theme keys with slashes when using `theme()` in CSS ([#8831](https://github.com/tailwindlabs/tailwindcss/pull/8831)) + +## [3.1.5] - 2022-07-07 + +### Added + +- Support configuring a default `font-weight` for each font size utility ([#8763](https://github.com/tailwindlabs/tailwindcss/pull/8763)) +- Add support for alpha values in safe list ([#8774](https://github.com/tailwindlabs/tailwindcss/pull/8774)) + +### Fixed + +- Improve types to support fallback values in the CSS-in-JS syntax used in plugin APIs ([#8762](https://github.com/tailwindlabs/tailwindcss/pull/8762)) +- Support including `tailwindcss` and `autoprefixer` in `postcss.config.js` in standalone CLI ([#8769](https://github.com/tailwindlabs/tailwindcss/pull/8769)) +- Fix using special-characters as prefixes ([#8772](https://github.com/tailwindlabs/tailwindcss/pull/8772)) +- Don’t prefix classes used within arbitrary variants ([#8773](https://github.com/tailwindlabs/tailwindcss/pull/8773)) +- Add more explicit types for the default theme ([#8780](https://github.com/tailwindlabs/tailwindcss/pull/8780)) + +## [3.1.4] - 2022-06-21 + +### Fixed + +- Provide default to `` when using `theme()` ([#8652](https://github.com/tailwindlabs/tailwindcss/pull/8652)) +- Detect arbitrary variants with quotes ([#8687](https://github.com/tailwindlabs/tailwindcss/pull/8687)) +- Don’t add spaces around raw `/` that are preceded by numbers ([#8688](https://github.com/tailwindlabs/tailwindcss/pull/8688)) + +## [3.1.3] - 2022-06-14 + +### Fixed + +- Fix extraction of multi-word utilities with arbitrary values and quotes ([#8604](https://github.com/tailwindlabs/tailwindcss/pull/8604)) +- Fix casing of import of `corePluginList` type definition ([#8587](https://github.com/tailwindlabs/tailwindcss/pull/8587)) +- Ignore PostCSS nodes returned by `addVariant` ([#8608](https://github.com/tailwindlabs/tailwindcss/pull/8608)) +- Fix missing spaces around arithmetic operators ([#8615](https://github.com/tailwindlabs/tailwindcss/pull/8615)) +- Detect alpha value in CSS `theme()` function when using quotes ([#8625](https://github.com/tailwindlabs/tailwindcss/pull/8625)) +- Fix "Maximum call stack size exceeded" bug ([#8636](https://github.com/tailwindlabs/tailwindcss/pull/8636)) +- Allow functions returning parallel variants to mutate the container ([#8622](https://github.com/tailwindlabs/tailwindcss/pull/8622)) +- Remove text opacity CSS variables from `::marker` ([#8622](https://github.com/tailwindlabs/tailwindcss/pull/8622)) + +## [3.1.2] - 2022-06-10 + +### Fixed + +- Ensure `\` is a valid arbitrary variant token ([#8576](https://github.com/tailwindlabs/tailwindcss/pull/8576)) +- Enable `postcss-import` in the CLI by default in watch mode ([#8574](https://github.com/tailwindlabs/tailwindcss/pull/8574), [#8580](https://github.com/tailwindlabs/tailwindcss/pull/8580)) + +## [3.1.1] - 2022-06-09 + +### Fixed + +- Fix candidate extractor regression ([#8558](https://github.com/tailwindlabs/tailwindcss/pull/8558)) +- Split `::backdrop` into separate defaults group ([#8567](https://github.com/tailwindlabs/tailwindcss/pull/8567)) +- Fix postcss plugin type ([#8564](https://github.com/tailwindlabs/tailwindcss/pull/8564)) +- Fix class detection in markdown code fences and slim templates ([#8569](https://github.com/tailwindlabs/tailwindcss/pull/8569)) + +## [3.1.0] - 2022-06-08 + +### Fixed + +- Types: allow for arbitrary theme values (for 3rd party plugins) ([#7926](https://github.com/tailwindlabs/tailwindcss/pull/7926)) +- Don’t split vars with numbers in them inside arbitrary values ([#8091](https://github.com/tailwindlabs/tailwindcss/pull/8091)) +- Require matching prefix when detecting negatives ([#8121](https://github.com/tailwindlabs/tailwindcss/pull/8121)) +- Handle duplicate At Rules without children ([#8122](https://github.com/tailwindlabs/tailwindcss/pull/8122)) +- Allow arbitrary values with commas in `@apply` ([#8125](https://github.com/tailwindlabs/tailwindcss/pull/8125)) +- Fix intellisense for plugins with multiple `@apply` rules ([#8213](https://github.com/tailwindlabs/tailwindcss/pull/8213)) +- Improve type detection for arbitrary color values ([#8201](https://github.com/tailwindlabs/tailwindcss/pull/8201)) +- Support PostCSS config options in config file in CLI ([#8226](https://github.com/tailwindlabs/tailwindcss/pull/8226)) +- Remove default `[hidden]` style in preflight ([#8248](https://github.com/tailwindlabs/tailwindcss/pull/8248)) +- Only check selectors containing base apply candidates for circular dependencies ([#8222](https://github.com/tailwindlabs/tailwindcss/pull/8222)) +- Rewrite default class extractor ([#8204](https://github.com/tailwindlabs/tailwindcss/pull/8204)) +- Move `important` selector to the front when `@apply`-ing selector-modifying variants in custom utilities ([#8313](https://github.com/tailwindlabs/tailwindcss/pull/8313)) +- Error when registering an invalid custom variant ([#8345](https://github.com/tailwindlabs/tailwindcss/pull/8345)) +- Create tailwind.config.cjs file in ESM package when running init ([#8363](https://github.com/tailwindlabs/tailwindcss/pull/8363)) +- Fix `matchVariant` that use at-rules and placeholders ([#8392](https://github.com/tailwindlabs/tailwindcss/pull/8392)) +- Improve types of the `tailwindcss/plugin` ([#8400](https://github.com/tailwindlabs/tailwindcss/pull/8400)) +- Allow returning parallel variants from `addVariant` or `matchVariant` callback functions ([#8455](https://github.com/tailwindlabs/tailwindcss/pull/8455)) +- Try using local `postcss` installation first in the CLI ([#8270](https://github.com/tailwindlabs/tailwindcss/pull/8270)) +- Allow default ring color to be a function ([#7587](https://github.com/tailwindlabs/tailwindcss/pull/7587)) +- Don't inherit `to` value from parent gradients ([#8489](https://github.com/tailwindlabs/tailwindcss/pull/8489)) +- Remove process dependency from log functions ([#8530](https://github.com/tailwindlabs/tailwindcss/pull/8530)) +- Ensure we can use `@import 'tailwindcss/...'` without node_modules ([#8537](https://github.com/tailwindlabs/tailwindcss/pull/8537)) + +### Changed + +- Only apply hover styles when supported (future) ([#8394](https://github.com/tailwindlabs/tailwindcss/pull/8394)) +- Respect default ring color opacity (future) ([#8448](https://github.com/tailwindlabs/tailwindcss/pull/8448), [3f4005e](https://github.com/tailwindlabs/tailwindcss/commit/3f4005e833445f7549219eb5ae89728cbb3a2630)) + +### Added + +- Support PostCSS `Document` nodes ([#7291](https://github.com/tailwindlabs/tailwindcss/pull/7291)) +- Add `text-start` and `text-end` utilities ([#6656](https://github.com/tailwindlabs/tailwindcss/pull/6656)) +- Support customizing class name when using `darkMode: 'class'` ([#5800](https://github.com/tailwindlabs/tailwindcss/pull/5800)) +- Add `--poll` option to the CLI ([#7725](https://github.com/tailwindlabs/tailwindcss/pull/7725)) +- Add new `border-spacing` utilities ([#7102](https://github.com/tailwindlabs/tailwindcss/pull/7102)) +- Add `enabled` variant ([#7905](https://github.com/tailwindlabs/tailwindcss/pull/7905)) +- Add TypeScript types for the `tailwind.config.js` file ([#7891](https://github.com/tailwindlabs/tailwindcss/pull/7891)) +- Add `backdrop` variant ([#7924](https://github.com/tailwindlabs/tailwindcss/pull/7924), [#8526](https://github.com/tailwindlabs/tailwindcss/pull/8526)) +- Add `grid-flow-dense` utility ([#8193](https://github.com/tailwindlabs/tailwindcss/pull/8193)) +- Add `mix-blend-plus-lighter` utility ([#8288](https://github.com/tailwindlabs/tailwindcss/pull/8288)) +- Add arbitrary variants ([#8299](https://github.com/tailwindlabs/tailwindcss/pull/8299)) +- Add experimental `matchVariant` API ([#8310](https://github.com/tailwindlabs/tailwindcss/pull/8310), [34fd0fb8](https://github.com/tailwindlabs/tailwindcss/commit/34fd0fb82aa574cddc5c7aa3ad7d1af5e3735e5d)) +- Add `prefers-contrast` media query variants ([#8410](https://github.com/tailwindlabs/tailwindcss/pull/8410)) +- Add opacity support when referencing colors with `theme` function ([#8416](https://github.com/tailwindlabs/tailwindcss/pull/8416)) +- Add `postcss-import` support to the CLI ([#8437](https://github.com/tailwindlabs/tailwindcss/pull/8437)) +- Add `optional` variant ([#8486](https://github.com/tailwindlabs/tailwindcss/pull/8486)) +- Add `` placeholder support for custom colors ([#8501](https://github.com/tailwindlabs/tailwindcss/pull/8501)) + +## [3.0.24] - 2022-04-12 + +### Fixed + +- Prevent nesting plugin from breaking other plugins ([#7563](https://github.com/tailwindlabs/tailwindcss/pull/7563)) +- Recursively collapse adjacent rules ([#7565](https://github.com/tailwindlabs/tailwindcss/pull/7565)) +- Preserve source maps for generated CSS ([#7588](https://github.com/tailwindlabs/tailwindcss/pull/7588)) +- Split box shadows on top-level commas only ([#7479](https://github.com/tailwindlabs/tailwindcss/pull/7479)) +- Use local user CSS cache for `@apply` ([#7524](https://github.com/tailwindlabs/tailwindcss/pull/7524)) +- Invalidate context when main CSS changes ([#7626](https://github.com/tailwindlabs/tailwindcss/pull/7626)) +- Only add `!` to selector class matching template candidate when using important modifier with multi-class selectors ([#7664](https://github.com/tailwindlabs/tailwindcss/pull/7664)) +- Correctly parse and prefix animation names with dots ([#7163](https://github.com/tailwindlabs/tailwindcss/pull/7163)) +- Fix extraction from template literal/function with array ([#7481](https://github.com/tailwindlabs/tailwindcss/pull/7481)) +- Don't output unparsable arbitrary values ([#7789](https://github.com/tailwindlabs/tailwindcss/pull/7789)) +- Fix generation of `div:not(.foo)` if `.foo` is never defined ([#7815](https://github.com/tailwindlabs/tailwindcss/pull/7815)) +- Allow for custom properties in `rgb`, `rgba`, `hsl` and `hsla` colors ([#7933](https://github.com/tailwindlabs/tailwindcss/pull/7933)) +- Remove autoprefixer as explicit peer-dependency to avoid invalid warnings in situations where it isn't actually needed ([#7949](https://github.com/tailwindlabs/tailwindcss/pull/7949)) +- Ensure the `percentage` data type is validated correctly ([#8015](https://github.com/tailwindlabs/tailwindcss/pull/8015)) +- Make sure `font-weight` is inherited by form controls in all browsers ([#8078](https://github.com/tailwindlabs/tailwindcss/pull/8078)) + +### Changed + +- Replace `chalk` with `picocolors` ([#6039](https://github.com/tailwindlabs/tailwindcss/pull/6039)) +- Replace `cosmiconfig` with `lilconfig` ([#6039](https://github.com/tailwindlabs/tailwindcss/pull/6038)) +- Update `cssnano` to avoid removing empty variables when minifying ([#7818](https://github.com/tailwindlabs/tailwindcss/pull/7818)) + +## [3.0.23] - 2022-02-16 + +### Fixed + +- Remove opacity variables from `:visited` pseudo class ([#7458](https://github.com/tailwindlabs/tailwindcss/pull/7458)) +- Support arbitrary values + calc + theme with quotes ([#7462](https://github.com/tailwindlabs/tailwindcss/pull/7462)) +- Don't duplicate layer output when scanning content with variants + wildcards ([#7478](https://github.com/tailwindlabs/tailwindcss/pull/7478)) +- Implement `getClassOrder` instead of `sortClassList` ([#7459](https://github.com/tailwindlabs/tailwindcss/pull/7459)) + +## [3.0.22] - 2022-02-11 + +### Fixed + +- Temporarily move `postcss` to dependencies ([#7424](https://github.com/tailwindlabs/tailwindcss/pull/7424)) + +## [3.0.21] - 2022-02-10 + +### Fixed + +- Move prettier plugin to dev dependencies ([#7418](https://github.com/tailwindlabs/tailwindcss/pull/7418)) + +## [3.0.20] - 2022-02-10 + +### Added + +- Expose `context.sortClassList(classes)` ([#7412](https://github.com/tailwindlabs/tailwindcss/pull/7412)) + +## [3.0.19] - 2022-02-07 + +### Fixed + +- Fix preflight border color fallback ([#7288](https://github.com/tailwindlabs/tailwindcss/pull/7288)) +- Correctly parse shadow lengths without a leading zero ([#7289](https://github.com/tailwindlabs/tailwindcss/pull/7289)) +- Don't crash when scanning extremely long class candidates ([#7331](https://github.com/tailwindlabs/tailwindcss/pull/7331)) +- Use less hacky fix for URLs detected as custom properties ([#7275](https://github.com/tailwindlabs/tailwindcss/pull/7275)) +- Correctly generate negative utilities when dash is before the prefix ([#7295](https://github.com/tailwindlabs/tailwindcss/pull/7295)) +- Detect prefixed negative utilities in the safelist ([#7295](https://github.com/tailwindlabs/tailwindcss/pull/7295)) + +## [3.0.18] - 2022-01-28 + +### Fixed + +- Fix `@apply` order regression (in `addComponents`, `addUtilities`, ...) ([#7232](https://github.com/tailwindlabs/tailwindcss/pull/7232)) +- Quick fix for incorrect arbitrary properties when using URLs ([#7252](https://github.com/tailwindlabs/tailwindcss/pull/7252)) + +## [3.0.17] - 2022-01-26 + +### Fixed + +- Remove false positive warning in CLI when using the `--content` option ([#7220](https://github.com/tailwindlabs/tailwindcss/pull/7220)) + +## [3.0.16] - 2022-01-24 + +### Fixed + +- Ensure to transpile the PostCSS Nesting plugin (tailwindcss/nesting) ([#7080](https://github.com/tailwindlabs/tailwindcss/pull/7080)) +- Improve various warnings ([#7118](https://github.com/tailwindlabs/tailwindcss/pull/7118)) +- Fix grammatical mistake ([cca5a38](https://github.com/tailwindlabs/tailwindcss/commit/cca5a3804e1d3ee0214491921e1aec35bf62a813)) + +## [3.0.15] - 2022-01-15 + +### Fixed + +- Temporarily remove optional chaining in nesting plugin ([#7077](https://github.com/tailwindlabs/tailwindcss/pull/7077)) + +## [3.0.14] - 2022-01-14 + +### Added + +- Show warnings for invalid content config ([#7065](https://github.com/tailwindlabs/tailwindcss/pull/7065)) + +### Fixed + +- Only emit utility/component variants when those layers exist ([#7066](https://github.com/tailwindlabs/tailwindcss/pull/7066)) +- Ensure nesting plugins can receive options ([#7016](https://github.com/tailwindlabs/tailwindcss/pull/7016)) + +## [3.0.13] - 2022-01-11 + +### Fixed + +- Fix consecutive builds with at apply producing different CSS ([#6999](https://github.com/tailwindlabs/tailwindcss/pull/6999)) + +## [3.0.12] - 2022-01-07 + +### Fixed + +- Allow use of falsy values in theme config ([#6917](https://github.com/tailwindlabs/tailwindcss/pull/6917)) +- Ensure we can apply classes that are grouped with non-class selectors ([#6922](https://github.com/tailwindlabs/tailwindcss/pull/6922)) +- Improve standalone CLI compatibility on Linux by switching to the `linuxstatic` build target ([#6914](https://github.com/tailwindlabs/tailwindcss/pull/6914)) +- Ensure `@apply` works consistently with or without `@layer` ([#6938](https://github.com/tailwindlabs/tailwindcss/pull/6938)) +- Only emit defaults when using base layer ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926)) +- Emit plugin defaults regardless of usage ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926)) +- Move default border color back to preflight ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926)) +- Change `experimental.optimizeUniversalDefaults` to only work with `@tailwind base` ([#6926](https://github.com/tailwindlabs/tailwindcss/pull/6926)) + +## [3.0.11] - 2022-01-05 + +### Fixed + +- Preserve casing of CSS variables added by plugins ([#6888](https://github.com/tailwindlabs/tailwindcss/pull/6888)) +- Ignore content paths that are passed in but don't actually exist ([#6901](https://github.com/tailwindlabs/tailwindcss/pull/6901)) +- Revert change that applies Tailwind's defaults in isolated environments like CSS modules ([9fdc391](https://github.com/tailwindlabs/tailwindcss/commit/9fdc391d4ff93e7e350f5ce439060176b1f0162f)) + +## [3.0.10] - 2022-01-04 + +### Fixed + +- Fix `@apply` in files without `@tailwind` directives ([#6580](https://github.com/tailwindlabs/tailwindcss/pull/6580), [#6875](https://github.com/tailwindlabs/tailwindcss/pull/6875)) +- CLI: avoid unnecessary writes to output files ([#6550](https://github.com/tailwindlabs/tailwindcss/pull/6550)) + +### Added + +- Allow piping data into the CLI ([#6876](https://github.com/tailwindlabs/tailwindcss/pull/6876)) + +## [3.0.9] - 2022-01-03 + +### Fixed + +- Improve `DEBUG` flag ([#6797](https://github.com/tailwindlabs/tailwindcss/pull/6797), [#6804](https://github.com/tailwindlabs/tailwindcss/pull/6804)) +- Ensure we can use `<` and `>` characters in modifiers ([#6851](https://github.com/tailwindlabs/tailwindcss/pull/6851)) +- Validate `theme()` works in arbitrary values ([#6852](https://github.com/tailwindlabs/tailwindcss/pull/6852)) +- Properly detect `theme()` value usage in arbitrary properties ([#6854](https://github.com/tailwindlabs/tailwindcss/pull/6854)) +- Improve collapsing of duplicate declarations ([#6856](https://github.com/tailwindlabs/tailwindcss/pull/6856)) +- Remove support for `TAILWIND_MODE=watch` ([#6858](https://github.com/tailwindlabs/tailwindcss/pull/6858)) + +## [3.0.8] - 2021-12-28 + +### Fixed + +- Reduce specificity of `abbr` rule in preflight ([#6671](https://github.com/tailwindlabs/tailwindcss/pull/6671)) +- Support HSL with hue units in arbitrary values ([#6726](https://github.com/tailwindlabs/tailwindcss/pull/6726)) +- Add `node16-linux-arm64` target for standalone CLI ([#6693](https://github.com/tailwindlabs/tailwindcss/pull/6693)) + +## [3.0.7] - 2021-12-17 + +### Fixed + +- Don't mutate custom color palette when overriding per-plugin colors ([#6546](https://github.com/tailwindlabs/tailwindcss/pull/6546)) +- Improve circular dependency detection when using `@apply` ([#6588](https://github.com/tailwindlabs/tailwindcss/pull/6588)) +- Only generate variants for non-`user` layers ([#6589](https://github.com/tailwindlabs/tailwindcss/pull/6589)) +- Properly extract classes with arbitrary values in arrays and classes followed by escaped quotes ([#6590](https://github.com/tailwindlabs/tailwindcss/pull/6590)) +- Improve jsx interpolation candidate matching ([#6593](https://github.com/tailwindlabs/tailwindcss/pull/6593)) +- Ensure `@apply` of a rule inside an AtRule works ([#6594](https://github.com/tailwindlabs/tailwindcss/pull/6594)) + +## [3.0.6] - 2021-12-16 + +### Fixed + +- Support square bracket notation in paths ([#6519](https://github.com/tailwindlabs/tailwindcss/pull/6519)) +- Ensure all plugins are executed for a given candidate ([#6540](https://github.com/tailwindlabs/tailwindcss/pull/6540)) + +## [3.0.5] - 2021-12-15 + +### Fixed + +- Revert: add `li` to list-style reset ([9777562d](https://github.com/tailwindlabs/tailwindcss/commit/9777562da37ee631bbf77374c0d14825f09ef9af)) + +## [3.0.4] - 2021-12-15 + +### Fixed + +- Insert always-on defaults layer in correct spot ([#6526](https://github.com/tailwindlabs/tailwindcss/pull/6526)) + +## [3.0.3] - 2021-12-15 + +### Added + +- Warn about invalid globs in `content` ([#6449](https://github.com/tailwindlabs/tailwindcss/pull/6449)) +- Add standalone tailwindcss CLI ([#6506](https://github.com/tailwindlabs/tailwindcss/pull/6506)) +- Add `li` to list-style reset ([00f60e6](https://github.com/tailwindlabs/tailwindcss/commit/00f60e61013c6e4e3419e4b699371a13eb30b75d)) + +### Fixed + +- Don't output unparsable values ([#6469](https://github.com/tailwindlabs/tailwindcss/pull/6469)) +- Fix text decoration utilities from overriding the new text decoration color/style/thickness utilities when used with a modifier ([#6378](https://github.com/tailwindlabs/tailwindcss/pull/6378)) +- Move defaults to their own always-on layer ([#6500](https://github.com/tailwindlabs/tailwindcss/pull/6500)) +- Support negative values in safelist patterns ([#6480](https://github.com/tailwindlabs/tailwindcss/pull/6480)) + +## [3.0.2] - 2021-12-13 + +### Fixed + +- Temporarily disable optimize universal defaults, fixes issue with transforms/filters/rings not being `@apply`-able in CSS modules/Svelte components/Vue components ([#6461](https://github.com/tailwindlabs/tailwindcss/pull/6461)) + +## [3.0.1] - 2021-12-10 + +### Fixed + +- Ensure complex variants with multiple classes work ([#6311](https://github.com/tailwindlabs/tailwindcss/pull/6311)) +- Re-add `default` interop to public available functions ([#6348](https://github.com/tailwindlabs/tailwindcss/pull/6348)) +- Detect circular dependencies when using `@apply` ([#6365](https://github.com/tailwindlabs/tailwindcss/pull/6365)) +- Fix defaults optimization when vendor prefixes are involved ([#6369](https://github.com/tailwindlabs/tailwindcss/pull/6369)) + +## [3.0.0] - 2021-12-09 + +### Fixed + +- Enforce the order of some variants (like `before` and `after`) ([#6018](https://github.com/tailwindlabs/tailwindcss/pull/6018)) + +### Added + +- Add `placeholder` variant ([#6106](https://github.com/tailwindlabs/tailwindcss/pull/6106)) +- Add composable `touch-action` utilities ([#6115](https://github.com/tailwindlabs/tailwindcss/pull/6115)) +- Add support for "arbitrary properties" ([#6161](https://github.com/tailwindlabs/tailwindcss/pull/6161)) +- Add `portrait` and `landscape` variants ([#6046](https://github.com/tailwindlabs/tailwindcss/pull/6046)) +- Add `text-decoration-style`, `text-decoration-thickness`, and `text-underline-offset` utilities ([#6004](https://github.com/tailwindlabs/tailwindcss/pull/6004)) +- Add `menu` reset to preflight ([#6213](https://github.com/tailwindlabs/tailwindcss/pull/6213)) +- Allow `0` as a valid `length` value ([#6233](https://github.com/tailwindlabs/tailwindcss/pull/6233), [#6259](https://github.com/tailwindlabs/tailwindcss/pull/6259)) +- Add CSS functions to data types ([#6258](https://github.com/tailwindlabs/tailwindcss/pull/6258)) +- Support negative values for `scale-*` utilities ([c48e629](https://github.com/tailwindlabs/tailwindcss/commit/c48e629955585ad18dadba9f470fda59cc448ab7)) +- Improve `length` data type, by validating each value individually ([#6283](https://github.com/tailwindlabs/tailwindcss/pull/6283)) + +### Changed + +- Deprecate `decoration-slice` and `decoration-break` in favor `box-decoration-slice` and `box-decoration-break` _(non-breaking)_ ([#6004](https://github.com/tailwindlabs/tailwindcss/pull/6004)) + +## [3.0.0-alpha.2] - 2021-11-08 + +### Changed + +- Don't use pointer cursor on disabled buttons by default ([#5772](https://github.com/tailwindlabs/tailwindcss/pull/5772)) +- Set default content value in preflight instead of within each before/after utility ([#5820](https://github.com/tailwindlabs/tailwindcss/pull/5820)) +- Remove `prefix` as a function ([#5829](https://github.com/tailwindlabs/tailwindcss/pull/5829)) + +### Added + +- Add `flex-basis` utilities ([#5671](https://github.com/tailwindlabs/tailwindcss/pull/5671)) +- Make negative values a first-class feature ([#5709](https://github.com/tailwindlabs/tailwindcss/pull/5709)) +- Add `fit-content` values for `min/max-width/height` utilities ([#5638](https://github.com/tailwindlabs/tailwindcss/pull/5638)) +- Add `min/max-content` values for `min/max-height` utilities ([#5729](https://github.com/tailwindlabs/tailwindcss/pull/5729)) +- Add all standard `cursor-*` values by default ([#5734](https://github.com/tailwindlabs/tailwindcss/pull/5734)) +- Add `grow-*` and `shrink-*` utilities, deprecate `flex-grow-*` and `flex-shrink-*` ([#5733](https://github.com/tailwindlabs/tailwindcss/pull/5733)) +- Add `text-decoration-color` utilities ([#5760](https://github.com/tailwindlabs/tailwindcss/pull/5760)) +- Add new declarative `addVariant` API ([#5809](https://github.com/tailwindlabs/tailwindcss/pull/5809)) +- Add first-class `print` variant for targeting printed media ([#5885](https://github.com/tailwindlabs/tailwindcss/pull/5885)) +- Add `outline-style`, `outline-color`, `outline-width` and `outline-offset` utilities ([#5887](https://github.com/tailwindlabs/tailwindcss/pull/5887)) +- Add full color palette for `fill-*` and `stroke-*` utilities (#5933[](https://github.com/tailwindlabs/tailwindcss/pull/5933)) +- Add composable API for colored box shadows ([#5979](https://github.com/tailwindlabs/tailwindcss/pull/5979)) + +### Fixed + +- Configure chokidar's `awaitWriteFinish` setting to avoid occasional stale builds on Windows ([#5774](https://github.com/tailwindlabs/tailwindcss/pull/5774)) +- Fix CLI `--content` option ([#5775](https://github.com/tailwindlabs/tailwindcss/pull/5775)) +- Fix before/after utilities overriding custom content values at larger breakpoints ([#5820](https://github.com/tailwindlabs/tailwindcss/pull/5820)) +- Cleanup duplicate properties ([#5830](https://github.com/tailwindlabs/tailwindcss/pull/5830)) +- Allow `_` inside `url()` when using arbitrary values ([#5853](https://github.com/tailwindlabs/tailwindcss/pull/5853)) +- Prevent crashes when using comments in `@layer` AtRules ([#5854](https://github.com/tailwindlabs/tailwindcss/pull/5854)) +- Handle color transformations properly with `theme(...)` for all relevant plugins ([#4533](https://github.com/tailwindlabs/tailwindcss/pull/4533), [#5871](https://github.com/tailwindlabs/tailwindcss/pull/5871)) +- Ensure `@apply`-ing a utility with multiple definitions works ([#5870](https://github.com/tailwindlabs/tailwindcss/pull/5870)) + +## [3.0.0-alpha.1] - 2021-10-01 + +### Changed + +- Remove AOT engine, make JIT the default ([#5340](https://github.com/tailwindlabs/tailwindcss/pull/5340)) +- Throw when trying to `@apply` the `group` class ([#4666](https://github.com/tailwindlabs/tailwindcss/pull/4666)) +- Remove dependency on `modern-normalize`, inline and consolidate with Preflight ([#5358](https://github.com/tailwindlabs/tailwindcss/pull/5358)) +- Enable extended color palette by default with updated color names ([#5384](https://github.com/tailwindlabs/tailwindcss/pull/5384)) +- Move `vertical-align` values to config file instead of hard-coding ([#5487](https://github.com/tailwindlabs/tailwindcss/pull/5487)) +- Rename `overflow-clip` to `text-clip` and `overflow-ellipsis` to `text-ellipsis` ([#5630](https://github.com/tailwindlabs/tailwindcss/pull/5630)) + +### Added + +- Add native `aspect-ratio` utilities ([#5359](https://github.com/tailwindlabs/tailwindcss/pull/5359)) +- Unify config callback helpers into single object ([#5382](https://github.com/tailwindlabs/tailwindcss/pull/5382)) +- Preserve original color format when adding opacity whenever possible ([#5154](https://github.com/tailwindlabs/tailwindcss/pull/5154)) +- Add `accent-color` utilities ([#5387](https://github.com/tailwindlabs/tailwindcss/pull/5387)) +- Add `scroll-behavior` utilities ([#5388](https://github.com/tailwindlabs/tailwindcss/pull/5388)) +- Add `will-change` utilities ([#5448](https://github.com/tailwindlabs/tailwindcss/pull/5448)) +- Add `text-indent` utilities ([#5449](https://github.com/tailwindlabs/tailwindcss/pull/5449)) +- Add `column` utilities ([#5457](https://github.com/tailwindlabs/tailwindcss/pull/5457)) +- Add `border-hidden` utility ([#5485](https://github.com/tailwindlabs/tailwindcss/pull/5485)) +- Add `align-sub` and `align-super` utilities by default ([#5486](https://github.com/tailwindlabs/tailwindcss/pull/5486)) +- Add `break-before`, `break-inside` and `break-after` utilities ([#5530](https://github.com/tailwindlabs/tailwindcss/pull/5530)) +- Add `file` variant for `::file-selector-button` pseudo element ([#4936](https://github.com/tailwindlabs/tailwindcss/pull/4936)) +- Add comprehensive arbitrary value support ([#5568](https://github.com/tailwindlabs/tailwindcss/pull/5568)) +- Add `touch-action` utilities ([#5603](https://github.com/tailwindlabs/tailwindcss/pull/5603)) +- Add `inherit` to default color palette ([#5597](https://github.com/tailwindlabs/tailwindcss/pull/5597)) +- Add `overflow-clip`, `overflow-x-clip` and `overflow-y-clip` utilities ([#5630](https://github.com/tailwindlabs/tailwindcss/pull/5630)) +- Add `[open]` variant ([#5627](https://github.com/tailwindlabs/tailwindcss/pull/5627)) +- Add `scroll-snap` utilities ([#5637](https://github.com/tailwindlabs/tailwindcss/pull/5637)) +- Add `border-x` and `border-y` width and color utilities ([#5639](https://github.com/tailwindlabs/tailwindcss/pull/5639)) + +### Fixed + +- Fix defining colors as functions when color opacity plugins are disabled ([#5470](https://github.com/tailwindlabs/tailwindcss/pull/5470)) +- Fix using negated `content` globs ([#5625](https://github.com/tailwindlabs/tailwindcss/pull/5625)) +- Fix using backslashes in `content` globs ([#5628](https://github.com/tailwindlabs/tailwindcss/pull/5628)) + +## [2.2.19] - 2021-10-29 + +### Fixed + +- Ensure `corePlugins` order is consistent in AOT mode ([#5928](https://github.com/tailwindlabs/tailwindcss/pull/5928)) + +## [2.2.18] - 2021-10-29 + +### Fixed + +- Bump versions for security vulnerabilities ([#5924](https://github.com/tailwindlabs/tailwindcss/pull/5924)) + +## [2.2.17] - 2021-10-13 + +### Fixed + +- Configure chokidar's `awaitWriteFinish` setting to avoid occasional stale builds on Windows ([#5758](https://github.com/tailwindlabs/tailwindcss/pull/5758)) + +## [2.2.16] - 2021-09-26 + +### Fixed + +- JIT: Properly handle animations that use CSS custom properties ([#5602](https://github.com/tailwindlabs/tailwindcss/pull/5602)) + +## [2.2.15] - 2021-09-10 + +### Fixed + +- Ensure using CLI without `-i` for input file continues to work even though deprecated ([#5464](https://github.com/tailwindlabs/tailwindcss/pull/5464)) + +## [2.2.14] - 2021-09-08 + +### Fixed + +- Only use `@defaults` in JIT, switch back to `clean-css` in case there's any meaningful differences in the output ([bf248cb](https://github.com/tailwindlabs/tailwindcss/commit/bf248cb0de889d48854fbdd26536f4a492556efd)) + +## [2.2.13] - 2021-09-08 + +### Fixed + +- Replace `clean-css` with `cssnano` for CDN builds to fix minified builds ([75cc3ca](https://github.com/tailwindlabs/tailwindcss/commit/75cc3ca305aedddc8a85f3df1a420fefad3fb5c4)) + +## [2.2.12] - 2021-09-08 + +### Fixed + +- Ensure that divide utilities inject a default border color ([#5438](https://github.com/tailwindlabs/tailwindcss/pull/5438)) + +## [2.2.11] - 2021-09-07 + +### Fixed + +- Rebundle to fix missing CLI peer dependencies + +## [2.2.10] - 2021-09-06 + +### Fixed + +- Fix build error when using `presets: []` in config file ([#4903](https://github.com/tailwindlabs/tailwindcss/pull/4903)) + +### Added + +- Reintroduce universal selector optimizations under experimental `optimizeUniversalDefaults` flag ([a9e160c](https://github.com/tailwindlabs/tailwindcss/commit/a9e160cf9acb75a2bbac34f8864568b12940f89a)) + +## [2.2.9] - 2021-08-30 + +### Fixed + +- JIT: Fix `@apply`ing utilities that contain variants + the important modifier ([#4854](https://github.com/tailwindlabs/tailwindcss/pull/4854)) +- JIT: Don't strip "null" when parsing tracked file paths ([#5008](https://github.com/tailwindlabs/tailwindcss/pull/5008)) +- Pin `clean-css` to v5.1.4 to fix empty CSS variables in CDN builds ([#5338](https://github.com/tailwindlabs/tailwindcss/pull/5338)) + +## [2.2.8] - 2021-08-27 + +### Fixed + +- Improve accessibility of default link focus styles in Firefox ([#5082](https://github.com/tailwindlabs/tailwindcss/pull/5082)) +- JIT: Fix animation variants corrupting keyframes rules ([#5223](https://github.com/tailwindlabs/tailwindcss/pull/5223)) +- JIT: Ignore escaped commas when splitting selectors to apply prefixes ([#5239](https://github.com/tailwindlabs/tailwindcss/pull/5239/)) +- Nesting: Maintain PostCSS node sources when handling `@apply` ([#5249](https://github.com/tailwindlabs/tailwindcss/pull/5249)) +- JIT: Fix support for animation lists ([#5252](https://github.com/tailwindlabs/tailwindcss/pull/5252)) +- JIT: Fix arbitrary value support for `object-position` utilities ([#5245](https://github.com/tailwindlabs/tailwindcss/pull/5245)) +- CLI: Abort watcher if stdin is closed to avoid zombie processes ([#4997](https://github.com/tailwindlabs/tailwindcss/pull/4997)) +- JIT: Ignore arbitrary values with unbalanced brackets ([#5293](https://github.com/tailwindlabs/tailwindcss/pull/5293)) + +## [2.2.7] - 2021-07-23 + +### Fixed + +- Temporarily revert runtime performance optimizations introduced in v2.2.5, use universal selector again ([#5060](https://github.com/tailwindlabs/tailwindcss/pull/5060)) + +## [2.2.6] - 2021-07-21 + +### Fixed + +- Fix issue where base styles not generated for translate transforms in JIT ([#5038](https://github.com/tailwindlabs/tailwindcss/pull/5038)) + +## [2.2.5] - 2021-07-21 + +### Added + +- Added `self-baseline` utility (I know this is a patch release, no one's going to die relax) ([#5000](https://github.com/tailwindlabs/tailwindcss/pull/5000)) + +### Changed + +- JIT: Optimize universal selector usage by inlining only the relevant selectors ([#4850](https://github.com/tailwindlabs/tailwindcss/pull/4850))) + + This provides a very significant performance boost on pages with a huge number of DOM nodes, but there's a chance it could be a breaking change in very rare edge cases we haven't thought of. Please open an issue if anything related to shadows, rings, transforms, filters, or backdrop-filters seems to be behaving differently after upgrading. + +### Fixed + +- Fix support for `step-start` and `step-end` in animation utilities ([#4795](https://github.com/tailwindlabs/tailwindcss/pull/4795))) +- JIT: Prevent presence of `!*` in templates from ruining everything ([#4816](https://github.com/tailwindlabs/tailwindcss/pull/4816))) +- JIT: Improve support for quotes in arbitrary values ([#4817](https://github.com/tailwindlabs/tailwindcss/pull/4817))) +- Fix filter/backdrop-filter/transform utilities being inserted into the wrong position if not all core plugins are enabled ([#4852](https://github.com/tailwindlabs/tailwindcss/pull/4852))) +- JIT: Fix `@layer` rules being mistakenly inserted during incremental rebuilds ([#4853](https://github.com/tailwindlabs/tailwindcss/pull/4853))) +- Improve build performance for projects with many small non-Tailwind stylesheets ([#4644](https://github.com/tailwindlabs/tailwindcss/pull/4644)) +- Ensure `[hidden]` works as expected on elements where we override the default `display` value in Preflight ([#4873](https://github.com/tailwindlabs/tailwindcss/pull/4873)) +- Fix variant configuration not being applied to `backdropOpacity` utilities ([#4892](https://github.com/tailwindlabs/tailwindcss/pull/4892)) + +## [2.2.4] - 2021-06-23 + +### Fixed + +- Remove `postinstall` script that was preventing people from installing the library ([1eacfb9](https://github.com/tailwindlabs/tailwindcss/commit/1eacfb98849c0d4737e0af3595ddec8c73addaac)) + +## [2.2.3] - 2021-06-23 + +### Added + +- Pass extended color palette to theme closures so it can be used without installing Tailwind when using `npx tailwindcss` ([359252c](https://github.com/tailwindlabs/tailwindcss/commit/359252c9b429e81217c28eb3ca7bab73d8f81e6d)) + +### Fixed + +- JIT: Explicitly error when `-` is used as a custom separator ([#4704](https://github.com/tailwindlabs/tailwindcss/pull/4704)) +- JIT: Don't add multiple `~` when stacking `peer-*` variants ([#4757](https://github.com/tailwindlabs/tailwindcss/pull/4757)) +- Remove outdated focus style fix in Preflight ([#4780](https://github.com/tailwindlabs/tailwindcss/pull/4780)) +- Enable `purge` if provided on the CLI ([#4772](https://github.com/tailwindlabs/tailwindcss/pull/4772)) +- JIT: Fix error when not using a config file with postcss-cli ([#4773](https://github.com/tailwindlabs/tailwindcss/pull/4773)) +- Fix issue with `resolveConfig` not being importable in Next.js pages ([#4725](https://github.com/tailwindlabs/tailwindcss/pull/4725)) + +## [2.2.2] - 2021-06-18 + +### Fixed + +- JIT: Reintroduce `transform`, `filter`, and `backdrop-filter` classes purely to create stacking contexts to minimize the impact of the breaking change ([#4700](https://github.com/tailwindlabs/tailwindcss/pull/4700)) + +## [2.2.1] - 2021-06-18 + +### Fixed + +- Recover from errors gracefully in CLI watch mode ([#4693](https://github.com/tailwindlabs/tailwindcss/pull/4693)) +- Fix issue with media queries not being generated properly when using PostCSS 7 ([#4695](https://github.com/tailwindlabs/tailwindcss/pull/4695)) + +## [2.2.0] - 2021-06-17 + +### Changed + +- JIT: Use "tracking" context by default instead of "watching" context for improved reliability with most bundlers ([#4514](https://github.com/tailwindlabs/tailwindcss/pull/4514)) + + Depending on which tooling you use, you may need to explicitly set `TAILWIND_MODE=watch` until your build runner has been updated to support PostCSS's `dir-dependency` message type. + +### Added + +- Add `background-origin` utilities ([#4117](https://github.com/tailwindlabs/tailwindcss/pull/4117)) +- Improve `@apply` performance in projects that process many CSS sources ([#3178](https://github.com/tailwindlabs/tailwindcss/pull/3718)) +- JIT: Don't use CSS variables for color utilities if color opacity utilities are disabled ([#3984](https://github.com/tailwindlabs/tailwindcss/pull/3984)) +- JIT: Redesign `matchUtilities` API to make it more suitable for third-party use ([#4232](https://github.com/tailwindlabs/tailwindcss/pull/4232)) +- JIT: Support applying important utility variants ([#4260](https://github.com/tailwindlabs/tailwindcss/pull/4260)) +- JIT: Support coercing arbitrary values when the type isn't detectable ([#4263](https://github.com/tailwindlabs/tailwindcss/pull/4263)) +- JIT: Support for `raw` syntax in `purge` config ([#4272](https://github.com/tailwindlabs/tailwindcss/pull/4272)) +- Add `empty` variant ([#3298](https://github.com/tailwindlabs/tailwindcss/pull/3298)) +- Update `modern-normalize` to v1.1 ([#4287](https://github.com/tailwindlabs/tailwindcss/pull/4287)) +- Implement `theme` function internally, remove `postcss-functions` dependency ([#4317](https://github.com/tailwindlabs/tailwindcss/pull/4317)) +- Add `screen` function to improve nesting plugin compatibility ([#4318](https://github.com/tailwindlabs/tailwindcss/pull/4318)) +- JIT: Add universal shorthand color opacity syntax ([#4348](https://github.com/tailwindlabs/tailwindcss/pull/4348)) +- JIT: Add `@tailwind variants` directive to replace `@tailwind screens` ([#4356](https://github.com/tailwindlabs/tailwindcss/pull/4356)) +- JIT: Add support for PostCSS `dir-dependency` messages in `TAILWIND_DISABLE_TOUCH` mode ([#4388](https://github.com/tailwindlabs/tailwindcss/pull/4388)) +- JIT: Add per-side border color utilities ([#4404](https://github.com/tailwindlabs/tailwindcss/pull/4404)) +- JIT: Add support for `before` and `after` pseudo-element variants and `content` utilities ([#4461](https://github.com/tailwindlabs/tailwindcss/pull/4461)) +- Add new `transform` and `extract` APIs to simplify PurgeCSS/JIT customization ([#4469](https://github.com/tailwindlabs/tailwindcss/pull/4469)) +- JIT: Add exhaustive pseudo-class and pseudo-element variant support ([#4482](https://github.com/tailwindlabs/tailwindcss/pull/4482)) +- JIT: Add `caret-color` utilities ([#4499](https://github.com/tailwindlabs/tailwindcss/pull/4499)) +- Rename `lightBlue` to `sky`, emit console warning when using deprecated name ([#4513](https://github.com/tailwindlabs/tailwindcss/pull/4513)) +- New CLI with improved JIT support, `--watch` mode, and more ([#4526](https://github.com/tailwindlabs/tailwindcss/pull/4526), [4558](https://github.com/tailwindlabs/tailwindcss/pull/4558)) +- JIT: Add new `peer-*` variants for styling based on sibling state ([#4556](https://github.com/tailwindlabs/tailwindcss/pull/4556)) +- Expose `safelist` as a top-level option under `purge` for both JIT and classic engines ([#4580](https://github.com/tailwindlabs/tailwindcss/pull/4580)) +- JIT: Remove need for `transform` class when using classes like `scale-*`, `rotate-*`, etc. ([#4604](https://github.com/tailwindlabs/tailwindcss/pull/4604)) +- JIT: Remove need for `filter` and `backdrop-filter` classes when using classes like `contrast-*`, `backdrop-blur-*`, etc. ([#4614](https://github.com/tailwindlabs/tailwindcss/pull/4614)) +- Support passing a custom path for your PostCSS configuration in the Tailwind CLI ([#4607](https://github.com/tailwindlabs/tailwindcss/pull/4607)) +- Add `blur-none` by default with intent to deprecate `blur-0` ([#4614](https://github.com/tailwindlabs/tailwindcss/pull/4614)) + +### Fixed + +- JIT: Improve support for Svelte class bindings ([#4187](https://github.com/tailwindlabs/tailwindcss/pull/4187)) +- JIT: Improve support for `calc` and `var` in arbitrary values ([#4147](https://github.com/tailwindlabs/tailwindcss/pull/4147)) +- Convert `hsl` colors to `hsla` when transforming for opacity support instead of `rgba` ([#3850](https://github.com/tailwindlabs/tailwindcss/pull/3850)) +- Fix `backdropBlur` variants not being generated ([#4188](https://github.com/tailwindlabs/tailwindcss/pull/4188)) +- Improve animation value parsing ([#4250](https://github.com/tailwindlabs/tailwindcss/pull/4250)) +- Ignore unknown object types when hashing config ([82f4eaa](https://github.com/tailwindlabs/tailwindcss/commit/82f4eaa6832ef8a4e3fd90869e7068efdf6e34f2)) +- Ensure variants are grouped properly for plugins with order-dependent utilities ([#4273](https://github.com/tailwindlabs/tailwindcss/pull/4273)) +- JIT: Fix temp file storage when node temp directories are kept on a different drive than the project itself ([#4044](https://github.com/tailwindlabs/tailwindcss/pull/4044)) +- Support border-opacity utilities alongside default `border` utility ([#4277](https://github.com/tailwindlabs/tailwindcss/pull/4277)) +- JIT: Fix source maps for expanded `@tailwind` directives ([2f15411](https://github.com/tailwindlabs/tailwindcss/commit/2f1541123dea29d8a2ab0f1411bf60c79eeb96b4)) +- JIT: Ignore whitespace when collapsing adjacent rules ([15642fb](https://github.com/tailwindlabs/tailwindcss/commit/15642fbcc885eba9cc50b7678a922b09c90d6b51)) +- JIT: Generate group parent classes correctly when using custom separator ([#4508](https://github.com/tailwindlabs/tailwindcss/pull/4508)) +- JIT: Fix incorrect stacking of multiple `group` variants ([#4551](https://github.com/tailwindlabs/tailwindcss/pull/4551)) +- JIT: Fix memory leak due to holding on to unused contexts ([#4571](https://github.com/tailwindlabs/tailwindcss/pull/4571)) + +### Internals + +- Add integration tests for popular build runners ([#4354](https://github.com/tailwindlabs/tailwindcss/pull/4354)) + +## [2.1.4] - 2021-06-02 + +### Fixed + +- Skip `raw` PurgeCSS sources when registering template dependencies ([#4542](https://github.com/tailwindlabs/tailwindcss/pull/4542)) + +## [2.1.3] - 2021-06-01 + +### Fixed + +- Register PurgeCSS paths as PostCSS dependencies to guarantee proper cache-busting in webpack 5 ([#4530](https://github.com/tailwindlabs/tailwindcss/pull/4530)) + +## [2.1.2] - 2021-04-23 + +### Fixed + +- Fix issue where JIT engine would generate the wrong CSS when using PostCSS 7 ([#4078](https://github.com/tailwindlabs/tailwindcss/pull/4078)) + +## [2.1.1] - 2021-04-05 + +### Fixed + +- Fix issue where JIT engine would fail to compile when a source path isn't provided by the build runner for the current input file ([#3978](https://github.com/tailwindlabs/tailwindcss/pull/3978)) + +## [2.1.0] - 2021-04-05 + +### Added + +- Add alternate JIT engine (in preview) ([#3905](https://github.com/tailwindlabs/tailwindcss/pull/3905)) +- Add new `mix-blend-mode` and `background-blend-mode` utilities ([#3920](https://github.com/tailwindlabs/tailwindcss/pull/3920)) +- Add new `box-decoration-break` utilities ([#3911](https://github.com/tailwindlabs/tailwindcss/pull/3911)) +- Add new `isolation` utilities ([#3914](https://github.com/tailwindlabs/tailwindcss/pull/3914)) +- Add `inline-table` display utility ([#3563](https://github.com/tailwindlabs/tailwindcss/pull/3563)) +- Add `list-item` display utility ([#3929](https://github.com/tailwindlabs/tailwindcss/pull/3929)) +- Add new `filter` and `backdrop-filter` utilities ([#3923](https://github.com/tailwindlabs/tailwindcss/pull/3923)) + +## [2.0.4] - 2021-03-17 + +### Fixed + +- Pass full `var(--bg-opacity)` value as `opacityValue` when defining colors as functions + +## [2.0.3] - 2021-02-07 + +### Fixed + +- Ensure sourcemap input is deterministic when using `@apply` in Vue components ([#3356](https://github.com/tailwindlabs/tailwindcss/pull/3356)) +- Ensure placeholder opacity is consistent across browsers ([#3308](https://github.com/tailwindlabs/tailwindcss/pull/3308)) +- Fix issue where `theme()` didn't work with colors defined as functions ([#2919](https://github.com/tailwindlabs/tailwindcss/pull/2919)) +- Enable `dark` variants by default for color opacity utilities ([#2975](https://github.com/tailwindlabs/tailwindcss/pull/2975)) + +### Added + +- Add support for a `tailwind.config.cjs` file in Node ESM projects ([#3181](https://github.com/tailwindlabs/tailwindcss/pull/3181)) +- Add version comment to Preflight ([#3255](https://github.com/tailwindlabs/tailwindcss/pull/3255)) +- Add `cursor-help` by default ([#3199](https://github.com/tailwindlabs/tailwindcss/pull/3199)) + +## [2.0.2] - 2020-12-11 + +### Fixed + +- Fix issue with `@apply` not working as expected with `!important` inside an at-rule ([#2824](https://github.com/tailwindlabs/tailwindcss/pull/2824)) +- Fix issue with `@apply` not working as expected with defined classes ([#2832](https://github.com/tailwindlabs/tailwindcss/pull/2832)) +- Fix memory leak, and broken `@apply` when splitting up files ([#3032](https://github.com/tailwindlabs/tailwindcss/pull/3032)) + +### Added + +- Add default values for the `ring` utility ([#2951](https://github.com/tailwindlabs/tailwindcss/pull/2951)) + +## [2.0.1] - 2020-11-18 + +- Nothing, just the only thing I could do when I found out npm won't let me publish the same version under two tags. + +## [2.0.0] - 2020-11-18 + +### Added + +- Add redesigned color palette ([#2623](https://github.com/tailwindlabs/tailwindcss/pull/2623), [700866c](https://github.com/tailwindlabs/tailwindcss/commit/700866ce5e0c0b8d140be161c4d07fc6f31242bc), [#2633](https://github.com/tailwindlabs/tailwindcss/pull/2633)) +- Add dark mode support ([#2279](https://github.com/tailwindlabs/tailwindcss/pull/2279), [#2631](https://github.com/tailwindlabs/tailwindcss/pull/2631)) +- Add `overflow-ellipsis` and `overflow-clip` utilities ([#1289](https://github.com/tailwindlabs/tailwindcss/pull/1289)) +- Add `transform-gpu` to force hardware acceleration on transforms when desired ([#1380](https://github.com/tailwindlabs/tailwindcss/pull/1380)) +- Extend default spacing scale ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630), [7f05204](https://github.com/tailwindlabs/tailwindcss/commit/7f05204ce7a5581b6845591448265c3c21afde86)) +- Add spacing scale to `inset` plugin ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630)) +- Add percentage sizes to `translate`, `inset`, and `height` plugins ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630), [5259560](https://github.com/tailwindlabs/tailwindcss/commit/525956065272dc53e8f8395f55f9ad13077a38d1)) +- Extend default font size scale ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609), [#2619](https://github.com/tailwindlabs/tailwindcss/pull/2619)) +- Support using `@apply` with complex classes, including variants like `lg:hover:bg-blue-500` ([#2159](https://github.com/tailwindlabs/tailwindcss/pull/2159)) +- Add new `2xl` breakpoint at 1536px by default ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609)) +- Add default line-height values for font-size utilities ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609)) +- Support defining theme values using arrays for CSS properties that support comma separated values ([e13f083c4](https://github.com/tailwindlabs/tailwindcss/commit/e13f083c4bc48bf9870d27c966136a9584943127)) +- Enable `group-hover` for color plugins, `boxShadow`, and `textDecoration` by default ([28985b6](https://github.com/tailwindlabs/tailwindcss/commit/28985b6cd592e72d4849fdb9ce97eb045744e09c), [f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Enable `focus` for z-index utilities by default ([ae5b3d3](https://github.com/tailwindlabs/tailwindcss/commit/ae5b3d312d5000ae9c2065001f3df7add72dc365)) +- Support `extend` in `variants` configuration ([#2651](https://github.com/tailwindlabs/tailwindcss/pull/2651)) +- Add `max-w-prose` class by default ([#2574](https://github.com/tailwindlabs/tailwindcss/pull/2574)) +- Support flattening deeply nested color objects ([#2148](https://github.com/tailwindlabs/tailwindcss/pull/2148)) +- Support defining presets as functions ([#2680](https://github.com/tailwindlabs/tailwindcss/pull/2680)) +- Support deep merging of objects under `extend` ([#2679](https://github.com/tailwindlabs/tailwindcss/pull/2679), [#2700](https://github.com/tailwindlabs/tailwindcss/pull/2700)) +- Enable `focus-within` for all plugins that have `focus` enabled by default ([1a21f072](https://github.com/tailwindlabs/tailwindcss/commit/1a21f0721c7368d61fa3feef33d616de3f78c7d7), [f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Added new `ring` utilities for creating outline/focus rings using box shadows ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747), [879f088](https://github.com/tailwindlabs/tailwindcss/commit/879f088), [e0788ef](https://github.com/tailwindlabs/tailwindcss/commit/879f088)) +- Added `5` and `95` to opacity scale ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747)) +- Add support for default duration and timing function values whenever enabling transitions ([#2755](https://github.com/tailwindlabs/tailwindcss/pull/2755)) + +### Changed + +- Completely redesign color palette ([#2623](https://github.com/tailwindlabs/tailwindcss/pull/2623), [700866c](https://github.com/tailwindlabs/tailwindcss/commit/700866ce5e0c0b8d140be161c4d07fc6f31242bc), [#2633](https://github.com/tailwindlabs/tailwindcss/pull/2633)) +- Drop support for Node 8 and 10 ([#2582](https://github.com/tailwindlabs/tailwindcss/pull/2582)) +- Removed `target` feature and dropped any compatibility with IE 11 ([#2571](https://github.com/tailwindlabs/tailwindcss/pull/2571)) +- Upgrade to PostCSS 8 (but include PostCSS 7 compatibility build) ([729b400](https://github.com/tailwindlabs/tailwindcss/commit/729b400a685973f46af73c8a68b364f20f7c5e1e), [1d8679d](https://github.com/tailwindlabs/tailwindcss/commit/1d8679d37e0eb1ba8281b2076bade5fc754f47dd), [c238ed1](https://github.com/tailwindlabs/tailwindcss/commit/c238ed15b5c02ff51978965511312018f2bc2cae)) +- Removed `shadow-outline`, `shadow-solid`, and `shadow-xs` by default in favor of new `ring` API ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747)) +- Switch `normalize.css` to `modern-normalize` ([#2572](https://github.com/tailwindlabs/tailwindcss/pull/2572)) +- Rename `whitespace-no-wrap` to `whitespace-nowrap` ([#2664](https://github.com/tailwindlabs/tailwindcss/pull/2664)) +- Rename `flex-no-wrap` to `flex-nowrap` ([#2676](https://github.com/tailwindlabs/tailwindcss/pull/2676)) +- Remove `clearfix` utility, recommend `flow-root` instead ([#2766](https://github.com/tailwindlabs/tailwindcss/pull/2766)) +- Disable `hover` and `focus` for `fontWeight` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Remove `grid-gap` fallbacks needed for old versions of Safari ([5ec45fa](https://github.com/tailwindlabs/tailwindcss/commit/5ec45fa)) +- Change special use of 'default' in config to 'DEFAULT' ([#2580](https://github.com/tailwindlabs/tailwindcss/pull/2580)) +- New `@apply` implementation, slight backwards incompatibilities with previous behavior ([#2159](https://github.com/tailwindlabs/tailwindcss/pull/2159)) +- Make `theme` retrieve the expected resolved value when theme value is complex ([e13f083c4](https://github.com/tailwindlabs/tailwindcss/commit/e13f083c4bc48bf9870d27c966136a9584943127)) +- Move `truncate` class to `textOverflow` core plugin ([#2562](https://github.com/tailwindlabs/tailwindcss/pull/2562)) +- Remove `scrolling-touch` and `scrolling-auto` utilities ([#2573](https://github.com/tailwindlabs/tailwindcss/pull/2573)) +- Modernize default system font stacks ([#1711](https://github.com/tailwindlabs/tailwindcss/pull/1711)) +- Upgrade to PurgeCSS 3.0 ([8e4e0a0](https://github.com/tailwindlabs/tailwindcss/commit/8e4e0a0eb8dcbf84347c7562988b4f9afd344081)) +- Change default `text-6xl` font-size to 3.75rem instead of 4rem ([#2619](https://github.com/tailwindlabs/tailwindcss/pull/2619)) +- Ignore `[hidden]` elements within `space` and `divide` utilities instead of `template` elements ([#2642](https://github.com/tailwindlabs/tailwindcss/pull/2642)) +- Automatically prefix keyframes and animation names when a prefix is configured ([#2621](https://github.com/tailwindlabs/tailwindcss/pull/2621), [#2641](https://github.com/tailwindlabs/tailwindcss/pull/2641)) +- Merge `extend` objects deeply by default ([#2679](https://github.com/tailwindlabs/tailwindcss/pull/2679)) +- Respect `preserveHtmlElements` option even when using custom PurgeCSS extractor ([#2704](https://github.com/tailwindlabs/tailwindcss/pull/2704)) +- Namespace all internal custom properties under `tw-` to avoid collisions with end-user custom properties ([#2771](https://github.com/tailwindlabs/tailwindcss/pull/2771)) + +## [2.0.0-alpha.25] - 2020-11-17 + +### Fixed + +- Fix issue where `ring-offset-0` didn't work due to unitless `0` in `calc` function ([3de0c48](https://github.com/tailwindlabs/tailwindcss/commit/3de0c48)) + +## [2.0.0-alpha.24] - 2020-11-16 + +### Changed + +- Don't override ring color when overriding ring width with a variant ([e40079a](https://github.com/tailwindlabs/tailwindcss/commit/e40079a)) + +### Fixed + +- Prevent shadow/ring styles from cascading to children ([e40079a](https://github.com/tailwindlabs/tailwindcss/commit/e40079a)) +- Ensure rings have a default color even if `colors.blue.500` is not present in config ([e40079a](https://github.com/tailwindlabs/tailwindcss/commit/e40079a)) + +## [2.0.0-alpha.23] - 2020-11-16 + +### Added + +- Add scripts for generating a PostCSS 7 compatible build alongside PostCSS 8 version ([#2773](https://github.com/tailwindlabs/tailwindcss/pull/2773)) + +### Changed + +- All custom properties have been internally namespaced under `tw-` to avoid collisions with end-user custom properties ([#2771](https://github.com/tailwindlabs/tailwindcss/pull/2771)) + +## [2.0.0-alpha.22] - 2020-11-16 + +### Changed + +- ~~All custom properties have been internally namespaced under `tw-` to avoid collisions with end-user custom properties ([#2771](https://github.com/tailwindlabs/tailwindcss/pull/2771))~~ I made a git boo-boo, check alpha.23 instead + +## [2.0.0-alpha.21] - 2020-11-15 + +### Changed + +- Upgrade to PostCSS 8, Autoprefixer 10, move `postcss` and `autoprefixer` to peerDependencies ([729b400](https://github.com/tailwindlabs/tailwindcss/commit/729b400)) + +## [2.0.0-alpha.20] - 2020-11-13 + +### Changed + +- Remove `clearfix` utility, recommend `flow-root` instead ([#2766](https://github.com/tailwindlabs/tailwindcss/pull/2766)) + +## [2.0.0-alpha.19] - 2020-11-13 + +### Fixed + +- Don't crash when color palette is empty ([278c203](https://github.com/tailwindlabs/tailwindcss/commit/278c203)) + +## [2.0.0-alpha.18] - 2020-11-13 + +### Changed + +- `black` and `white` have been added to `colors.js` ([b3ed724](https://github.com/tailwindlabs/tailwindcss/commit/b3ed724)) + +### Fixed + +- Add support for colors as closures to `ringColor` and `ringOffsetColor`, previously would crash build ([62a47f9](https://github.com/tailwindlabs/tailwindcss/commit/62a47f9)) + +## [2.0.0-alpha.17] - 2020-11-13 + +### Changed + +- Remove `grid-gap` fallbacks needed for old versions of Safari ([5ec45fa](https://github.com/tailwindlabs/tailwindcss/commit/5ec45fa)) + +## [2.0.0-alpha.16] - 2020-11-12 + +### Added + +- Enable `focus`, `focus-within`, and `dark` variants (when enabled) for all ring utilities by default ([e0788ef](https://github.com/tailwindlabs/tailwindcss/commit/879f088)) + +## [2.0.0-alpha.15] - 2020-11-11 + +### Added + +- Added `ring-inset` utility for rendering rings as inset shadows ([879f088](https://github.com/tailwindlabs/tailwindcss/commit/879f088)) + +### Changed + +- `ringWidth` utilities always reset ring styles to ensure no accidental variable inheritance through the cascade ([879f088](https://github.com/tailwindlabs/tailwindcss/commit/879f088)) + +## [2.0.0-alpha.14] - 2020-11-11 + +### Added + +- Enable `focus-within` for `outline` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Enable `focus-within` for `ringWidth` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Enable `group-hover` for `boxShadow` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) +- Enable `group-hover` and `focus-within` for `textDecoration` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) + +### Changed + +- Disable `hover` and `focus` for `fontWeight` utilities by default ([f6923b1](https://github.com/tailwindlabs/tailwindcss/commit/f6923b1)) + +## [2.0.0-alpha.13] - 2020-11-11 + +### Added + +- Add support for default duration and timing function values whenever enabling transitions ([#2755](https://github.com/tailwindlabs/tailwindcss/pull/2755)) + +## [2.0.0-alpha.12] - 2020-11-10 + +### Fixed + +- Prevent `boxShadow` utilities from overriding ring shadows added by components like in the custom forms plugin ([c3dd3b6](https://github.com/tailwindlabs/tailwindcss/commit/c3dd3b68454ad418833a9edf7f3409cad66fb5b0)) + +## [2.0.0-alpha.11] - 2020-11-09 + +### Fixed + +- Convert `none` to `0 0 #0000` when used for shadows to ensure compatibility with `ring` utilities ([4eecc27](https://github.com/tailwindlabs/tailwindcss/commit/4eecc2751ca0c461e8da5bd5772ae650197a2e5d)) + +## [2.0.0-alpha.10] - 2020-11-09 + +### Added + +- Added new `ring` utilities ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747)) +- Added `5` and `95` to opacity scale ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747)) + +### Changed + +- Removed `shadow-outline`, `shadow-solid`, and `shadow-xs` in favor of new `ring` API ([#2747](https://github.com/tailwindlabs/tailwindcss/pull/2747)) + +## [2.0.0-alpha.9] - 2020-11-07 + +### Added + +- Added `shadow-solid` utility, a 2px solid shadow that uses the current text color ([369cfae](https://github.com/tailwindlabs/tailwindcss/commit/369cfae2905a577033529c46a5e8ca58c69f5623)) +- Enable `focus-within` where useful by default ([1a21f072](https://github.com/tailwindlabs/tailwindcss/commit/1a21f0721c7368d61fa3feef33d616de3f78c7d7)) + +### Changed + +- Update `shadow-outline` to use the new blue ([b078238](https://github.com/tailwindlabs/tailwindcss/commit/b0782385c9832d35a10929b38b4fcaf27e055d6b)) + +## [2.0.0-alpha.8] - 2020-11-06 + +### Added + +- Add `11` to spacing scale ([7f05204](https://github.com/tailwindlabs/tailwindcss/commit/7f05204ce7a5581b6845591448265c3c21afde86)) +- Add percentage-based height values ([5259560](https://github.com/tailwindlabs/tailwindcss/commit/525956065272dc53e8f8395f55f9ad13077a38d1)) +- Add indigo to the color palette by default ([700866c](https://github.com/tailwindlabs/tailwindcss/commit/700866ce5e0c0b8d140be161c4d07fc6f31242bc)) + +### Changed + +- Use `coolGray` as the default gray ([700866c](https://github.com/tailwindlabs/tailwindcss/commit/700866ce5e0c0b8d140be161c4d07fc6f31242bc)) + +## [2.0.0-alpha.7] - 2020-11-05 + +### Changed + +- Revert upgrading to PostCSS 8 lol + +## [2.0.0-alpha.6] - 2020-11-04 + +### Changed + +- Respect `preserveHtmlElements` option even when using custom PurgeCSS extractor ([#2704](https://github.com/tailwindlabs/tailwindcss/pull/2704)) +- Set font-family and line-height to `inherit` on `body` to behave more like v1.x ([#2729](https://github.com/tailwindlabs/tailwindcss/pull/2729)) + +## [2.0.0-alpha.5] - 2020-10-30 + +### Changed + +- Upgrade to PostCSS 8 ([59aa484](https://github.com/tailwindlabs/tailwindcss/commit/59aa484dfea0607d96bff6ef41b1150c78576c37)) + +## [2.0.0-alpha.4] - 2020-10-29 + +### Added + +- Support deep merging of arrays of objects under `extend` ([#2700](https://github.com/tailwindlabs/tailwindcss/pull/2700)) + +## [2.0.0-alpha.3] - 2020-10-27 + +### Added + +- Support flattening deeply nested color objects ([#2148](https://github.com/tailwindlabs/tailwindcss/pull/2148)) +- Support defining presets as functions ([#2680](https://github.com/tailwindlabs/tailwindcss/pull/2680)) + +### Changed + +- Merge `extend` objects deeply by default ([#2679](https://github.com/tailwindlabs/tailwindcss/pull/2679)) +- Rename `flex-no-wrap` to `flex-nowrap` ([#2676](https://github.com/tailwindlabs/tailwindcss/pull/2676)) + +## [2.0.0-alpha.2] - 2020-10-25 + +### Added + +- Support `extend` in `variants` configuration ([#2651](https://github.com/tailwindlabs/tailwindcss/pull/2651)) +- Add `max-w-prose` class by default ([#2574](https://github.com/tailwindlabs/tailwindcss/pull/2574)) + +### Changed + +- Revert use of logical properties for `space` and `divide` utilities ([#2644](https://github.com/tailwindlabs/tailwindcss/pull/2644)) +- `space` and `divide` utilities ignore elements with `[hidden]` now instead of only ignoring `template` elements ([#2642](https://github.com/tailwindlabs/tailwindcss/pull/2642)) +- Set default font on `body`, not just `html` ([#2643](https://github.com/tailwindlabs/tailwindcss/pull/2643)) +- Automatically prefix keyframes and animation names when a prefix is configured ([#2621](https://github.com/tailwindlabs/tailwindcss/pull/2621), [#2641](https://github.com/tailwindlabs/tailwindcss/pull/2641)) +- Rename `whitespace-no-wrap` to `whitespace-nowrap` ([#2664](https://github.com/tailwindlabs/tailwindcss/pull/2664)) + +## [1.9.6] - 2020-10-23 + +### Changed + +- The `presets` feature had unexpected behavior where a preset config without its own `presets` key would not extend the default config. ([#2662](https://github.com/tailwindlabs/tailwindcss/pull/2662)) + + If you were depending on this unexpected behavior, just add `presets: []` to your own preset to exclude the default configuration. + +## [2.0.0-alpha.1] - 2020-10-20 + +### Added + +- Added dark mode support ([#2279](https://github.com/tailwindlabs/tailwindcss/pull/2279), [#2631](https://github.com/tailwindlabs/tailwindcss/pull/2631)) +- Added `overflow-ellipsis` and `overflow-clip` utilities ([#1289](https://github.com/tailwindlabs/tailwindcss/pull/1289)) +- Add `transform-gpu` to force hardware acceleration on transforms when beneficial ([#1380](https://github.com/tailwindlabs/tailwindcss/pull/1380)) +- Extended spacing scale ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630)) +- Add spacing scale to `inset` plugin ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630)) +- Enable useful relative sizes for more plugins ([#2630](https://github.com/tailwindlabs/tailwindcss/pull/2630)) +- Extend font size scale ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609), [#2619](https://github.com/tailwindlabs/tailwindcss/pull/2619)) +- Support using `@apply` with complex classes ([#2159](https://github.com/tailwindlabs/tailwindcss/pull/2159)) +- Add new `2xl` breakpoint ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609)) +- Add default line-height values for font-size utilities ([#2609](https://github.com/tailwindlabs/tailwindcss/pull/2609)) +- Support defining theme values using arrays wherever it makes sense (box-shadow, transition-property, etc.) ([e13f083c4](https://github.com/tailwindlabs/tailwindcss/commit/e13f083c4bc48bf9870d27c966136a9584943127)) +- Enable `group-hover` for color utilities by default ([28985b6](https://github.com/tailwindlabs/tailwindcss/commit/28985b6cd592e72d4849fdb9ce97eb045744e09c)) +- Enable `focus` for z-index utilities by default ([ae5b3d3](https://github.com/tailwindlabs/tailwindcss/commit/ae5b3d312d5000ae9c2065001f3df7add72dc365)) + +### Changed + +- New `@apply` implementation, slight backwards incompatibilities with previous behavior ([#2159](https://github.com/tailwindlabs/tailwindcss/pull/2159)) +- Move `truncate` class to `textOverflow` core plugin ([#2562](https://github.com/tailwindlabs/tailwindcss/pull/2562)) +- Removed `target` feature and dropped any compatibility with IE 11 ([#2571](https://github.com/tailwindlabs/tailwindcss/pull/2571)) +- Switch `normalize.css` to `modern-normalize` ([#2572](https://github.com/tailwindlabs/tailwindcss/pull/2572)) +- Remove `scrolling-touch` and `scrolling-auto` utilities ([#2573](https://github.com/tailwindlabs/tailwindcss/pull/2573)) +- Change special use of 'default' in config to 'DEFAULT' ([#2580](https://github.com/tailwindlabs/tailwindcss/pull/2580)) +- Drop support for Node 8 and 10 ([#2582](https://github.com/tailwindlabs/tailwindcss/pull/2582)) +- Modernize default system font stacks ([#1711](https://github.com/tailwindlabs/tailwindcss/pull/1711)) +- Upgrade to PurgeCSS 3.0 +- ~~Upgrade to PostCSS 8.0~~ Reverted for now +- Use logical properties for `space` and `divide` utilities ([#1883](https://github.com/tailwindlabs/tailwindcss/pull/1883)) +- Make `theme` retrieve the expected resolved value when theme value is complex ([e13f083c4](https://github.com/tailwindlabs/tailwindcss/commit/e13f083c4bc48bf9870d27c966136a9584943127)) +- Adjust default font-size scale to include 60px instead of 64px ([#2619](https://github.com/tailwindlabs/tailwindcss/pull/2619)) +- Update default colors in Preflight to match new color palette ([#2633](https://github.com/tailwindlabs/tailwindcss/pull/2633)) + +## [1.9.5] - 2020-10-19 + +### Fixed + +- Fix issue where using `theme` with default line-heights did not resolve correctly + +## [1.9.4] - 2020-10-17 + +### Fixed + +- Fix issue changing plugins defined using the `withOptions` API would not trigger rebuilds in watch processes + +## [1.9.3] - 2020-10-16 + +### Fixed + +- Fix issue where `tailwindcss init --full` scaffolded a corrupt config file (https://github.com/tailwindlabs/tailwindcss/issues/2556) + +### Changed + +- Remove console warnings about upcoming breaking changes + +## [1.9.2] - 2020-10-14 + +### Fixed + +- Merge plugins when merging config with preset ([#2561](https://github.com/tailwindlabs/tailwindcss/pulls/#2561) +- Use `word-wrap` and `overflow-wrap` together, not one or the other since `word-wrap` is IE-only + +## [1.9.1] - 2020-10-14 + +### Fixed + +- Don't import `corePlugins` in `resolveConfig` to avoid bundling browser-incompatible code ([#2548](https://github.com/tailwindlabs/tailwindcss/pull/2548)) + +## [1.9.0] - 2020-10-12 + +### Added + +- Add new `presets` config option ([#2474](https://github.com/tailwindlabs/tailwindcss/pull/2474)) +- Scaffold new `tailwind.config.js` files with available `future` flags commented out ([#2379](https://github.com/tailwindlabs/tailwindcss/pull/2379)) +- Add `col-span-full` and `row-span-full` ([#2471](https://github.com/tailwindlabs/tailwindcss/pull/2471)) +- Make `outline` configurable, `outline-none` more accessible by default, and add `outline-black` and `outline-white` ([#2460](https://github.com/tailwindlabs/tailwindcss/pull/2460)) +- Add additional small `rotate` and `skew` values ([#2528](https://github.com/tailwindlabs/tailwindcss/pull/2528)) +- Add `xl`, `2xl`, and `3xl` border radius values ([#2529](https://github.com/tailwindlabs/tailwindcss/pull/2529)) +- Add new utilities for `grid-auto-columns` and `grid-auto-rows` ([#2531](https://github.com/tailwindlabs/tailwindcss/pull/2531)) +- Promote `defaultLineHeights` and `standardFontWeights` from experimental to future + +### Fixed + +- Don't escape keyframe values ([#2432](https://github.com/tailwindlabs/tailwindcss/pull/2432)) +- Use `word-wrap` instead of `overflow-wrap` in `ie11` target mode ([#2391](https://github.com/tailwindlabs/tailwindcss/pull/2391)) + +### Experimental + +- Add experimental `2xl` breakpoint ([#2468](https://github.com/tailwindlabs/tailwindcss/pull/2468)) +- Rename `{u}-max-content` and `{u}-min-content` utilities to `{u}-max` and `{u}-min` in experimental extended spacing scale ([#2532](https://github.com/tailwindlabs/tailwindcss/pull/2532)) +- Support disabling dark mode variants globally ([#2530](https://github.com/tailwindlabs/tailwindcss/pull/2530)) + +## [1.8.13] - 2020-10-09 + +### Fixed + +- Support defining colors as closures even when opacity variables are not supported ([#2536](https://github.com/tailwindlabs/tailwindcss/pull/2515)) + +## [1.8.12] - 2020-10-07 + +### Fixed + +- Reset color opacity variable in utilities generated using closure colors ([#2515](https://github.com/tailwindlabs/tailwindcss/pull/2515)) + +## [1.8.11] - 2020-10-06 + +- Make `tailwindcss.plugin` work in ESM environments for reasons + +## [1.8.10] - 2020-09-14 + +### Fixed + +- Prevent new `dark` experiment from causing third-party `dark` variants to inherit stacking behavior ([#2382](https://github.com/tailwindlabs/tailwindcss/pull/2382)) + +## [1.8.9] - 2020-09-13 + +### Fixed + +- Add negative spacing values to inset plugin in the `extendedSpacingScale` experiment ([#2358](https://github.com/tailwindlabs/tailwindcss/pull/2358)) +- Fix issue where `!important` was stripped from declarations within rules that used `@apply` with `applyComplexClasses` ([#2376](https://github.com/tailwindlabs/tailwindcss/pull/2376)) + +### Changed + +- Add `future` section to config stubs ([#2372](https://github.com/tailwindlabs/tailwindcss/pull/2372), [3090b98](https://github.com/tailwindlabs/tailwindcss/commit/3090b98ece766b1046abe5bbaa94204e811f7fac)) + +## [1.8.8] - 2020-09-11 + +### Fixed + +- Register dark mode plugin outside of `resolveConfig` code path ([#2368](https://github.com/tailwindlabs/tailwindcss/pull/2368)) + +## [1.8.7] - 2020-09-10 + +### Fixed + +- Fix issue where classes in escaped strings (like `class=\"block\"`) weren't extracted properly for purging ([#2364](https://github.com/tailwindlabs/tailwindcss/pull/2364)) + +## [1.8.6] - 2020-09-09 + +### Fixed + +- Fix issue where container padding not applied when using object syntax ([#2353](https://github.com/tailwindlabs/tailwindcss/pull/2353)) + +## [1.8.5] - 2020-09-07 + +### Fixed + +- Fix issue where `resolveConfig` didn't take into account configs added by feature flags ([#2347](https://github.com/tailwindlabs/tailwindcss/pull/2347)) + +## [1.8.4] - 2020-09-06 + +### Fixed + +- Fix [issue](https://github.com/tailwindlabs/tailwindcss/issues/2258) where inserting extra PurgeCSS control comments could break integrated PurgeCSS support +- Fix issue where dark variant in 'class' mode was incompatible with 'group-hover' variant ([#2337](https://github.com/tailwindlabs/tailwindcss/pull/2337)) +- Support basic nesting structure with `@apply` when using the `applyComplexClasses` experiment ([#2271](https://github.com/tailwindlabs/tailwindcss/pull/2271)) + +### Changed + +- Rename `font-hairline` and `font-thin` to `font-thin` and `font-extralight` behind `standardFontWeights` flag (experimental until v1.9.0) ([#2333](https://github.com/tailwindlabs/tailwindcss/pull/2333)) + +## [1.8.3] - 2020-09-05 + +### Fixed + +- Fix issue where `font-variant-numeric` utilities would break in combination with most CSS minifier configurations ([f3660ce](https://github.com/tailwindlabs/tailwindcss/commit/f3660ceed391cfc9390ca4ea1a729a955e64b895)) +- Only warn about `conservative` purge mode being deprecated once per process ([58781b5](https://github.com/tailwindlabs/tailwindcss/commit/58781b517daffbaf80fc5c0791d311f53b2d67d8)) + +## [1.8.2] - 2020-09-04 + +### Fixed + +- Fix bug where dark mode variants would cause an error if you had a `plugins` array in your config ([#2322](https://github.com/tailwindlabs/tailwindcss/pull/2322)) + +## [1.8.1] - 2020-09-04 + +### Fixed + +- Fix bug in the new font-variant-numeric utilities which broke the whole rule ([#2318](https://github.com/tailwindlabs/tailwindcss/pull/2318)) +- Fix bug while purging ([#2320](https://github.com/tailwindlabs/tailwindcss/pull/2320)) + +## [1.8.0] - 2020-09-04 + +### Added + +- Dark mode variant (experimental) ([#2279](https://github.com/tailwindlabs/tailwindcss/pull/2279)) +- New `preserveHtmlElements` option for `purge` ([#2283](https://github.com/tailwindlabs/tailwindcss/pull/2283)) +- New `layers` mode for `purge` ([#2288](https://github.com/tailwindlabs/tailwindcss/pull/2288)) +- New `font-variant-numeric` utilities ([#2305](https://github.com/tailwindlabs/tailwindcss/pull/2305)) +- New `place-items`, `place-content`, `place-self`, `justify-items`, and `justify-self` utilities ([#2306](https://github.com/tailwindlabs/tailwindcss/pull/2306)) +- Support configuring variants as functions ([#2309](https://github.com/tailwindlabs/tailwindcss/pull/2309)) + +### Changed + +- CSS within `@layer` at-rules are now grouped with the corresponding `@tailwind` at-rule ([#2312](https://github.com/tailwindlabs/tailwindcss/pull/2312)) + +### Deprecated + +- `conservative` purge mode, deprecated in favor of `layers` + +## [1.7.6] - 2020-08-29 + +### Fixed + +- Fix bug where the new experimental `@apply` implementation broke when applying a variant class with the important option globally enabled + +## [1.7.5] - 2020-08-28 + +### Changed + +- Update lodash to latest to silence security warnings + +## [1.7.4] - 2020-08-26 + +### Added + +- Add new -p flag to CLI to quickly scaffold a `postcss.config.js` file + +### Changed + +- Make `@apply` insensitive to whitespace in the new `applyComplexClasses` experiment + +### Fixed + +- Fix bug where the new `applyComplexClasses` experiment didn't behave as expected with rules with multiple selectors, like `.foo, .bar { color: red }` + +## [1.7.3] - 2020-08-20 + +### Changed + +- Log feature flag notices to stderr instead of stdout to preserve compatibility with pipe-based build systems +- Add missing bg-none utility for disabling background images + +### Fixed + +- Fix bug that prevented defining colors as closures when the `gradientColorStops` plugin was enabled + +## [1.7.2] - 2020-08-19 + +### Added + +- Reuse generated CSS as much as possible in long-running processes instead of needlessly recalculating + +## [1.7.1] - 2020-08-28 + +### Changed + +- Don't issue duplicate flag notices in long-running build processes + +## [1.7.0] - 2020-08-28 + +### Added + +- Gradients +- New background-clip utilities +- New `contents` display utility +- Default letter-spacing per font-size +- Divide border styles +- Access entire config object from plugins +- Define colors as closures +- Use `@apply` with variants and other complex classes (experimental) +- New additional color-palette (experimental) +- Extended spacing scale (experimental) +- Default line-heights per font-size by default (experimental) +- Extended font size scale (experimental) + +### Deprecated + +- Deprecated gap utilities + +## [1.6.3] - 2020-08-18 + +### Fixed + +- Fixes issue where motion-safe and motion-reduce variants didn't stack correctly with group-hover variants + +## [1.6.2] - 2020-08-03 + +### Fixed + +- Fixes issue where `@keyframes` respecting the important option would break animations in Chrome + +## [1.6.1] - 2020-08-02 + +### Fixed + +- Fixes an issue where animation keyframes weren't included in the build without @tailwind base (#2108) + +## [1.6.0] - 2020-07-28 + +### Added + +- Animation support +- New `prefers-reduced-motion` variants +- New `overscroll-behaviour` utilities +- Generate CSS without an input file + +## [1.5.2] - 2020-07-21 + +### Fixed + +- Fixes issue where you could no longer use `@apply` with unprefixed class names if you had configured a prefix + +## [1.5.1] - 2020-07-15 + +### Fixed + +- Fixes accidental breaking change where adding component variants using the old manual syntax (as recommended in the docs) stopped working + +## [1.5.0] - 2020-07-15 + +### Added + +- Component `variants` support +- Responsive `container` variants +- New `focus-visible` variant +- New `checked` variant + +## v0.0.0-658250a96 - 2020-07-12 [YANKED] + +No release notes + +## [1.4.6] - 2020-05-08 + +### Changed + +- Explicitly error when using a class as the important config option instead of just generating the wrong CSS + +## [1.4.5] - 2020-05-06 + +### Fixed + +- Fix bug where the `divideColor` plugin was using the wrong '' in IE11 target mode + +## [1.4.4] - 2020-05-01 + +### Fixed + +- Fix bug where target: 'browserslist' didn't work, only `target: ['browserslist', {...}]` did + +## [1.4.3] - 2020-05-01 + +### Changed + +- Don't generate unnecessary CSS in color plugins when color opacity utilities are disabled + +## [1.4.2] - 2020-05-01 + +### Fixed + +- Fix issue where `purge: { enabled: false }` was ignored, add `purge: false` shorthand + +## [1.4.1] - 2020-04-30 + +### Changed + +- Improve built-in PurgeCSS extractor to better support Haml and Slim templates + +## [1.4.0] - 2020-04-29 + +### Added + +- New color opacity utilities +- Built-in PurgeCSS +- IE 11 target mode (experimental) + +## [1.3.5] - 2020-04-23 + +### Removed + +- Drop `fs-extra` dependency to `^8.0.0` to preserve Node 8 compatibility until Tailwind 2.0 + +### Fixed + +- Fix missing unit in calc bug in space plugin (`space-x-0` didn't work for example) + +## [1.3.4] - 2020-04-21 + +### Fixed + +- Fix bug where `divide-{x/y}-0` utilities didn't work due to missing unit in `calc` call + +## [1.3.3] - 2020-04-21 + +### Added + +- Add forgotten responsive variants for `space`, `divideWidth`, and `divideColor` utilities + +## [1.3.1] - 2020-04-21 + +### Fixed + +- Fix bug where the `space-x` utilities were not being applied correctly due to referencing `--space-y-reverse` instead of `--space-x-reverse` + +## [1.3.0] - 2020-04-21 + +### Added + +- New `space` and `divide` layout utilities +- New `transition-delay` utilities +- New `group-focus` variant +- Support for specifying a default line-height for each font-size utility +- Support for breakpoint-specific padding for `container` class +- Added `current` to the default color palette +- New `inline-grid` utility +- New `flow-root` display utility +- New `clear-none` utility + +## [1.2.0] - 2020-02-05 + +### Added + +- CSS Transition support +- CSS Transform support +- CSS Grid support +- Added `max-w-{screen}` utilities +- Added `max-w-none` utility +- Added `rounded-md` utility +- Added `shadow-sm` utility +- Added `shadow-xs` utility +- Added `stroke-width` utilities +- Added fixed line-height utilities +- Added additional display utilities for table elements +- Added box-sizing utilities +- Added clear utilities +- Config file dependencies are now watchable +- Added new `plugin` and `plugin.withOptions` APIs + +### Changed + +- Allow plugins to extend the user's config + +## [1.2.0-canary.8] - 2020-02-05 + +### Added + +- Add additional fixed-size line-height utilities + +## [1.2.0-canary.7] - 2020-02-04 + +### Removed + +- Remove Inter from font-sans, plan to add later under new class + +## [1.2.0-canary.6] - 2020-02-03 + +### Added + +- Add system-ui to default font stack +- Add shadow-xs, increase shadow-sm alpha to 0.05 +- Support import syntax even without postcss-import +- Alias tailwind bin to tailwindcss +- Add fill/stroke to transition-colors +- Add transition-shadow, add box-shadow to default transition +- Combine gap/columnGap/rowGap +- Add grid row utilities +- Add skew utilities + +### Changed + +- Use font-sans as default font + +## [1.2.0-canary.5] - 2020-01-08 + +### Added + +- Adds missing dependency `resolve` which is required for making config dependencies watchable + +## [1.2.0-canary.4] - 2020-01-08 + +### Added + +- CSS Transition support +- CSS Transform support +- CSS Grid support +- New `max-w-{screen}` utilities +- Added `max-w-none` utility +- Added "Inter" to the default sans-serif font stack +- Add `rounded-md` utility +- Add `shadow-sm` utility +- Added stroke-width utilities +- Added additional display utilities for table elements +- Added box-sizing utilities +- Added clear utilities +- Config file dependencies are now watchable +- Allow plugins to extend the user's config +- Add new `plugin` and `plugin.withOptions` APIs + +## [v1.2.0-canary.3] - 2020-01-08 [YANKED] + +No release notes + +## [1.1.4] - 2019-11-25 + +### Changed + +- Note: Although this is a bugfix it could affect your site if you were working around the bug in your own code by not prefixing the `.group` class. I'm sorry 😞 + +### Fixed + +- Fixes a bug where the `.group` class was not receiving the user's configured prefix when using the `prefix` option + +## [1.2.0-canary.1] - 2019-10-22 + +### Changed + +- Don't watch `node_modules` files for changes + +### Fixed + +- Fixes significant build performance regression in `v1.2.0-canary.0` + +## [1.1.3] - 2019-10-22 + +### Fixed + +- Fixes an issue where in some cases function properties in the user's `theme` config didn't receive the second utils argument + +## [1.2.0-canary.0] - 2019-10-14 + +### Added + +- Automatically watch all config file dependencies (plugins, design tokens imported from other files, etc.) for changes when build watcher is running +- Add `justify-evenly` utility + +### Changed + +- Allow plugins to add their own config file to be resolved with the user's custom config + +## [1.1.2] - 2019-08-14 + +### Fixed + +- Fixes a bug with horizontal rules where they were displayed with a 2px border instead of a 1px border +- Fixes a bug with horizontal rules where they were rendered with default top/bottom margin + +## [1.1.1] - 2019-08-09 + +### Fixed + +- Fixes issue where values like `auto` would fail to make it through the default negative margin config + +## [1.1.0] - 2019-08-06 + +### Added + +- Added utilities for screenreader visibility +- Added utilities for placeholder color +- First, last, even, and odd child variants +- Disabled variant +- Visited variant +- Increase utility specificity using a scope instead of !important +- Add hover/focus variants for opacity by default +- Added `border-double` utility +- Support negative prefix for boxShadow and letterSpacing plugins +- Support passing config path via object + +### Fixed + +- Placeholders no longer have a default opacity +- Make horizontal rules visible by default +- Generate correct negative margins when using calc + +## [1.0.6] - 2019-08-01 + +### Fixed + +- Fixes issue where modifiers would mutate nested rules + +## [1.0.5] - 2019-07-11 + +### Added + +- Support built-in variants for utilities that include pseudo-elements + +### Changed + +- Update several dependencies, including postcss-js which fixes an issue with using `!important` directly in Tailwind utility plugins + +## [1.0.4] - 2019-06-11 + +### Changed + +- Increase precision of percentage width values to avoid 1px rounding issues in grid layouts + +## [1.0.3] - 2019-06-01 + +### Changed + +- Throws an error when someone tries to use `@tailwind preflight` instead of `@tailwind base`, this is the source of many support requests + +## [1.0.2] - 2019-05-27 + +### Fixed + +- Fixes a bug where `@screen` rules weren't bubbled properly when nested in plugins + +## [1.0.1] - 2019-05-13 + +### Fixed + +- Fixes a bug where global variants weren't properly merged + +## [1.0.0] - 2019-05-13 + +No release notes + +## [1.0.0-beta.10] - 2019-05-12 + +### Changed + +- Use `9999` and `-9999` for `order-last` and `order-first` utilities respectively + +## [1.0.0-beta.9] - 2019-05-12 + +### Added + +- Add `bg-repeat-round` and `bg-repeat-space` utilities +- Add `select-all` and `select-auto` utilities + +### Changed + +- Make all utilities responsive by default + +## [1.0.0-beta.8] - 2019-04-28 + +### Added + +- Adds `responsive` variants for the new order utilities by default, should have been there all along + +## [1.0.0-beta.7] - 2019-04-27 + +### Fixed + +- Fixes a bug where you couldn't extend the margin config + +## [1.0.0-beta.6] - 2019-04-27 + +### Added + +- Added support for negative inset (`-top-6`, `-right-4`) and z-index (`-z-10`) utilities, using the same negative key syntax supported by the margin plugin +- Add missing fractions as well as x/12 fractions to width scale +- Add `order` utilities +- Add `cursor-text` class by default + +### Changed + +- Make it possible to access your fully merged config file in JS + +### Removed + +- Removed `negativeMargin` plugin, now the regular `margin` plugin supports generating negative classes (like `-mx-6`) by using negative keys in the config, like `-6` + +## [1.0.0-beta.5] - 2019-04-18 + +### Changed + +- Make it possible to disable all core plugins using `corePlugins: false` +- Make it possible to configure a single list of variants that applies to all utility plugins +- Make it possible to safelist which core plugins should be enabled + +### Fixed + +- Fix a bug where stroke and fill plugins didn't properly handle the next object syntax for color definitions +- Fix a bug where you couldn't have comments near `@apply` directives + +## [1.0.0-beta.4] - 2019-03-29 + +### Added + +- Add the `container` key to the scaffolded config file when generated with `--full` + +### Changed + +- Bumps node dependency to 8.9.0 so we can keep our default config file clean, 6.9.0 is EOL next month anyways + +### Removed + +- Removes `SFMono-Regular` from the beginning of the default monospace font stack, it has no italic support and Menlo looks better anyways + +### Fixed + +- Fixes an issue where the user's config object was being mutated during processing (only affects @bradlc 😅) +- Fixes an issue where you couldn't use a closure to define theme sections under `extend` + +## [1.0.0-beta.3] - 2019-03-18 + +### Added + +- Support lazy evaluation in `theme.extend` + +### Changed + +- Use lighter default border color +- Revert #745 and use `bolder` for strong tags by default instead of `fontWeight.bold` + +## [1.0.0-beta.2] - 2019-03-17 + +### Changed + +- Closures in the `theme` section of the config file are now passed a `theme` function instead of an object + +### Fixed + +- Fix issue where `@screen` didn't work at all 🙃 + +## [1.0.0-beta.1] - 2019-03-17 + +### Added + +- New config file structure +- New expanded default color palette +- New default `maxWidth` scale +- Added utilities for `list-style-type` and `list-style-position` +- Added `break-all` utility + +### Changed + +- `object-position` utilities are now customizable under `theme.objectPosition` +- `cursor` utilities are now customizable under `theme.cursors` +- `flex-grow/shrink` utilities are now customizable under `theme.flexGrow/flexShrink` +- Default variant output position can be customized +- Extended default line-height scale +- Extended default letter-spacing scale + +## [0.7.4] - 2019-01-23 + +### Changed + +- Update our PostCSS related dependencies + +### Fixed + +- Fix bug where class names containing a `.`character had the responsive prefix added in the wrong place + +## [0.7.3] - 2018-12-03 + +### Changed + +- Update Normalize to v8.0.1 + +## [0.7.2] - 2018-11-05 + +### Added + +- Add `--no-autoprefixer` option to CLI `build` command + +## [0.7.1] - 2018-11-05 + +### Changed + +- Update autoprefixer dependency + +## [0.7.0] - 2018-10-31 + +### Added + +- Registering new variants from plugins +- Variant order can be customized per module +- Added focus-within variant +- Fancy CLI updates +- Option to generate config without comments +- Make configured prefix optional when using @apply +- Improve Flexbox behavior in IE 10/11 + +### Changed + +- Variant order in modules is now significant +- Normalize.css updated to v8.0.0 +- Removed CSS fix for Chrome 62 button border radius change + +## [0.6.6] - 2018-09-21 + +### Changed + +- Promote `shadowLookup` from experiment to official feature + +## [0.6.5] - 2018-08-18 + +### Fixed + +- Fixes an issue where units were stripped from zero value properties + +## [0.6.4] - 2018-07-16 + +### Fixed + +- Fixes an issue where changes to your configuration file were ignored when using `webpack --watch` + +## [0.6.3] - 2018-07-11 + +### Fixed + +- Fixes an issue where `@tailwind utilities` generated no output + +## [0.6.2] - 2018-03-11 + +### Added + +- Added table layout utilities for styling tables +- Configuration can now be passed as an object +- Registering new variants from plugins (experimental) +- Allow `@apply`-ing classes that aren't defined but would be generated (experimental) + +### Changed + +- Default config file changes + +## [0.6.1] - 2018-06-22 + +### Fixed + +- Fix incorrect box-shadow syntax for the `.shadow-outline` utility 🤦‍♂️ + +## [0.6.0] - 2018-06-21 + +### Added + +- Added border collapse utilities for styling tables +- Added more axis-specific overflow utilities +- Added `.outline-none` utility for suppressing focus styles +- Added `.shadow-outline` utility as an alternative to default browser focus styles +- Extended default padding, margin, negative margin, width, and height scales +- Enable focus and hover variants for more modules by default + +### Changed + +- Removed default `outline: none !important` styles from focusable but keyboard-inaccessible elements +- Moved screen prefix for responsive `group-hover` variants +- Default config file changes + +## [0.5.3] - 2018-05-07 + +### Changed + +- Improve sourcemaps for replaced styles like `preflight` + +### Fixed + +- Fix bug where informational messages were being logged to stdout during build, preventing the ability to use Tailwind's output in Unix pipelines + +## [0.5.2] - 2018-03-29 + +### Fixed + +- Fixes an issue with a dependency that had a security vulnerability + +## [0.5.1] - 2018-03-13 + +### Removed + +- Reverts a change that renamed the `.roman` class to `.not-italic` due to the fact that it breaks compatibility with cssnext: [postcss/postcss-selector-not#10](https://github.com/postcss/postcss-selector-not/issues/10). We'll stick with `.roman` for now with a plan to switch to `.not-italic` in another breaking version should that issue get resolved in postcss-selector-not. + +## [0.5.0] - 2018-03-13 + +### Added + +- Plugin system +- Added `.sticky position` utility +- Added `.cursor-wait` and `.cursor-move` utilities +- Added `.bg-auto` background size utility +- Background sizes are now customizable +- Support for active variants +- Better postcss-import support +- Configuration options for the `.container` component + +### Changed + +- The `.container` component is now a built-in plugin +- State variant precedence changes +- New config file keys +- `.overflow-x/y-scroll` now set `overflow: scroll` instead of `overflow: auto` +- `.roman` renamed to `.not-italic` + +## [0.4.3] - 2018-03-13 + +### Changed + +- Use `global.Object` to avoid issues with polyfills when importing the Tailwind config into other JS + +## [0.4.2] - 2018-03-01 + +### Added + +- Add support for using a function to define class prefixes in addition to a simple string + +### Changed + +- Improve the performance of @apply by using a lookup table instead of searching + +### Fixed + +- Fix an issue where borders couldn't be applied to `img` tags without specifying a border style + +## [0.4.1] - 2018-01-22 + +### Changed + +- Make default sans-serif font stack more future proof and safe to use with CSS `font` shorthand +- Replace stylefmt with Perfectionist to avoid weird stylelint conflicts + +## [0.4.0] - 2017-12-15 + +### Added + +- `@apply`'d classes can now be made `!important` explicitly + +### Changed + +- `@apply` now strips `!important` from any mixed in classes +- Default color palette tweaks + +## [0.3.0] - 2017-12-01 + +### Added + +- Enable/disable modules and control which variants are generated for each +- Focus variants +- Group hover variants +- New `@variants` at-rule +- Customize the separator character +- Missing config keys now fallback to their default values +- New utilities + +### Changed + +- Lists now have no margins by default +- `.pin` no longer sets width and height to 100% +- SVG `fill` no longer defaults to currentColor + +## [0.2.2] - 2017-11-19 + +### Fixed + +- Fix issue with dist files not being published due to bug in latest npm + +## [0.2.1] - 2017-11-18 + +### Fixed + +- Fix overly specific border-radius reset for Chrome 62 button styles + +## [0.2.0] - 2017-11-17 + +### Added + +- Add a custom prefix to all utilities +- Optionally make all utilities `!important` +- Round element corners independently +- Cascading border colors and styles + +### Changed + +- `auto` is no longer a hard-coded margin value +- The `defaultConfig` function is now a separate module +- Rounded utilities now combine position and radius size +- Border width utilities no longer affect border color/style +- `@apply` is now very strict about what classes can be applied +- Add `options` key to your config +- Spacing, radius, and border width utility declaration order changes + +## [0.1.6] - 2017-11-09 + +### Fixed + +- Fix CDN files not being published to npm + +## [0.1.5] - 2017-11-08 + +### Changed + +- Apply the same default placeholder styling that's applied to inputs to textareas + +### Fixed + +- Fix CLI tool not loading config files properly + +## [0.1.4] - 2017-11-06 + +### Added + +- Autoprefix dist assets for quick hacking and prototyping +- Add `my-auto`, `mt-auto`, and `mb-auto` margin utilities +- Add `sans-serif` to end of default `sans` font stack + +### Changed + +- If using Webpack, it will now watch your config file changes +- When running `tailwind init [filename]`, automatically append `.js` to filename if not present +- Support default fallback value in `config(...)` function, ie. `config('colors.blue', #0000ff)` +- Don't output empty media queries if Tailwind processes a file that doesn't use Tailwind + +### Fixed + +- Move list utilities earlier in stylesheet to allow overriding with spacing utilities + +## [0.1.3] - 2017-11-02 + +### Added + +- Add new `.scrolling-touch` and `.scrolling-auto` utilities for controlling inertial scroll behavior on WebKit touch devices +- Generate separate dist files for preflight, utilities, and tailwind for CDN usage + +## [0.1.2] - 2017-11-01 + +### Changed + +- Target Node 6.9.0 explicitly (instead of 8.6 implicitly) to support more users + +### Fixed + +- Fix issue with config option not being respected in `tailwind build` + +## [0.1.1] - 2017-11-01 + +### Fixed + +- Fix `tailwind build` CLI command not writing output files + +## [0.1.0] - 2017-11-01 + +### Added + +- Everything! + +[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.3.1...HEAD +[3.3.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.3.0...v3.3.1 +[3.3.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.7...v3.3.0 +[3.2.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.6...v3.2.7 +[3.2.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.5...v3.2.6 +[3.2.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.4...v3.2.5 +[3.2.4]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.3...v3.2.4 +[3.2.3]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.2...v3.2.3 +[3.2.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.1...v3.2.2 +[3.2.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.2.0...v3.2.1 +[3.2.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.8...v3.2.0 +[3.1.8]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.7...v3.1.8 +[3.1.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.6...v3.1.7 +[3.1.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.5...v3.1.6 +[3.1.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.4...v3.1.5 +[3.1.4]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.3...v3.1.4 +[3.1.3]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.2...v3.1.3 +[3.1.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.1...v3.1.2 +[3.1.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.1.0...v3.1.1 +[3.1.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.24...v3.1.0 +[3.0.24]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.23...v3.0.24 +[3.0.23]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.22...v3.0.23 +[3.0.22]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.21...v3.0.22 +[3.0.21]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.20...v3.0.21 +[3.0.20]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.19...v3.0.20 +[3.0.19]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.18...v3.0.19 +[3.0.18]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.17...v3.0.18 +[3.0.17]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.16...v3.0.17 +[3.0.16]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.15...v3.0.16 +[3.0.15]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.14...v3.0.15 +[3.0.14]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.13...v3.0.14 +[3.0.13]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.12...v3.0.13 +[3.0.12]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.11...v3.0.12 +[3.0.11]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.10...v3.0.11 +[3.0.10]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.9...v3.0.10 +[3.0.9]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.8...v3.0.9 +[3.0.8]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.7...v3.0.8 +[3.0.7]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.6...v3.0.7 +[3.0.6]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.5...v3.0.6 +[3.0.5]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.4...v3.0.5 +[3.0.4]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.3...v3.0.4 +[3.0.3]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.2...v3.0.3 +[3.0.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.1...v3.0.2 +[3.0.1]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0...v3.0.1 +[3.0.0]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.2...v3.0.0 +[3.0.0-alpha.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.1...v3.0.0-alpha.2 +[3.0.0-alpha.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.19...v3.0.0-alpha.1 +[2.2.19]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.18...v2.2.19 +[2.2.18]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.17...v2.2.18 +[2.2.17]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.16...v2.2.17 +[2.2.16]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.15...v2.2.16 +[2.2.15]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.14...v2.2.15 +[2.2.14]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.13...v2.2.14 +[2.2.13]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.12...v2.2.13 +[2.2.12]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.11...v2.2.12 +[2.2.11]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.10...v2.2.11 +[2.2.10]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.9...v2.2.10 +[2.2.9]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.8...v2.2.9 +[2.2.8]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.7...v2.2.8 +[2.2.7]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.6...v2.2.7 +[2.2.6]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.5...v2.2.6 +[2.2.5]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.4...v2.2.5 +[2.2.4]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.3...v2.2.4 +[2.2.3]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.2...v2.2.3 +[2.2.2]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.1...v2.2.2 +[2.2.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.0...v2.2.1 +[2.2.0]: https://github.com/tailwindlabs/tailwindcss/compare/v2.1.4...v2.2.0 +[2.1.4]: https://github.com/tailwindlabs/tailwindcss/compare/v2.1.3...v2.1.4 +[2.1.3]: https://github.com/tailwindlabs/tailwindcss/compare/v2.1.2...v2.1.3 +[2.1.2]: https://github.com/tailwindlabs/tailwindcss/compare/v2.1.1...v2.1.2 +[2.1.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.1.0...v2.1.1 +[2.1.0]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.4...v2.1.0 +[2.0.4]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.3...v2.0.4 +[2.0.3]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.2...v2.0.3 +[2.0.2]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.1...v2.0.2 +[2.0.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0...v2.0.1 +[2.0.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.6...v2.0.0 +[2.0.0-alpha.25]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.24...v2.0.0-alpha.25 +[2.0.0-alpha.24]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.23...v2.0.0-alpha.24 +[2.0.0-alpha.23]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.22...v2.0.0-alpha.23 +[2.0.0-alpha.22]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.21...v2.0.0-alpha.22 +[2.0.0-alpha.21]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.20...v2.0.0-alpha.21 +[2.0.0-alpha.20]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.19...v2.0.0-alpha.20 +[2.0.0-alpha.19]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.18...v2.0.0-alpha.19 +[2.0.0-alpha.18]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.17...v2.0.0-alpha.18 +[2.0.0-alpha.17]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.16...v2.0.0-alpha.17 +[2.0.0-alpha.16]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.15...v2.0.0-alpha.16 +[2.0.0-alpha.15]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.14...v2.0.0-alpha.15 +[2.0.0-alpha.14]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.13...v2.0.0-alpha.14 +[2.0.0-alpha.13]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.12...v2.0.0-alpha.13 +[2.0.0-alpha.12]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.11...v2.0.0-alpha.12 +[2.0.0-alpha.11]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.10...v2.0.0-alpha.11 +[2.0.0-alpha.10]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.9...v2.0.0-alpha.10 +[2.0.0-alpha.9]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.8...v2.0.0-alpha.9 +[2.0.0-alpha.8]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.7...v2.0.0-alpha.8 +[2.0.0-alpha.7]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.6...v2.0.0-alpha.7 +[2.0.0-alpha.6]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.5...v2.0.0-alpha.6 +[2.0.0-alpha.5]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.4...v2.0.0-alpha.5 +[2.0.0-alpha.4]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.3...v2.0.0-alpha.4 +[2.0.0-alpha.3]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.2...v2.0.0-alpha.3 +[2.0.0-alpha.2]: https://github.com/tailwindlabs/tailwindcss/compare/v2.0.0-alpha.1...v2.0.0-alpha.2 +[1.9.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.5...v1.9.6 +[2.0.0-alpha.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.5...v2.0.0-alpha.1 +[1.9.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.4...v1.9.5 +[1.9.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.3...v1.9.4 +[1.9.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.2...v1.9.3 +[1.9.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.1...v1.9.2 +[1.9.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.9.0...v1.9.1 +[1.9.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.13...v1.9.0 +[1.8.13]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.12...v1.8.13 +[1.8.12]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.11...v1.8.12 +[1.8.11]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.10...v1.8.11 +[1.8.10]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.9...v1.8.10 +[1.8.9]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.8...v1.8.9 +[1.8.8]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.7...v1.8.8 +[1.8.7]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.6...v1.8.7 +[1.8.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.5...v1.8.6 +[1.8.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.4...v1.8.5 +[1.8.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.3...v1.8.4 +[1.8.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.2...v1.8.3 +[1.8.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.1...v1.8.2 +[1.8.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.8.0...v1.8.1 +[1.8.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.6...v1.8.0 +[1.7.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.5...v1.7.6 +[1.7.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.4...v1.7.5 +[1.7.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.3...v1.7.4 +[1.7.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.2...v1.7.3 +[1.7.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.1...v1.7.2 +[1.7.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.7.0...v1.7.1 +[1.7.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.6.3...v1.7.0 +[1.6.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.6.2...v1.6.3 +[1.6.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.6.1...v1.6.2 +[1.6.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.6.0...v1.6.1 +[1.6.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.5.2...v1.6.0 +[1.5.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.5.1...v1.5.2 +[1.5.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.5.0...v1.5.1 +[1.5.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.6...v1.5.0 +[1.4.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.5...v1.4.6 +[1.4.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.4...v1.4.5 +[1.4.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.3...v1.4.4 +[1.4.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.2...v1.4.3 +[1.4.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.1...v1.4.2 +[1.4.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.4.0...v1.4.1 +[1.4.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.3.5...v1.4.0 +[1.3.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.3.4...v1.3.5 +[1.3.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.3.3...v1.3.4 +[1.3.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.3.1...v1.3.3 +[1.3.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.3.0...v1.3.1 +[1.3.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0...v1.3.0 +[1.2.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.4...v1.2.0 +[1.2.0-canary.8]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.7...v1.2.0-canary.8 +[1.2.0-canary.7]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.6...v1.2.0-canary.7 +[1.2.0-canary.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.5...v1.2.0-canary.6 +[1.2.0-canary.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.4...v1.2.0-canary.5 +[1.2.0-canary.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.3...v1.2.0-canary.4 +[1.1.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.3...v1.1.4 +[1.2.0-canary.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.2.0-canary.0...v1.2.0-canary.1 +[1.1.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.2...v1.1.3 +[1.2.0-canary.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.2...v1.2.0-canary.0 +[1.1.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.1...v1.1.2 +[1.1.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.1.0...v1.1.1 +[1.1.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.6...v1.1.0 +[1.0.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.5...v1.0.6 +[1.0.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.4...v1.0.5 +[1.0.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.3...v1.0.4 +[1.0.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.2...v1.0.3 +[1.0.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.1...v1.0.2 +[1.0.1]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0...v1.0.1 +[1.0.0]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.10...v1.0.0 +[1.0.0-beta.10]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.9...v1.0.0-beta.10 +[1.0.0-beta.9]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.8...v1.0.0-beta.9 +[1.0.0-beta.8]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.7...v1.0.0-beta.8 +[1.0.0-beta.7]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.6...v1.0.0-beta.7 +[1.0.0-beta.6]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.5...v1.0.0-beta.6 +[1.0.0-beta.5]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.4...v1.0.0-beta.5 +[1.0.0-beta.4]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.3...v1.0.0-beta.4 +[1.0.0-beta.3]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.2...v1.0.0-beta.3 +[1.0.0-beta.2]: https://github.com/tailwindlabs/tailwindcss/compare/v1.0.0-beta.1...v1.0.0-beta.2 +[1.0.0-beta.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.7.4...v1.0.0-beta.1 +[0.7.4]: https://github.com/tailwindlabs/tailwindcss/compare/v0.7.3...v0.7.4 +[0.7.3]: https://github.com/tailwindlabs/tailwindcss/compare/v0.7.2...v0.7.3 +[0.7.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.7.1...v0.7.2 +[0.7.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.7.0...v0.7.1 +[0.7.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.6...v0.7.0 +[0.6.6]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.5...v0.6.6 +[0.6.5]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.4...v0.6.5 +[0.6.4]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.3...v0.6.4 +[0.6.3]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.2...v0.6.3 +[0.6.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.1...v0.6.2 +[0.6.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.6.0...v0.6.1 +[0.6.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.5.3...v0.6.0 +[0.5.3]: https://github.com/tailwindlabs/tailwindcss/compare/v0.5.2...v0.5.3 +[0.5.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.5.1...v0.5.2 +[0.5.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.5.0...v0.5.1 +[0.5.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.4.3...v0.5.0 +[0.4.3]: https://github.com/tailwindlabs/tailwindcss/compare/v0.4.2...v0.4.3 +[0.4.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.4.1...v0.4.2 +[0.4.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.4.0...v0.4.1 +[0.4.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.3.0...v0.4.0 +[0.3.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.2.2...v0.3.0 +[0.2.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.2.1...v0.2.2 +[0.2.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.2.0...v0.2.1 +[0.2.0]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.6...v0.2.0 +[0.1.6]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.5...v0.1.6 +[0.1.5]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.4...v0.1.5 +[0.1.4]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.3...v0.1.4 +[0.1.3]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.2...v0.1.3 +[0.1.2]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.1...v0.1.2 +[0.1.1]: https://github.com/tailwindlabs/tailwindcss/compare/v0.1.0...v0.1.1 +[0.1.0]: https://github.com/tailwindlabs/tailwindcss/releases/tag/v0.1.0 diff --git a/node_modules/tailwindcss/LICENSE b/node_modules/tailwindcss/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..d6a82290738a9f78946cbcb4594535d6984086dd --- /dev/null +++ b/node_modules/tailwindcss/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Tailwind Labs, Inc. + +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/tailwindcss/README.md b/node_modules/tailwindcss/README.md new file mode 100644 index 0000000000000000000000000000000000000000..17663787f071ab863ee4cf5bede4f7014f7e7519 --- /dev/null +++ b/node_modules/tailwindcss/README.md @@ -0,0 +1,41 @@ +

+ + + + + Tailwind CSS + + +

+ +

+ A utility-first CSS framework for rapidly building custom user interfaces. +

+ + +

+ Build Status + Total Downloads + Latest Release + License +

+ +------ + +## Documentation + +For full documentation, visit [tailwindcss.com](https://tailwindcss.com/). + +## Community + +For help, discussion about best practices, or any other conversation that would benefit from being searchable: + +[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions) + +For casual chit-chat with others using the framework: + +[Join the Tailwind CSS Discord Server](https://discord.gg/7NF8GNe) + +## Contributing + +If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/master/.github/CONTRIBUTING.md) **before submitting a pull request**. diff --git a/node_modules/tailwindcss/base.css b/node_modules/tailwindcss/base.css new file mode 100644 index 0000000000000000000000000000000000000000..2f02db53f6e3a2b20e7c29a0e64f983de6a3bfff --- /dev/null +++ b/node_modules/tailwindcss/base.css @@ -0,0 +1 @@ +@tailwind base; diff --git a/node_modules/tailwindcss/colors.d.ts b/node_modules/tailwindcss/colors.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d85ab869a0b73dd925450274e34fe808bd78edeb --- /dev/null +++ b/node_modules/tailwindcss/colors.d.ts @@ -0,0 +1,3 @@ +import type { DefaultColors } from './types/generated/colors' +declare const colors: DefaultColors +export = colors diff --git a/node_modules/tailwindcss/colors.js b/node_modules/tailwindcss/colors.js new file mode 100644 index 0000000000000000000000000000000000000000..c6f914958841a8b9b1632e0b8c978cf2d4a445bc --- /dev/null +++ b/node_modules/tailwindcss/colors.js @@ -0,0 +1,2 @@ +let colors = require('./lib/public/colors') +module.exports = (colors.__esModule ? colors : { default: colors }).default diff --git a/node_modules/tailwindcss/components.css b/node_modules/tailwindcss/components.css new file mode 100644 index 0000000000000000000000000000000000000000..020aabafdeaa0f5f0e098755a4e3afb1e550fa52 --- /dev/null +++ b/node_modules/tailwindcss/components.css @@ -0,0 +1 @@ +@tailwind components; diff --git a/node_modules/tailwindcss/defaultConfig.d.ts b/node_modules/tailwindcss/defaultConfig.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2c2bccf2c4ccc2e012ef3b750d0c9a50ab142217 --- /dev/null +++ b/node_modules/tailwindcss/defaultConfig.d.ts @@ -0,0 +1,3 @@ +import type { Config } from './types/config' +declare const config: Config +export = config diff --git a/node_modules/tailwindcss/defaultConfig.js b/node_modules/tailwindcss/defaultConfig.js new file mode 100644 index 0000000000000000000000000000000000000000..7b635875d255b680396e8b49c23f92263f948e0a --- /dev/null +++ b/node_modules/tailwindcss/defaultConfig.js @@ -0,0 +1,2 @@ +let defaultConfig = require('./lib/public/default-config') +module.exports = (defaultConfig.__esModule ? defaultConfig : { default: defaultConfig }).default diff --git a/node_modules/tailwindcss/defaultTheme.d.ts b/node_modules/tailwindcss/defaultTheme.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2bc9dc718b0c7384b2129cb936ce7faf6bcd6c5f --- /dev/null +++ b/node_modules/tailwindcss/defaultTheme.d.ts @@ -0,0 +1,4 @@ +import type { Config } from './types/config' +import { DefaultTheme } from './types/generated/default-theme' +declare const theme: Config['theme'] & DefaultTheme +export = theme diff --git a/node_modules/tailwindcss/defaultTheme.js b/node_modules/tailwindcss/defaultTheme.js new file mode 100644 index 0000000000000000000000000000000000000000..991526d7bf2f368020259cc87b182dbe5a144dad --- /dev/null +++ b/node_modules/tailwindcss/defaultTheme.js @@ -0,0 +1,2 @@ +let defaultTheme = require('./lib/public/default-theme') +module.exports = (defaultTheme.__esModule ? defaultTheme : { default: defaultTheme }).default diff --git a/node_modules/tailwindcss/loadConfig.d.ts b/node_modules/tailwindcss/loadConfig.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f17ad23d9afc83cb81aba537d3e4f7ebeb85acb0 --- /dev/null +++ b/node_modules/tailwindcss/loadConfig.d.ts @@ -0,0 +1,4 @@ +import type { Config } from './types/config' + +declare function loadConfig(path: string): Config +export = loadConfig diff --git a/node_modules/tailwindcss/loadConfig.js b/node_modules/tailwindcss/loadConfig.js new file mode 100644 index 0000000000000000000000000000000000000000..838d72de05bc1d086a36d950c007fd2cf5421fed --- /dev/null +++ b/node_modules/tailwindcss/loadConfig.js @@ -0,0 +1,2 @@ +let loadConfig = require('./lib/public/load-config') +module.exports = (loadConfig.__esModule ? loadConfig : { default: loadConfig }).default diff --git a/node_modules/tailwindcss/nesting/index.js b/node_modules/tailwindcss/nesting/index.js new file mode 100644 index 0000000000000000000000000000000000000000..defd79306bc10afcbd6c7afefe76c32c702349be --- /dev/null +++ b/node_modules/tailwindcss/nesting/index.js @@ -0,0 +1,2 @@ +let nesting = require('../lib/postcss-plugins/nesting') +module.exports = (nesting.__esModule ? nesting : { default: nesting }).default diff --git a/node_modules/tailwindcss/package.json b/node_modules/tailwindcss/package.json new file mode 100644 index 0000000000000000000000000000000000000000..642ebaf474e0ded12ba0bc89ff29cf8f266dd5a0 --- /dev/null +++ b/node_modules/tailwindcss/package.json @@ -0,0 +1,126 @@ +{ + "name": "tailwindcss", + "version": "3.3.1", + "description": "A utility-first CSS framework for rapidly building custom user interfaces.", + "license": "MIT", + "main": "lib/index.js", + "types": "types/index.d.ts", + "repository": "https://github.com/tailwindlabs/tailwindcss.git", + "bugs": "https://github.com/tailwindlabs/tailwindcss/issues", + "homepage": "https://tailwindcss.com", + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "tailwindcss": { + "engine": "stable" + }, + "scripts": { + "prebuild": "npm run generate && rimraf lib", + "build": "swc src --out-dir lib --copy-files", + "postbuild": "esbuild lib/cli-peer-dependencies.js --bundle --platform=node --outfile=peers/index.js --define:process.env.CSS_TRANSFORMER_WASM=false", + "rebuild-fixtures": "npm run build && node -r @swc/register scripts/rebuildFixtures.js", + "style": "eslint .", + "pretest": "npm run generate", + "test": "jest", + "test:integrations": "npm run test --prefix ./integrations", + "install:integrations": "node scripts/install-integrations.js", + "generate:plugin-list": "node -r @swc/register scripts/create-plugin-list.js", + "generate:types": "node -r @swc/register scripts/generate-types.js", + "generate": "npm run generate:plugin-list && npm run generate:types", + "release-channel": "node ./scripts/release-channel.js", + "release-notes": "node ./scripts/release-notes.js", + "prepublishOnly": "npm install --force && npm run build" + }, + "files": [ + "src/*", + "cli/*", + "lib/*", + "peers/*", + "scripts/*.js", + "stubs/*", + "nesting/*", + "types/**/*", + "*.d.ts", + "*.css", + "*.js" + ], + "devDependencies": { + "@swc/cli": "0.1.59", + "@swc/core": "1.3.24", + "@swc/jest": "0.2.24", + "@swc/register": "0.1.10", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", + "concurrently": "^7.5.0", + "cssnano": "^5.1.14", + "esbuild": "^0.16.10", + "eslint": "^8.31.0", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-prettier": "^4.2.1", + "jest": "^28.1.3", + "jest-diff": "^28.1.3", + "lightningcss": "^1.18.0", + "prettier": "^2.8.1", + "rimraf": "^3.0.0", + "source-map-js": "^1.0.2", + "turbo": "^1.6.3" + }, + "peerDependencies": { + "postcss": "^8.0.9" + }, + "dependencies": { + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.17.2", + "lilconfig": "^2.0.6", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.0.9", + "postcss-import": "^14.1.0", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "6.0.0", + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.1", + "sucrase": "^3.29.0" + }, + "browserslist": [ + "> 1%", + "not edge <= 18", + "not ie 11", + "not op_mini all" + ], + "jest": { + "testTimeout": 30000, + "setupFilesAfterEnv": [ + "/jest/customMatchers.js" + ], + "testPathIgnorePatterns": [ + "/node_modules/", + "/integrations/", + "/standalone-cli/", + "\\.test\\.skip\\.js$" + ], + "transformIgnorePatterns": [ + "node_modules/(?!lightningcss)" + ], + "transform": { + "\\.js$": "@swc/jest", + "\\.ts$": "@swc/jest" + } + }, + "engines": { + "node": ">=12.13.0" + } +} diff --git a/node_modules/tailwindcss/peers/index.js b/node_modules/tailwindcss/peers/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b29987efbbbfbc20ee8f57640f2098767e038050 --- /dev/null +++ b/node_modules/tailwindcss/peers/index.js @@ -0,0 +1,79531 @@ +"use strict"; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; + +// node_modules/picocolors/picocolors.js +var require_picocolors = __commonJS({ + "node_modules/picocolors/picocolors.js"(exports2, module2) { + var tty = require("tty"); + var isColorSupported = !("NO_COLOR" in process.env || process.argv.includes("--no-color")) && ("FORCE_COLOR" in process.env || process.argv.includes("--color") || process.platform === "win32" || tty.isatty(1) && process.env.TERM !== "dumb" || "CI" in process.env); + var formatter = (open, close, replace = open) => (input) => { + let string = "" + input; + let index = string.indexOf(close, open.length); + return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close; + }; + var replaceClose = (string, close, replace, index) => { + let start = string.substring(0, index) + replace; + let end = string.substring(index + close.length); + let nextIndex = end.indexOf(close); + return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end; + }; + var createColors = (enabled = isColorSupported) => ({ + isColorSupported: enabled, + reset: enabled ? (s) => `\x1B[0m${s}\x1B[0m` : String, + bold: enabled ? formatter("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m") : String, + dim: enabled ? formatter("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m") : String, + italic: enabled ? formatter("\x1B[3m", "\x1B[23m") : String, + underline: enabled ? formatter("\x1B[4m", "\x1B[24m") : String, + inverse: enabled ? formatter("\x1B[7m", "\x1B[27m") : String, + hidden: enabled ? formatter("\x1B[8m", "\x1B[28m") : String, + strikethrough: enabled ? formatter("\x1B[9m", "\x1B[29m") : String, + black: enabled ? formatter("\x1B[30m", "\x1B[39m") : String, + red: enabled ? formatter("\x1B[31m", "\x1B[39m") : String, + green: enabled ? formatter("\x1B[32m", "\x1B[39m") : String, + yellow: enabled ? formatter("\x1B[33m", "\x1B[39m") : String, + blue: enabled ? formatter("\x1B[34m", "\x1B[39m") : String, + magenta: enabled ? formatter("\x1B[35m", "\x1B[39m") : String, + cyan: enabled ? formatter("\x1B[36m", "\x1B[39m") : String, + white: enabled ? formatter("\x1B[37m", "\x1B[39m") : String, + gray: enabled ? formatter("\x1B[90m", "\x1B[39m") : String, + bgBlack: enabled ? formatter("\x1B[40m", "\x1B[49m") : String, + bgRed: enabled ? formatter("\x1B[41m", "\x1B[49m") : String, + bgGreen: enabled ? formatter("\x1B[42m", "\x1B[49m") : String, + bgYellow: enabled ? formatter("\x1B[43m", "\x1B[49m") : String, + bgBlue: enabled ? formatter("\x1B[44m", "\x1B[49m") : String, + bgMagenta: enabled ? formatter("\x1B[45m", "\x1B[49m") : String, + bgCyan: enabled ? formatter("\x1B[46m", "\x1B[49m") : String, + bgWhite: enabled ? formatter("\x1B[47m", "\x1B[49m") : String + }); + module2.exports = createColors(); + module2.exports.createColors = createColors; + } +}); + +// node_modules/postcss/lib/tokenize.js +var require_tokenize = __commonJS({ + "node_modules/postcss/lib/tokenize.js"(exports2, module2) { + "use strict"; + var SINGLE_QUOTE = "'".charCodeAt(0); + var DOUBLE_QUOTE = '"'.charCodeAt(0); + var BACKSLASH = "\\".charCodeAt(0); + var SLASH = "/".charCodeAt(0); + var NEWLINE = "\n".charCodeAt(0); + var SPACE = " ".charCodeAt(0); + var FEED = "\f".charCodeAt(0); + var TAB = " ".charCodeAt(0); + var CR = "\r".charCodeAt(0); + var OPEN_SQUARE = "[".charCodeAt(0); + var CLOSE_SQUARE = "]".charCodeAt(0); + var OPEN_PARENTHESES = "(".charCodeAt(0); + var CLOSE_PARENTHESES = ")".charCodeAt(0); + var OPEN_CURLY = "{".charCodeAt(0); + var CLOSE_CURLY = "}".charCodeAt(0); + var SEMICOLON = ";".charCodeAt(0); + var ASTERISK = "*".charCodeAt(0); + var COLON = ":".charCodeAt(0); + var AT = "@".charCodeAt(0); + var RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g; + var RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g; + var RE_BAD_BRACKET = /.[\n"'(/\\]/; + var RE_HEX_ESCAPE = /[\da-f]/i; + module2.exports = function tokenizer(input, options = {}) { + let css = input.css.valueOf(); + let ignore = options.ignoreErrors; + let code, next, quote, content, escape; + let escaped, escapePos, prev, n, currentToken; + let length = css.length; + let pos = 0; + let buffer = []; + let returned = []; + function position() { + return pos; + } + function unclosed(what) { + throw input.error("Unclosed " + what, pos); + } + function endOfFile() { + return returned.length === 0 && pos >= length; + } + function nextToken(opts) { + if (returned.length) + return returned.pop(); + if (pos >= length) + return; + let ignoreUnclosed = opts ? opts.ignoreUnclosed : false; + code = css.charCodeAt(pos); + switch (code) { + case NEWLINE: + case SPACE: + case TAB: + case CR: + case FEED: { + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED); + currentToken = ["space", css.slice(pos, next)]; + pos = next - 1; + break; + } + case OPEN_SQUARE: + case CLOSE_SQUARE: + case OPEN_CURLY: + case CLOSE_CURLY: + case COLON: + case SEMICOLON: + case CLOSE_PARENTHESES: { + let controlChar = String.fromCharCode(code); + currentToken = [controlChar, controlChar, pos]; + break; + } + case OPEN_PARENTHESES: { + prev = buffer.length ? buffer.pop()[1] : ""; + n = css.charCodeAt(pos + 1); + if (prev === "url" && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) { + next = pos; + do { + escaped = false; + next = css.indexOf(")", next + 1); + if (next === -1) { + if (ignore || ignoreUnclosed) { + next = pos; + break; + } else { + unclosed("bracket"); + } + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + currentToken = ["brackets", css.slice(pos, next + 1), pos, next]; + pos = next; + } else { + next = css.indexOf(")", pos + 1); + content = css.slice(pos, next + 1); + if (next === -1 || RE_BAD_BRACKET.test(content)) { + currentToken = ["(", "(", pos]; + } else { + currentToken = ["brackets", content, pos, next]; + pos = next; + } + } + break; + } + case SINGLE_QUOTE: + case DOUBLE_QUOTE: { + quote = code === SINGLE_QUOTE ? "'" : '"'; + next = pos; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + if (ignore || ignoreUnclosed) { + next = pos + 1; + break; + } else { + unclosed("string"); + } + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + currentToken = ["string", css.slice(pos, next + 1), pos, next]; + pos = next; + break; + } + case AT: { + RE_AT_END.lastIndex = pos + 1; + RE_AT_END.test(css); + if (RE_AT_END.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_AT_END.lastIndex - 2; + } + currentToken = ["at-word", css.slice(pos, next + 1), pos, next]; + pos = next; + break; + } + case BACKSLASH: { + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === BACKSLASH) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) { + next += 1; + if (RE_HEX_ESCAPE.test(css.charAt(next))) { + while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) { + next += 1; + } + if (css.charCodeAt(next + 1) === SPACE) { + next += 1; + } + } + } + currentToken = ["word", css.slice(pos, next + 1), pos, next]; + pos = next; + break; + } + default: { + if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) { + next = css.indexOf("*/", pos + 2) + 1; + if (next === 0) { + if (ignore || ignoreUnclosed) { + next = css.length; + } else { + unclosed("comment"); + } + } + currentToken = ["comment", css.slice(pos, next + 1), pos, next]; + pos = next; + } else { + RE_WORD_END.lastIndex = pos + 1; + RE_WORD_END.test(css); + if (RE_WORD_END.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_WORD_END.lastIndex - 2; + } + currentToken = ["word", css.slice(pos, next + 1), pos, next]; + buffer.push(currentToken); + pos = next; + } + break; + } + } + pos++; + return currentToken; + } + function back(token) { + returned.push(token); + } + return { + back, + nextToken, + endOfFile, + position + }; + }; + } +}); + +// node_modules/postcss/lib/terminal-highlight.js +var require_terminal_highlight = __commonJS({ + "node_modules/postcss/lib/terminal-highlight.js"(exports2, module2) { + "use strict"; + var pico = require_picocolors(); + var tokenizer = require_tokenize(); + var Input; + function registerInput(dependant) { + Input = dependant; + } + var HIGHLIGHT_THEME = { + "brackets": pico.cyan, + "at-word": pico.cyan, + "comment": pico.gray, + "string": pico.green, + "class": pico.yellow, + "hash": pico.magenta, + "call": pico.cyan, + "(": pico.cyan, + ")": pico.cyan, + "{": pico.yellow, + "}": pico.yellow, + "[": pico.yellow, + "]": pico.yellow, + ":": pico.yellow, + ";": pico.yellow + }; + function getTokenType([type, value], processor) { + if (type === "word") { + if (value[0] === ".") { + return "class"; + } + if (value[0] === "#") { + return "hash"; + } + } + if (!processor.endOfFile()) { + let next = processor.nextToken(); + processor.back(next); + if (next[0] === "brackets" || next[0] === "(") + return "call"; + } + return type; + } + function terminalHighlight(css) { + let processor = tokenizer(new Input(css), { ignoreErrors: true }); + let result = ""; + while (!processor.endOfFile()) { + let token = processor.nextToken(); + let color = HIGHLIGHT_THEME[getTokenType(token, processor)]; + if (color) { + result += token[1].split(/\r?\n/).map((i) => color(i)).join("\n"); + } else { + result += token[1]; + } + } + return result; + } + terminalHighlight.registerInput = registerInput; + module2.exports = terminalHighlight; + } +}); + +// node_modules/postcss/lib/css-syntax-error.js +var require_css_syntax_error = __commonJS({ + "node_modules/postcss/lib/css-syntax-error.js"(exports2, module2) { + "use strict"; + var pico = require_picocolors(); + var terminalHighlight = require_terminal_highlight(); + var CssSyntaxError = class extends Error { + constructor(message, line, column, source, file, plugin) { + super(message); + this.name = "CssSyntaxError"; + this.reason = message; + if (file) { + this.file = file; + } + if (source) { + this.source = source; + } + if (plugin) { + this.plugin = plugin; + } + if (typeof line !== "undefined" && typeof column !== "undefined") { + if (typeof line === "number") { + this.line = line; + this.column = column; + } else { + this.line = line.line; + this.column = line.column; + this.endLine = column.line; + this.endColumn = column.column; + } + } + this.setMessage(); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, CssSyntaxError); + } + } + setMessage() { + this.message = this.plugin ? this.plugin + ": " : ""; + this.message += this.file ? this.file : ""; + if (typeof this.line !== "undefined") { + this.message += ":" + this.line + ":" + this.column; + } + this.message += ": " + this.reason; + } + showSourceCode(color) { + if (!this.source) + return ""; + let css = this.source; + if (color == null) + color = pico.isColorSupported; + if (terminalHighlight) { + if (color) + css = terminalHighlight(css); + } + let lines = css.split(/\r?\n/); + let start = Math.max(this.line - 3, 0); + let end = Math.min(this.line + 2, lines.length); + let maxWidth = String(end).length; + let mark, aside; + if (color) { + let { bold, red, gray } = pico.createColors(true); + mark = (text) => bold(red(text)); + aside = (text) => gray(text); + } else { + mark = aside = (str) => str; + } + return lines.slice(start, end).map((line, index) => { + let number = start + 1 + index; + let gutter = " " + (" " + number).slice(-maxWidth) + " | "; + if (number === this.line) { + let spacing = aside(gutter.replace(/\d/g, " ")) + line.slice(0, this.column - 1).replace(/[^\t]/g, " "); + return mark(">") + aside(gutter) + line + "\n " + spacing + mark("^"); + } + return " " + aside(gutter) + line; + }).join("\n"); + } + toString() { + let code = this.showSourceCode(); + if (code) { + code = "\n\n" + code + "\n"; + } + return this.name + ": " + this.message + code; + } + }; + module2.exports = CssSyntaxError; + CssSyntaxError.default = CssSyntaxError; + } +}); + +// node_modules/postcss/lib/symbols.js +var require_symbols = __commonJS({ + "node_modules/postcss/lib/symbols.js"(exports2, module2) { + "use strict"; + module2.exports.isClean = Symbol("isClean"); + module2.exports.my = Symbol("my"); + } +}); + +// node_modules/postcss/lib/stringifier.js +var require_stringifier = __commonJS({ + "node_modules/postcss/lib/stringifier.js"(exports2, module2) { + "use strict"; + var DEFAULT_RAW = { + colon: ": ", + indent: " ", + beforeDecl: "\n", + beforeRule: "\n", + beforeOpen: " ", + beforeClose: "\n", + beforeComment: "\n", + after: "\n", + emptyBody: "", + commentLeft: " ", + commentRight: " ", + semicolon: false + }; + function capitalize(str) { + return str[0].toUpperCase() + str.slice(1); + } + var Stringifier = class { + constructor(builder) { + this.builder = builder; + } + stringify(node, semicolon) { + if (!this[node.type]) { + throw new Error( + "Unknown AST node type " + node.type + ". Maybe you need to change PostCSS stringifier." + ); + } + this[node.type](node, semicolon); + } + document(node) { + this.body(node); + } + root(node) { + this.body(node); + if (node.raws.after) + this.builder(node.raws.after); + } + comment(node) { + let left = this.raw(node, "left", "commentLeft"); + let right = this.raw(node, "right", "commentRight"); + this.builder("/*" + left + node.text + right + "*/", node); + } + decl(node, semicolon) { + let between = this.raw(node, "between", "colon"); + let string = node.prop + between + this.rawValue(node, "value"); + if (node.important) { + string += node.raws.important || " !important"; + } + if (semicolon) + string += ";"; + this.builder(string, node); + } + rule(node) { + this.block(node, this.rawValue(node, "selector")); + if (node.raws.ownSemicolon) { + this.builder(node.raws.ownSemicolon, node, "end"); + } + } + atrule(node, semicolon) { + let name = "@" + node.name; + let params = node.params ? this.rawValue(node, "params") : ""; + if (typeof node.raws.afterName !== "undefined") { + name += node.raws.afterName; + } else if (params) { + name += " "; + } + if (node.nodes) { + this.block(node, name + params); + } else { + let end = (node.raws.between || "") + (semicolon ? ";" : ""); + this.builder(name + params + end, node); + } + } + body(node) { + let last = node.nodes.length - 1; + while (last > 0) { + if (node.nodes[last].type !== "comment") + break; + last -= 1; + } + let semicolon = this.raw(node, "semicolon"); + for (let i = 0; i < node.nodes.length; i++) { + let child = node.nodes[i]; + let before = this.raw(child, "before"); + if (before) + this.builder(before); + this.stringify(child, last !== i || semicolon); + } + } + block(node, start) { + let between = this.raw(node, "between", "beforeOpen"); + this.builder(start + between + "{", node, "start"); + let after; + if (node.nodes && node.nodes.length) { + this.body(node); + after = this.raw(node, "after"); + } else { + after = this.raw(node, "after", "emptyBody"); + } + if (after) + this.builder(after); + this.builder("}", node, "end"); + } + raw(node, own, detect) { + let value; + if (!detect) + detect = own; + if (own) { + value = node.raws[own]; + if (typeof value !== "undefined") + return value; + } + let parent = node.parent; + if (detect === "before") { + if (!parent || parent.type === "root" && parent.first === node) { + return ""; + } + if (parent && parent.type === "document") { + return ""; + } + } + if (!parent) + return DEFAULT_RAW[detect]; + let root = node.root(); + if (!root.rawCache) + root.rawCache = {}; + if (typeof root.rawCache[detect] !== "undefined") { + return root.rawCache[detect]; + } + if (detect === "before" || detect === "after") { + return this.beforeAfter(node, detect); + } else { + let method = "raw" + capitalize(detect); + if (this[method]) { + value = this[method](root, node); + } else { + root.walk((i) => { + value = i.raws[own]; + if (typeof value !== "undefined") + return false; + }); + } + } + if (typeof value === "undefined") + value = DEFAULT_RAW[detect]; + root.rawCache[detect] = value; + return value; + } + rawSemicolon(root) { + let value; + root.walk((i) => { + if (i.nodes && i.nodes.length && i.last.type === "decl") { + value = i.raws.semicolon; + if (typeof value !== "undefined") + return false; + } + }); + return value; + } + rawEmptyBody(root) { + let value; + root.walk((i) => { + if (i.nodes && i.nodes.length === 0) { + value = i.raws.after; + if (typeof value !== "undefined") + return false; + } + }); + return value; + } + rawIndent(root) { + if (root.raws.indent) + return root.raws.indent; + let value; + root.walk((i) => { + let p = i.parent; + if (p && p !== root && p.parent && p.parent === root) { + if (typeof i.raws.before !== "undefined") { + let parts = i.raws.before.split("\n"); + value = parts[parts.length - 1]; + value = value.replace(/\S/g, ""); + return false; + } + } + }); + return value; + } + rawBeforeComment(root, node) { + let value; + root.walkComments((i) => { + if (typeof i.raws.before !== "undefined") { + value = i.raws.before; + if (value.includes("\n")) { + value = value.replace(/[^\n]+$/, ""); + } + return false; + } + }); + if (typeof value === "undefined") { + value = this.raw(node, null, "beforeDecl"); + } else if (value) { + value = value.replace(/\S/g, ""); + } + return value; + } + rawBeforeDecl(root, node) { + let value; + root.walkDecls((i) => { + if (typeof i.raws.before !== "undefined") { + value = i.raws.before; + if (value.includes("\n")) { + value = value.replace(/[^\n]+$/, ""); + } + return false; + } + }); + if (typeof value === "undefined") { + value = this.raw(node, null, "beforeRule"); + } else if (value) { + value = value.replace(/\S/g, ""); + } + return value; + } + rawBeforeRule(root) { + let value; + root.walk((i) => { + if (i.nodes && (i.parent !== root || root.first !== i)) { + if (typeof i.raws.before !== "undefined") { + value = i.raws.before; + if (value.includes("\n")) { + value = value.replace(/[^\n]+$/, ""); + } + return false; + } + } + }); + if (value) + value = value.replace(/\S/g, ""); + return value; + } + rawBeforeClose(root) { + let value; + root.walk((i) => { + if (i.nodes && i.nodes.length > 0) { + if (typeof i.raws.after !== "undefined") { + value = i.raws.after; + if (value.includes("\n")) { + value = value.replace(/[^\n]+$/, ""); + } + return false; + } + } + }); + if (value) + value = value.replace(/\S/g, ""); + return value; + } + rawBeforeOpen(root) { + let value; + root.walk((i) => { + if (i.type !== "decl") { + value = i.raws.between; + if (typeof value !== "undefined") + return false; + } + }); + return value; + } + rawColon(root) { + let value; + root.walkDecls((i) => { + if (typeof i.raws.between !== "undefined") { + value = i.raws.between.replace(/[^\s:]/g, ""); + return false; + } + }); + return value; + } + beforeAfter(node, detect) { + let value; + if (node.type === "decl") { + value = this.raw(node, null, "beforeDecl"); + } else if (node.type === "comment") { + value = this.raw(node, null, "beforeComment"); + } else if (detect === "before") { + value = this.raw(node, null, "beforeRule"); + } else { + value = this.raw(node, null, "beforeClose"); + } + let buf = node.parent; + let depth = 0; + while (buf && buf.type !== "root") { + depth += 1; + buf = buf.parent; + } + if (value.includes("\n")) { + let indent = this.raw(node, null, "indent"); + if (indent.length) { + for (let step = 0; step < depth; step++) + value += indent; + } + } + return value; + } + rawValue(node, prop) { + let value = node[prop]; + let raw = node.raws[prop]; + if (raw && raw.value === value) { + return raw.raw; + } + return value; + } + }; + module2.exports = Stringifier; + Stringifier.default = Stringifier; + } +}); + +// node_modules/postcss/lib/stringify.js +var require_stringify = __commonJS({ + "node_modules/postcss/lib/stringify.js"(exports2, module2) { + "use strict"; + var Stringifier = require_stringifier(); + function stringify(node, builder) { + let str = new Stringifier(builder); + str.stringify(node); + } + module2.exports = stringify; + stringify.default = stringify; + } +}); + +// node_modules/postcss/lib/node.js +var require_node = __commonJS({ + "node_modules/postcss/lib/node.js"(exports2, module2) { + "use strict"; + var { isClean, my } = require_symbols(); + var CssSyntaxError = require_css_syntax_error(); + var Stringifier = require_stringifier(); + var stringify = require_stringify(); + function cloneNode(obj, parent) { + let cloned = new obj.constructor(); + for (let i in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, i)) { + continue; + } + if (i === "proxyCache") + continue; + let value = obj[i]; + let type = typeof value; + if (i === "parent" && type === "object") { + if (parent) + cloned[i] = parent; + } else if (i === "source") { + cloned[i] = value; + } else if (Array.isArray(value)) { + cloned[i] = value.map((j) => cloneNode(j, cloned)); + } else { + if (type === "object" && value !== null) + value = cloneNode(value); + cloned[i] = value; + } + } + return cloned; + } + var Node = class { + constructor(defaults = {}) { + this.raws = {}; + this[isClean] = false; + this[my] = true; + for (let name in defaults) { + if (name === "nodes") { + this.nodes = []; + for (let node of defaults[name]) { + if (typeof node.clone === "function") { + this.append(node.clone()); + } else { + this.append(node); + } + } + } else { + this[name] = defaults[name]; + } + } + } + error(message, opts = {}) { + if (this.source) { + let { start, end } = this.rangeBy(opts); + return this.source.input.error( + message, + { line: start.line, column: start.column }, + { line: end.line, column: end.column }, + opts + ); + } + return new CssSyntaxError(message); + } + warn(result, text, opts) { + let data = { node: this }; + for (let i in opts) + data[i] = opts[i]; + return result.warn(text, data); + } + remove() { + if (this.parent) { + this.parent.removeChild(this); + } + this.parent = void 0; + return this; + } + toString(stringifier = stringify) { + if (stringifier.stringify) + stringifier = stringifier.stringify; + let result = ""; + stringifier(this, (i) => { + result += i; + }); + return result; + } + assign(overrides = {}) { + for (let name in overrides) { + this[name] = overrides[name]; + } + return this; + } + clone(overrides = {}) { + let cloned = cloneNode(this); + for (let name in overrides) { + cloned[name] = overrides[name]; + } + return cloned; + } + cloneBefore(overrides = {}) { + let cloned = this.clone(overrides); + this.parent.insertBefore(this, cloned); + return cloned; + } + cloneAfter(overrides = {}) { + let cloned = this.clone(overrides); + this.parent.insertAfter(this, cloned); + return cloned; + } + replaceWith(...nodes) { + if (this.parent) { + let bookmark = this; + let foundSelf = false; + for (let node of nodes) { + if (node === this) { + foundSelf = true; + } else if (foundSelf) { + this.parent.insertAfter(bookmark, node); + bookmark = node; + } else { + this.parent.insertBefore(bookmark, node); + } + } + if (!foundSelf) { + this.remove(); + } + } + return this; + } + next() { + if (!this.parent) + return void 0; + let index = this.parent.index(this); + return this.parent.nodes[index + 1]; + } + prev() { + if (!this.parent) + return void 0; + let index = this.parent.index(this); + return this.parent.nodes[index - 1]; + } + before(add) { + this.parent.insertBefore(this, add); + return this; + } + after(add) { + this.parent.insertAfter(this, add); + return this; + } + root() { + let result = this; + while (result.parent && result.parent.type !== "document") { + result = result.parent; + } + return result; + } + raw(prop, defaultType) { + let str = new Stringifier(); + return str.raw(this, prop, defaultType); + } + cleanRaws(keepBetween) { + delete this.raws.before; + delete this.raws.after; + if (!keepBetween) + delete this.raws.between; + } + toJSON(_, inputs) { + let fixed = {}; + let emitInputs = inputs == null; + inputs = inputs || /* @__PURE__ */ new Map(); + let inputsNextIndex = 0; + for (let name in this) { + if (!Object.prototype.hasOwnProperty.call(this, name)) { + continue; + } + if (name === "parent" || name === "proxyCache") + continue; + let value = this[name]; + if (Array.isArray(value)) { + fixed[name] = value.map((i) => { + if (typeof i === "object" && i.toJSON) { + return i.toJSON(null, inputs); + } else { + return i; + } + }); + } else if (typeof value === "object" && value.toJSON) { + fixed[name] = value.toJSON(null, inputs); + } else if (name === "source") { + let inputId = inputs.get(value.input); + if (inputId == null) { + inputId = inputsNextIndex; + inputs.set(value.input, inputsNextIndex); + inputsNextIndex++; + } + fixed[name] = { + inputId, + start: value.start, + end: value.end + }; + } else { + fixed[name] = value; + } + } + if (emitInputs) { + fixed.inputs = [...inputs.keys()].map((input) => input.toJSON()); + } + return fixed; + } + positionInside(index) { + let string = this.toString(); + let column = this.source.start.column; + let line = this.source.start.line; + for (let i = 0; i < index; i++) { + if (string[i] === "\n") { + column = 1; + line += 1; + } else { + column += 1; + } + } + return { line, column }; + } + positionBy(opts) { + let pos = this.source.start; + if (opts.index) { + pos = this.positionInside(opts.index); + } else if (opts.word) { + let index = this.toString().indexOf(opts.word); + if (index !== -1) + pos = this.positionInside(index); + } + return pos; + } + rangeBy(opts) { + let start = { + line: this.source.start.line, + column: this.source.start.column + }; + let end = this.source.end ? { + line: this.source.end.line, + column: this.source.end.column + 1 + } : { + line: start.line, + column: start.column + 1 + }; + if (opts.word) { + let index = this.toString().indexOf(opts.word); + if (index !== -1) { + start = this.positionInside(index); + end = this.positionInside(index + opts.word.length); + } + } else { + if (opts.start) { + start = { + line: opts.start.line, + column: opts.start.column + }; + } else if (opts.index) { + start = this.positionInside(opts.index); + } + if (opts.end) { + end = { + line: opts.end.line, + column: opts.end.column + }; + } else if (opts.endIndex) { + end = this.positionInside(opts.endIndex); + } else if (opts.index) { + end = this.positionInside(opts.index + 1); + } + } + if (end.line < start.line || end.line === start.line && end.column <= start.column) { + end = { line: start.line, column: start.column + 1 }; + } + return { start, end }; + } + getProxyProcessor() { + return { + set(node, prop, value) { + if (node[prop] === value) + return true; + node[prop] = value; + if (prop === "prop" || prop === "value" || prop === "name" || prop === "params" || prop === "important" || prop === "text") { + node.markDirty(); + } + return true; + }, + get(node, prop) { + if (prop === "proxyOf") { + return node; + } else if (prop === "root") { + return () => node.root().toProxy(); + } else { + return node[prop]; + } + } + }; + } + toProxy() { + if (!this.proxyCache) { + this.proxyCache = new Proxy(this, this.getProxyProcessor()); + } + return this.proxyCache; + } + addToError(error) { + error.postcssNode = this; + if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) { + let s = this.source; + error.stack = error.stack.replace( + /\n\s{4}at /, + `$&${s.input.from}:${s.start.line}:${s.start.column}$&` + ); + } + return error; + } + markDirty() { + if (this[isClean]) { + this[isClean] = false; + let next = this; + while (next = next.parent) { + next[isClean] = false; + } + } + } + get proxyOf() { + return this; + } + }; + module2.exports = Node; + Node.default = Node; + } +}); + +// node_modules/postcss/lib/declaration.js +var require_declaration = __commonJS({ + "node_modules/postcss/lib/declaration.js"(exports2, module2) { + "use strict"; + var Node = require_node(); + var Declaration = class extends Node { + constructor(defaults) { + if (defaults && typeof defaults.value !== "undefined" && typeof defaults.value !== "string") { + defaults = { ...defaults, value: String(defaults.value) }; + } + super(defaults); + this.type = "decl"; + } + get variable() { + return this.prop.startsWith("--") || this.prop[0] === "$"; + } + }; + module2.exports = Declaration; + Declaration.default = Declaration; + } +}); + +// node_modules/source-map-js/lib/base64.js +var require_base64 = __commonJS({ + "node_modules/source-map-js/lib/base64.js"(exports2) { + var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""); + exports2.encode = function(number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); + }; + exports2.decode = function(charCode) { + var bigA = 65; + var bigZ = 90; + var littleA = 97; + var littleZ = 122; + var zero = 48; + var nine = 57; + var plus = 43; + var slash = 47; + var littleOffset = 26; + var numberOffset = 52; + if (bigA <= charCode && charCode <= bigZ) { + return charCode - bigA; + } + if (littleA <= charCode && charCode <= littleZ) { + return charCode - littleA + littleOffset; + } + if (zero <= charCode && charCode <= nine) { + return charCode - zero + numberOffset; + } + if (charCode == plus) { + return 62; + } + if (charCode == slash) { + return 63; + } + return -1; + }; + } +}); + +// node_modules/source-map-js/lib/base64-vlq.js +var require_base64_vlq = __commonJS({ + "node_modules/source-map-js/lib/base64-vlq.js"(exports2) { + var base64 = require_base64(); + var VLQ_BASE_SHIFT = 5; + var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + var VLQ_BASE_MASK = VLQ_BASE - 1; + var VLQ_CONTINUATION_BIT = VLQ_BASE; + function toVLQSigned(aValue) { + return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0; + } + function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative ? -shifted : shifted; + } + exports2.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + var vlq = toVLQSigned(aValue); + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + return encoded; + }; + exports2.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; + }; + } +}); + +// node_modules/source-map-js/lib/util.js +var require_util = __commonJS({ + "node_modules/source-map-js/lib/util.js"(exports2) { + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports2.getArg = getArg; + var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; + var dataUrlRegexp = /^data:.+\,.+$/; + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; + } + exports2.urlParse = urlParse; + function urlGenerate(aParsedUrl) { + var url = ""; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ":"; + } + url += "//"; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + "@"; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port; + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; + } + exports2.urlGenerate = urlGenerate; + var MAX_CACHED_INPUTS = 32; + function lruMemoize(f) { + var cache = []; + return function(input) { + for (var i = 0; i < cache.length; i++) { + if (cache[i].input === input) { + var temp = cache[0]; + cache[0] = cache[i]; + cache[i] = temp; + return cache[0].result; + } + } + var result = f(input); + cache.unshift({ + input, + result + }); + if (cache.length > MAX_CACHED_INPUTS) { + cache.pop(); + } + return result; + }; + } + var normalize = lruMemoize(function normalize2(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports2.isAbsolute(path); + var parts = []; + var start = 0; + var i = 0; + while (true) { + start = i; + i = path.indexOf("/", start); + if (i === -1) { + parts.push(path.slice(start)); + break; + } else { + parts.push(path.slice(start, i)); + while (i < path.length && path[i] === "/") { + i++; + } + } + } + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === ".") { + parts.splice(i, 1); + } else if (part === "..") { + up++; + } else if (up > 0) { + if (part === "") { + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join("/"); + if (path === "") { + path = isAbsolute ? "/" : "."; + } + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; + }); + exports2.normalize = normalize; + function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || "/"; + } + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + var joined = aPath.charAt(0) === "/" ? aPath : normalize(aRoot.replace(/\/+$/, "") + "/" + aPath); + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; + } + exports2.join = join; + exports2.isAbsolute = function(aPath) { + return aPath.charAt(0) === "/" || urlRegexp.test(aPath); + }; + function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + aRoot = aRoot.replace(/\/$/, ""); + var level = 0; + while (aPath.indexOf(aRoot + "/") !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + ++level; + } + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); + } + exports2.relative = relative; + var supportsNullProto = function() { + var obj = /* @__PURE__ */ Object.create(null); + return !("__proto__" in obj); + }(); + function identity(s) { + return s; + } + function toSetString(aStr) { + if (isProtoString(aStr)) { + return "$" + aStr; + } + return aStr; + } + exports2.toSetString = supportsNullProto ? identity : toSetString; + function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + return aStr; + } + exports2.fromSetString = supportsNullProto ? identity : fromSetString; + function isProtoString(s) { + if (!s) { + return false; + } + var length = s.length; + if (length < 9) { + return false; + } + if (s.charCodeAt(length - 1) !== 95 || s.charCodeAt(length - 2) !== 95 || s.charCodeAt(length - 3) !== 111 || s.charCodeAt(length - 4) !== 116 || s.charCodeAt(length - 5) !== 111 || s.charCodeAt(length - 6) !== 114 || s.charCodeAt(length - 7) !== 112 || s.charCodeAt(length - 8) !== 95 || s.charCodeAt(length - 9) !== 95) { + return false; + } + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36) { + return false; + } + } + return true; + } + function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports2.compareByOriginalPositions = compareByOriginalPositions; + function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) { + var cmp; + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports2.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource; + function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports2.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports2.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine; + function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + if (aStr1 === null) { + return 1; + } + if (aStr2 === null) { + return -1; + } + if (aStr1 > aStr2) { + return 1; + } + return -1; + } + function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports2.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, "")); + } + exports2.parseSourceMapInput = parseSourceMapInput; + function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ""; + if (sourceRoot) { + if (sourceRoot[sourceRoot.length - 1] !== "/" && sourceURL[0] !== "/") { + sourceRoot += "/"; + } + sourceURL = sourceRoot + sourceURL; + } + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + var index = parsed.path.lastIndexOf("/"); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + return normalize(sourceURL); + } + exports2.computeSourceURL = computeSourceURL; + } +}); + +// node_modules/source-map-js/lib/array-set.js +var require_array_set = __commonJS({ + "node_modules/source-map-js/lib/array-set.js"(exports2) { + var util = require_util(); + var has = Object.prototype.hasOwnProperty; + var hasNativeMap = typeof Map !== "undefined"; + function ArraySet() { + this._array = []; + this._set = hasNativeMap ? /* @__PURE__ */ new Map() : /* @__PURE__ */ Object.create(null); + } + ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; + }; + ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; + }; + ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } + }; + ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } + }; + ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + throw new Error('"' + aStr + '" is not in the set.'); + }; + ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error("No element indexed by " + aIdx); + }; + ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); + }; + exports2.ArraySet = ArraySet; + } +}); + +// node_modules/source-map-js/lib/mapping-list.js +var require_mapping_list = __commonJS({ + "node_modules/source-map-js/lib/mapping-list.js"(exports2) { + var util = require_util(); + function generatedPositionAfter(mappingA, mappingB) { + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; + } + function MappingList() { + this._array = []; + this._sorted = true; + this._last = { generatedLine: -1, generatedColumn: 0 }; + } + MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } + }; + MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; + }; + exports2.MappingList = MappingList; + } +}); + +// node_modules/source-map-js/lib/source-map-generator.js +var require_source_map_generator = __commonJS({ + "node_modules/source-map-js/lib/source-map-generator.js"(exports2) { + var base64VLQ = require_base64_vlq(); + var util = require_util(); + var ArraySet = require_array_set().ArraySet; + var MappingList = require_mapping_list().MappingList; + function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, "file", null); + this._sourceRoot = util.getArg(aArgs, "sourceRoot", null); + this._skipValidation = util.getArg(aArgs, "skipValidation", false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; + } + SourceMapGenerator.prototype._version = 3; + SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot + }); + aSourceMapConsumer.eachMapping(function(mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function(sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, "generated"); + var original = util.getArg(aArgs, "original", null); + var source = util.getArg(aArgs, "source", null); + var name = util.getArg(aArgs, "name", null); + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source, + name + }); + }; + SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + if (aSourceContent != null) { + if (!this._sourcesContents) { + this._sourcesContents = /* @__PURE__ */ Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + `SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.` + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + var newSources = new ArraySet(); + var newNames = new ArraySet(); + this._mappings.unsortedForEach(function(mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source); + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + }, this); + this._sources = newSources; + this._names = newNames; + aSourceMapConsumer.sources.forEach(function(sourceFile2) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile2); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile2 = util.join(aSourceMapPath, sourceFile2); + } + if (sourceRoot != null) { + sourceFile2 = util.relative(sourceRoot, sourceFile2); + } + this.setSourceContent(sourceFile2, content); + } + }, this); + }; + SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) { + if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") { + throw new Error( + "original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values." + ); + } + if (aGenerated && "line" in aGenerated && "column" in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) { + return; + } else if (aGenerated && "line" in aGenerated && "column" in aGenerated && aOriginal && "line" in aOriginal && "column" in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) { + return; + } else { + throw new Error("Invalid mapping: " + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ""; + var next; + var mapping; + var nameIdx; + var sourceIdx; + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = ""; + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ";"; + previousGeneratedLine++; + } + } else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ","; + } + } + next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + result += next; + } + return result; + }; + SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function(source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null; + }, this); + }; + SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + return map; + }; + SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + exports2.SourceMapGenerator = SourceMapGenerator; + } +}); + +// node_modules/source-map-js/lib/binary-search.js +var require_binary_search = __commonJS({ + "node_modules/source-map-js/lib/binary-search.js"(exports2) { + exports2.GREATEST_LOWER_BOUND = 1; + exports2.LEAST_UPPER_BOUND = 2; + function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + return mid; + } else if (cmp > 0) { + if (aHigh - mid > 1) { + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + if (aBias == exports2.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } else { + if (mid - aLow > 1) { + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + if (aBias == exports2.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } + } + exports2.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + var index = recursiveSearch( + -1, + aHaystack.length, + aNeedle, + aHaystack, + aCompare, + aBias || exports2.GREATEST_LOWER_BOUND + ); + if (index < 0) { + return -1; + } + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + return index; + }; + } +}); + +// node_modules/source-map-js/lib/quick-sort.js +var require_quick_sort = __commonJS({ + "node_modules/source-map-js/lib/quick-sort.js"(exports2) { + function SortTemplate(comparator) { + function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; + } + function randomIntInRange(low, high) { + return Math.round(low + Math.random() * (high - low)); + } + function doQuickSort(ary, comparator2, p, r) { + if (p < r) { + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + swap(ary, pivotIndex, r); + var pivot = ary[r]; + for (var j = p; j < r; j++) { + if (comparator2(ary[j], pivot, false) <= 0) { + i += 1; + swap(ary, i, j); + } + } + swap(ary, i + 1, j); + var q = i + 1; + doQuickSort(ary, comparator2, p, q - 1); + doQuickSort(ary, comparator2, q + 1, r); + } + } + return doQuickSort; + } + function cloneSort(comparator) { + let template = SortTemplate.toString(); + let templateFn = new Function(`return ${template}`)(); + return templateFn(comparator); + } + var sortCache = /* @__PURE__ */ new WeakMap(); + exports2.quickSort = function(ary, comparator, start = 0) { + let doQuickSort = sortCache.get(comparator); + if (doQuickSort === void 0) { + doQuickSort = cloneSort(comparator); + sortCache.set(comparator, doQuickSort); + } + doQuickSort(ary, comparator, start, ary.length - 1); + }; + } +}); + +// node_modules/source-map-js/lib/source-map-consumer.js +var require_source_map_consumer = __commonJS({ + "node_modules/source-map-js/lib/source-map-consumer.js"(exports2) { + var util = require_util(); + var binarySearch = require_binary_search(); + var ArraySet = require_array_set().ArraySet; + var base64VLQ = require_base64_vlq(); + var quickSort = require_quick_sort().quickSort; + function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === "string") { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); + } + SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); + }; + SourceMapConsumer.prototype._version = 3; + SourceMapConsumer.prototype.__generatedMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, "_generatedMappings", { + configurable: true, + enumerable: true, + get: function() { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + return this.__generatedMappings; + } + }); + SourceMapConsumer.prototype.__originalMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, "_originalMappings", { + configurable: true, + enumerable: true, + get: function() { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + return this.__originalMappings; + } + }); + SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + SourceMapConsumer.GENERATED_ORDER = 1; + SourceMapConsumer.ORIGINAL_ORDER = 2; + SourceMapConsumer.GREATEST_LOWER_BOUND = 1; + SourceMapConsumer.LEAST_UPPER_BOUND = 2; + SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + var sourceRoot = this.sourceRoot; + var boundCallback = aCallback.bind(context); + var names = this._names; + var sources = this._sources; + var sourceMapURL = this._sourceMapURL; + for (var i = 0, n = mappings.length; i < n; i++) { + var mapping = mappings[i]; + var source = mapping.source === null ? null : sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, sourceMapURL); + boundCallback({ + source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : names.at(mapping.name) + }); + } + }; + SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, "line"); + var needle = { + source: util.getArg(aArgs, "source"), + originalLine: line, + originalColumn: util.getArg(aArgs, "column", 0) + }; + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + var mappings = []; + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND + ); + if (index >= 0) { + var mapping = this._originalMappings[index]; + if (aArgs.column === void 0) { + var originalLine = mapping.originalLine; + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, "generatedLine", null), + column: util.getArg(mapping, "generatedColumn", null), + lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) + }); + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, "generatedLine", null), + column: util.getArg(mapping, "generatedColumn", null), + lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) + }); + mapping = this._originalMappings[++index]; + } + } + } + return mappings; + }; + exports2.SourceMapConsumer = SourceMapConsumer; + function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === "string") { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + var version = util.getArg(sourceMap, "version"); + var sources = util.getArg(sourceMap, "sources"); + var names = util.getArg(sourceMap, "names", []); + var sourceRoot = util.getArg(sourceMap, "sourceRoot", null); + var sourcesContent = util.getArg(sourceMap, "sourcesContent", null); + var mappings = util.getArg(sourceMap, "mappings"); + var file = util.getArg(sourceMap, "file", null); + if (version != this._version) { + throw new Error("Unsupported version: " + version); + } + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + sources = sources.map(String).map(util.normalize).map(function(source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source; + }); + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + this._absoluteSources = this._sources.toArray().map(function(s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; + } + BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + return -1; + }; + BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent( + smc._sources.toArray(), + smc.sourceRoot + ); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function(s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping(); + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + destOriginalMappings.push(destMapping); + } + destGeneratedMappings.push(destMapping); + } + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + return smc; + }; + BasicSourceMapConsumer.prototype._version = 3; + Object.defineProperty(BasicSourceMapConsumer.prototype, "sources", { + get: function() { + return this._absoluteSources.slice(); + } + }); + function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; + } + var compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine; + function sortGenerated(array, start) { + let l = array.length; + let n = array.length - start; + if (n <= 1) { + return; + } else if (n == 2) { + let a = array[start]; + let b = array[start + 1]; + if (compareGenerated(a, b) > 0) { + array[start] = b; + array[start + 1] = a; + } + } else if (n < 20) { + for (let i = start; i < l; i++) { + for (let j = i; j > start; j--) { + let a = array[j - 1]; + let b = array[j]; + if (compareGenerated(a, b) <= 0) { + break; + } + array[j - 1] = b; + array[j] = a; + } + } + } else { + quickSort(array, compareGenerated, start); + } + } + BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + let subarrayStart = 0; + while (index < length) { + if (aStr.charAt(index) === ";") { + generatedLine++; + index++; + previousGeneratedColumn = 0; + sortGenerated(generatedMappings, subarrayStart); + subarrayStart = generatedMappings.length; + } else if (aStr.charAt(index) === ",") { + index++; + } else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + if (segment.length === 2) { + throw new Error("Found a source, but no line and column"); + } + if (segment.length === 3) { + throw new Error("Found a source and line, but no column"); + } + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + if (segment.length > 1) { + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + mapping.originalLine += 1; + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + if (segment.length > 4) { + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + generatedMappings.push(mapping); + if (typeof mapping.originalLine === "number") { + let currentSource = mapping.source; + while (originalMappings.length <= currentSource) { + originalMappings.push(null); + } + if (originalMappings[currentSource] === null) { + originalMappings[currentSource] = []; + } + originalMappings[currentSource].push(mapping); + } + } + } + sortGenerated(generatedMappings, subarrayStart); + this.__generatedMappings = generatedMappings; + for (var i = 0; i < originalMappings.length; i++) { + if (originalMappings[i] != null) { + quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource); + } + } + this.__originalMappings = [].concat(...originalMappings); + }; + BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) { + if (aNeedle[aLineName] <= 0) { + throw new TypeError("Line must be greater than or equal to 1, got " + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError("Column must be greater than or equal to 0, got " + aNeedle[aColumnName]); + } + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + mapping.lastGeneratedColumn = Infinity; + } + }; + BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, "line"), + generatedColumn: util.getArg(aArgs, "column") + }; + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + if (index >= 0) { + var mapping = this._generatedMappings[index]; + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, "source", null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, "name", null); + if (name !== null) { + name = this._names.at(name); + } + return { + source, + line: util.getArg(mapping, "originalLine", null), + column: util.getArg(mapping, "originalColumn", null), + name + }; + } + } + return { + source: null, + line: null, + column: null, + name: null + }; + }; + BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function(sc) { + return sc == null; + }); + }; + BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + var url; + if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) { + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]; + } + if ((!url.path || url.path == "/") && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + if (nullOnMissing) { + return null; + } else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, "source"); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + var needle = { + source, + originalLine: util.getArg(aArgs, "line"), + originalColumn: util.getArg(aArgs, "column") + }; + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + if (index >= 0) { + var mapping = this._originalMappings[index]; + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, "generatedLine", null), + column: util.getArg(mapping, "generatedColumn", null), + lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) + }; + } + } + return { + line: null, + column: null, + lastColumn: null + }; + }; + exports2.BasicSourceMapConsumer = BasicSourceMapConsumer; + function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === "string") { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + var version = util.getArg(sourceMap, "version"); + var sections = util.getArg(sourceMap, "sections"); + if (version != this._version) { + throw new Error("Unsupported version: " + version); + } + this._sources = new ArraySet(); + this._names = new ArraySet(); + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function(s) { + if (s.url) { + throw new Error("Support for url field in sections not implemented."); + } + var offset = util.getArg(s, "offset"); + var offsetLine = util.getArg(offset, "line"); + var offsetColumn = util.getArg(offset, "column"); + if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) { + throw new Error("Section offsets must be ordered and non-overlapping."); + } + lastOffset = offset; + return { + generatedOffset: { + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, "map"), aSourceMapURL) + }; + }); + } + IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + IndexedSourceMapConsumer.prototype._version = 3; + Object.defineProperty(IndexedSourceMapConsumer.prototype, "sources", { + get: function() { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } + }); + IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, "line"), + generatedColumn: util.getArg(aArgs, "column") + }; + var sectionIndex = binarySearch.search( + needle, + this._sections, + function(needle2, section2) { + var cmp = needle2.generatedLine - section2.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + return needle2.generatedColumn - section2.generatedOffset.generatedColumn; + } + ); + var section = this._sections[sectionIndex]; + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + return section.consumer.originalPositionFor({ + line: needle.generatedLine - (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), + bias: aArgs.bias + }); + }; + IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function(s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + if (section.consumer._findSourceIndex(util.getArg(aArgs, "source")) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0) + }; + return ret; + } + } + return { + line: null, + column: null + }; + }; + IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + var source = section.consumer._sources.at(mapping.source); + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + var adjustedMapping = { + source, + generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name + }; + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === "number") { + this.__originalMappings.push(adjustedMapping); + } + } + } + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + exports2.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + } +}); + +// node_modules/source-map-js/lib/source-node.js +var require_source_node = __commonJS({ + "node_modules/source-map-js/lib/source-node.js"(exports2) { + var SourceMapGenerator = require_source_map_generator().SourceMapGenerator; + var util = require_util(); + var REGEX_NEWLINE = /(\r?\n)/; + var NEWLINE_CODE = 10; + var isSourceNode = "$$$isSourceNode$$$"; + function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) + this.add(aChunks); + } + SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + var node = new SourceNode(); + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + var newLine = getNextLine() || ""; + return lineContents + newLine; + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? remainingLines[remainingLinesIndex++] : void 0; + } + }; + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + var lastMapping = null; + aSourceMapConsumer.eachMapping(function(mapping) { + if (lastMapping !== null) { + if (lastGeneratedLine < mapping.generatedLine) { + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + } else { + var nextLine = remainingLines[remainingLinesIndex] || ""; + var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + lastMapping = mapping; + return; + } + } + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ""; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + addMappingWithCode(lastMapping, shiftNextLine()); + } + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + aSourceMapConsumer.sources.forEach(function(sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + return node; + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === void 0) { + node.add(code); + } else { + var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source; + node.add(new SourceNode( + mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name + )); + } + } + }; + SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function(chunk) { + this.add(chunk); + }, this); + } else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length - 1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } else { + if (chunk !== "") { + aFn(chunk, { + source: this.source, + line: this.line, + column: this.column, + name: this.name + }); + } + } + } + }; + SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len - 1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; + }; + SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } else if (typeof lastChild === "string") { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } else { + this.children.push("".replace(aPattern, aReplacement)); + } + return this; + }; + SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function(chunk) { + str += chunk; + }); + return str; + }; + SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function(chunk, original) { + generated.code += chunk; + if (original.source !== null && original.line !== null && original.column !== null) { + if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function(sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + return { code: generated.code, map }; + }; + exports2.SourceNode = SourceNode; + } +}); + +// node_modules/source-map-js/source-map.js +var require_source_map = __commonJS({ + "node_modules/source-map-js/source-map.js"(exports2) { + exports2.SourceMapGenerator = require_source_map_generator().SourceMapGenerator; + exports2.SourceMapConsumer = require_source_map_consumer().SourceMapConsumer; + exports2.SourceNode = require_source_node().SourceNode; + } +}); + +// node_modules/nanoid/non-secure/index.cjs +var require_non_secure = __commonJS({ + "node_modules/nanoid/non-secure/index.cjs"(exports2, module2) { + var urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"; + var customAlphabet = (alphabet, defaultSize = 21) => { + return (size = defaultSize) => { + let id = ""; + let i = size; + while (i--) { + id += alphabet[Math.random() * alphabet.length | 0]; + } + return id; + }; + }; + var nanoid = (size = 21) => { + let id = ""; + let i = size; + while (i--) { + id += urlAlphabet[Math.random() * 64 | 0]; + } + return id; + }; + module2.exports = { nanoid, customAlphabet }; + } +}); + +// node_modules/postcss/lib/previous-map.js +var require_previous_map = __commonJS({ + "node_modules/postcss/lib/previous-map.js"(exports2, module2) { + "use strict"; + var { SourceMapConsumer, SourceMapGenerator } = require_source_map(); + var { existsSync, readFileSync } = require("fs"); + var { dirname, join } = require("path"); + function fromBase64(str) { + if (Buffer) { + return Buffer.from(str, "base64").toString(); + } else { + return window.atob(str); + } + } + var PreviousMap = class { + constructor(css, opts) { + if (opts.map === false) + return; + this.loadAnnotation(css); + this.inline = this.startWith(this.annotation, "data:"); + let prev = opts.map ? opts.map.prev : void 0; + let text = this.loadMap(opts.from, prev); + if (!this.mapFile && opts.from) { + this.mapFile = opts.from; + } + if (this.mapFile) + this.root = dirname(this.mapFile); + if (text) + this.text = text; + } + consumer() { + if (!this.consumerCache) { + this.consumerCache = new SourceMapConsumer(this.text); + } + return this.consumerCache; + } + withContent() { + return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0); + } + startWith(string, start) { + if (!string) + return false; + return string.substr(0, start.length) === start; + } + getAnnotationURL(sourceMapString) { + return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, "").trim(); + } + loadAnnotation(css) { + let comments = css.match(/\/\*\s*# sourceMappingURL=/gm); + if (!comments) + return; + let start = css.lastIndexOf(comments.pop()); + let end = css.indexOf("*/", start); + if (start > -1 && end > -1) { + this.annotation = this.getAnnotationURL(css.substring(start, end)); + } + } + decodeInline(text) { + let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/; + let baseUri = /^data:application\/json;base64,/; + let charsetUri = /^data:application\/json;charset=utf-?8,/; + let uri = /^data:application\/json,/; + if (charsetUri.test(text) || uri.test(text)) { + return decodeURIComponent(text.substr(RegExp.lastMatch.length)); + } + if (baseCharsetUri.test(text) || baseUri.test(text)) { + return fromBase64(text.substr(RegExp.lastMatch.length)); + } + let encoding = text.match(/data:application\/json;([^,]+),/)[1]; + throw new Error("Unsupported source map encoding " + encoding); + } + loadFile(path) { + this.root = dirname(path); + if (existsSync(path)) { + this.mapFile = path; + return readFileSync(path, "utf-8").toString().trim(); + } + } + loadMap(file, prev) { + if (prev === false) + return false; + if (prev) { + if (typeof prev === "string") { + return prev; + } else if (typeof prev === "function") { + let prevPath = prev(file); + if (prevPath) { + let map = this.loadFile(prevPath); + if (!map) { + throw new Error( + "Unable to load previous source map: " + prevPath.toString() + ); + } + return map; + } + } else if (prev instanceof SourceMapConsumer) { + return SourceMapGenerator.fromSourceMap(prev).toString(); + } else if (prev instanceof SourceMapGenerator) { + return prev.toString(); + } else if (this.isMap(prev)) { + return JSON.stringify(prev); + } else { + throw new Error( + "Unsupported previous source map format: " + prev.toString() + ); + } + } else if (this.inline) { + return this.decodeInline(this.annotation); + } else if (this.annotation) { + let map = this.annotation; + if (file) + map = join(dirname(file), map); + return this.loadFile(map); + } + } + isMap(map) { + if (typeof map !== "object") + return false; + return typeof map.mappings === "string" || typeof map._mappings === "string" || Array.isArray(map.sections); + } + }; + module2.exports = PreviousMap; + PreviousMap.default = PreviousMap; + } +}); + +// node_modules/postcss/lib/input.js +var require_input = __commonJS({ + "node_modules/postcss/lib/input.js"(exports2, module2) { + "use strict"; + var { SourceMapConsumer, SourceMapGenerator } = require_source_map(); + var { fileURLToPath, pathToFileURL } = require("url"); + var { resolve, isAbsolute } = require("path"); + var { nanoid } = require_non_secure(); + var terminalHighlight = require_terminal_highlight(); + var CssSyntaxError = require_css_syntax_error(); + var PreviousMap = require_previous_map(); + var fromOffsetCache = Symbol("fromOffsetCache"); + var sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator); + var pathAvailable = Boolean(resolve && isAbsolute); + var Input = class { + constructor(css, opts = {}) { + if (css === null || typeof css === "undefined" || typeof css === "object" && !css.toString) { + throw new Error(`PostCSS received ${css} instead of CSS string`); + } + this.css = css.toString(); + if (this.css[0] === "\uFEFF" || this.css[0] === "\uFFFE") { + this.hasBOM = true; + this.css = this.css.slice(1); + } else { + this.hasBOM = false; + } + if (opts.from) { + if (!pathAvailable || /^\w+:\/\//.test(opts.from) || isAbsolute(opts.from)) { + this.file = opts.from; + } else { + this.file = resolve(opts.from); + } + } + if (pathAvailable && sourceMapAvailable) { + let map = new PreviousMap(this.css, opts); + if (map.text) { + this.map = map; + let file = map.consumer().file; + if (!this.file && file) + this.file = this.mapResolve(file); + } + } + if (!this.file) { + this.id = ""; + } + if (this.map) + this.map.file = this.from; + } + fromOffset(offset) { + let lastLine, lineToIndex; + if (!this[fromOffsetCache]) { + let lines = this.css.split("\n"); + lineToIndex = new Array(lines.length); + let prevIndex = 0; + for (let i = 0, l = lines.length; i < l; i++) { + lineToIndex[i] = prevIndex; + prevIndex += lines[i].length + 1; + } + this[fromOffsetCache] = lineToIndex; + } else { + lineToIndex = this[fromOffsetCache]; + } + lastLine = lineToIndex[lineToIndex.length - 1]; + let min = 0; + if (offset >= lastLine) { + min = lineToIndex.length - 1; + } else { + let max = lineToIndex.length - 2; + let mid; + while (min < max) { + mid = min + (max - min >> 1); + if (offset < lineToIndex[mid]) { + max = mid - 1; + } else if (offset >= lineToIndex[mid + 1]) { + min = mid + 1; + } else { + min = mid; + break; + } + } + } + return { + line: min + 1, + col: offset - lineToIndex[min] + 1 + }; + } + error(message, line, column, opts = {}) { + let result, endLine, endColumn; + if (line && typeof line === "object") { + let start = line; + let end = column; + if (typeof start.offset === "number") { + let pos = this.fromOffset(start.offset); + line = pos.line; + column = pos.col; + } else { + line = start.line; + column = start.column; + } + if (typeof end.offset === "number") { + let pos = this.fromOffset(end.offset); + endLine = pos.line; + endColumn = pos.col; + } else { + endLine = end.line; + endColumn = end.column; + } + } else if (!column) { + let pos = this.fromOffset(line); + line = pos.line; + column = pos.col; + } + let origin = this.origin(line, column, endLine, endColumn); + if (origin) { + result = new CssSyntaxError( + message, + origin.endLine === void 0 ? origin.line : { line: origin.line, column: origin.column }, + origin.endLine === void 0 ? origin.column : { line: origin.endLine, column: origin.endColumn }, + origin.source, + origin.file, + opts.plugin + ); + } else { + result = new CssSyntaxError( + message, + endLine === void 0 ? line : { line, column }, + endLine === void 0 ? column : { line: endLine, column: endColumn }, + this.css, + this.file, + opts.plugin + ); + } + result.input = { line, column, endLine, endColumn, source: this.css }; + if (this.file) { + if (pathToFileURL) { + result.input.url = pathToFileURL(this.file).toString(); + } + result.input.file = this.file; + } + return result; + } + origin(line, column, endLine, endColumn) { + if (!this.map) + return false; + let consumer = this.map.consumer(); + let from = consumer.originalPositionFor({ line, column }); + if (!from.source) + return false; + let to; + if (typeof endLine === "number") { + to = consumer.originalPositionFor({ line: endLine, column: endColumn }); + } + let fromUrl; + if (isAbsolute(from.source)) { + fromUrl = pathToFileURL(from.source); + } else { + fromUrl = new URL( + from.source, + this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile) + ); + } + let result = { + url: fromUrl.toString(), + line: from.line, + column: from.column, + endLine: to && to.line, + endColumn: to && to.column + }; + if (fromUrl.protocol === "file:") { + if (fileURLToPath) { + result.file = fileURLToPath(fromUrl); + } else { + throw new Error(`file: protocol is not available in this PostCSS build`); + } + } + let source = consumer.sourceContentFor(from.source); + if (source) + result.source = source; + return result; + } + mapResolve(file) { + if (/^\w+:\/\//.test(file)) { + return file; + } + return resolve(this.map.consumer().sourceRoot || this.map.root || ".", file); + } + get from() { + return this.file || this.id; + } + toJSON() { + let json = {}; + for (let name of ["hasBOM", "css", "file", "id"]) { + if (this[name] != null) { + json[name] = this[name]; + } + } + if (this.map) { + json.map = { ...this.map }; + if (json.map.consumerCache) { + json.map.consumerCache = void 0; + } + } + return json; + } + }; + module2.exports = Input; + Input.default = Input; + if (terminalHighlight && terminalHighlight.registerInput) { + terminalHighlight.registerInput(Input); + } + } +}); + +// node_modules/postcss/lib/map-generator.js +var require_map_generator = __commonJS({ + "node_modules/postcss/lib/map-generator.js"(exports2, module2) { + "use strict"; + var { SourceMapConsumer, SourceMapGenerator } = require_source_map(); + var { dirname, resolve, relative, sep } = require("path"); + var { pathToFileURL } = require("url"); + var Input = require_input(); + var sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator); + var pathAvailable = Boolean(dirname && resolve && relative && sep); + var MapGenerator = class { + constructor(stringify, root, opts, cssString) { + this.stringify = stringify; + this.mapOpts = opts.map || {}; + this.root = root; + this.opts = opts; + this.css = cssString; + this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute; + } + isMap() { + if (typeof this.opts.map !== "undefined") { + return !!this.opts.map; + } + return this.previous().length > 0; + } + previous() { + if (!this.previousMaps) { + this.previousMaps = []; + if (this.root) { + this.root.walk((node) => { + if (node.source && node.source.input.map) { + let map = node.source.input.map; + if (!this.previousMaps.includes(map)) { + this.previousMaps.push(map); + } + } + }); + } else { + let input = new Input(this.css, this.opts); + if (input.map) + this.previousMaps.push(input.map); + } + } + return this.previousMaps; + } + isInline() { + if (typeof this.mapOpts.inline !== "undefined") { + return this.mapOpts.inline; + } + let annotation = this.mapOpts.annotation; + if (typeof annotation !== "undefined" && annotation !== true) { + return false; + } + if (this.previous().length) { + return this.previous().some((i) => i.inline); + } + return true; + } + isSourcesContent() { + if (typeof this.mapOpts.sourcesContent !== "undefined") { + return this.mapOpts.sourcesContent; + } + if (this.previous().length) { + return this.previous().some((i) => i.withContent()); + } + return true; + } + clearAnnotation() { + if (this.mapOpts.annotation === false) + return; + if (this.root) { + let node; + for (let i = this.root.nodes.length - 1; i >= 0; i--) { + node = this.root.nodes[i]; + if (node.type !== "comment") + continue; + if (node.text.indexOf("# sourceMappingURL=") === 0) { + this.root.removeChild(i); + } + } + } else if (this.css) { + this.css = this.css.replace(/(\n)?\/\*#[\S\s]*?\*\/$/gm, ""); + } + } + setSourcesContent() { + let already = {}; + if (this.root) { + this.root.walk((node) => { + if (node.source) { + let from = node.source.input.from; + if (from && !already[from]) { + already[from] = true; + let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from)); + this.map.setSourceContent(fromUrl, node.source.input.css); + } + } + }); + } else if (this.css) { + let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : ""; + this.map.setSourceContent(from, this.css); + } + } + applyPrevMaps() { + for (let prev of this.previous()) { + let from = this.toUrl(this.path(prev.file)); + let root = prev.root || dirname(prev.file); + let map; + if (this.mapOpts.sourcesContent === false) { + map = new SourceMapConsumer(prev.text); + if (map.sourcesContent) { + map.sourcesContent = map.sourcesContent.map(() => null); + } + } else { + map = prev.consumer(); + } + this.map.applySourceMap(map, from, this.toUrl(this.path(root))); + } + } + isAnnotation() { + if (this.isInline()) { + return true; + } + if (typeof this.mapOpts.annotation !== "undefined") { + return this.mapOpts.annotation; + } + if (this.previous().length) { + return this.previous().some((i) => i.annotation); + } + return true; + } + toBase64(str) { + if (Buffer) { + return Buffer.from(str).toString("base64"); + } else { + return window.btoa(unescape(encodeURIComponent(str))); + } + } + addAnnotation() { + let content; + if (this.isInline()) { + content = "data:application/json;base64," + this.toBase64(this.map.toString()); + } else if (typeof this.mapOpts.annotation === "string") { + content = this.mapOpts.annotation; + } else if (typeof this.mapOpts.annotation === "function") { + content = this.mapOpts.annotation(this.opts.to, this.root); + } else { + content = this.outputFile() + ".map"; + } + let eol = "\n"; + if (this.css.includes("\r\n")) + eol = "\r\n"; + this.css += eol + "/*# sourceMappingURL=" + content + " */"; + } + outputFile() { + if (this.opts.to) { + return this.path(this.opts.to); + } else if (this.opts.from) { + return this.path(this.opts.from); + } else { + return "to.css"; + } + } + generateMap() { + if (this.root) { + this.generateString(); + } else if (this.previous().length === 1) { + let prev = this.previous()[0].consumer(); + prev.file = this.outputFile(); + this.map = SourceMapGenerator.fromSourceMap(prev); + } else { + this.map = new SourceMapGenerator({ file: this.outputFile() }); + this.map.addMapping({ + source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : "", + generated: { line: 1, column: 0 }, + original: { line: 1, column: 0 } + }); + } + if (this.isSourcesContent()) + this.setSourcesContent(); + if (this.root && this.previous().length > 0) + this.applyPrevMaps(); + if (this.isAnnotation()) + this.addAnnotation(); + if (this.isInline()) { + return [this.css]; + } else { + return [this.css, this.map]; + } + } + path(file) { + if (file.indexOf("<") === 0) + return file; + if (/^\w+:\/\//.test(file)) + return file; + if (this.mapOpts.absolute) + return file; + let from = this.opts.to ? dirname(this.opts.to) : "."; + if (typeof this.mapOpts.annotation === "string") { + from = dirname(resolve(from, this.mapOpts.annotation)); + } + file = relative(from, file); + return file; + } + toUrl(path) { + if (sep === "\\") { + path = path.replace(/\\/g, "/"); + } + return encodeURI(path).replace(/[#?]/g, encodeURIComponent); + } + toFileUrl(path) { + if (pathToFileURL) { + return pathToFileURL(path).toString(); + } else { + throw new Error( + "`map.absolute` option is not available in this PostCSS build" + ); + } + } + sourcePath(node) { + if (this.mapOpts.from) { + return this.toUrl(this.mapOpts.from); + } else if (this.usesFileUrls) { + return this.toFileUrl(node.source.input.from); + } else { + return this.toUrl(this.path(node.source.input.from)); + } + } + generateString() { + this.css = ""; + this.map = new SourceMapGenerator({ file: this.outputFile() }); + let line = 1; + let column = 1; + let noSource = ""; + let mapping = { + source: "", + generated: { line: 0, column: 0 }, + original: { line: 0, column: 0 } + }; + let lines, last; + this.stringify(this.root, (str, node, type) => { + this.css += str; + if (node && type !== "end") { + mapping.generated.line = line; + mapping.generated.column = column - 1; + if (node.source && node.source.start) { + mapping.source = this.sourcePath(node); + mapping.original.line = node.source.start.line; + mapping.original.column = node.source.start.column - 1; + this.map.addMapping(mapping); + } else { + mapping.source = noSource; + mapping.original.line = 1; + mapping.original.column = 0; + this.map.addMapping(mapping); + } + } + lines = str.match(/\n/g); + if (lines) { + line += lines.length; + last = str.lastIndexOf("\n"); + column = str.length - last; + } else { + column += str.length; + } + if (node && type !== "start") { + let p = node.parent || { raws: {} }; + let childless = node.type === "decl" || node.type === "atrule" && !node.nodes; + if (!childless || node !== p.last || p.raws.semicolon) { + if (node.source && node.source.end) { + mapping.source = this.sourcePath(node); + mapping.original.line = node.source.end.line; + mapping.original.column = node.source.end.column - 1; + mapping.generated.line = line; + mapping.generated.column = column - 2; + this.map.addMapping(mapping); + } else { + mapping.source = noSource; + mapping.original.line = 1; + mapping.original.column = 0; + mapping.generated.line = line; + mapping.generated.column = column - 1; + this.map.addMapping(mapping); + } + } + } + }); + } + generate() { + this.clearAnnotation(); + if (pathAvailable && sourceMapAvailable && this.isMap()) { + return this.generateMap(); + } else { + let result = ""; + this.stringify(this.root, (i) => { + result += i; + }); + return [result]; + } + } + }; + module2.exports = MapGenerator; + } +}); + +// node_modules/postcss/lib/comment.js +var require_comment = __commonJS({ + "node_modules/postcss/lib/comment.js"(exports2, module2) { + "use strict"; + var Node = require_node(); + var Comment = class extends Node { + constructor(defaults) { + super(defaults); + this.type = "comment"; + } + }; + module2.exports = Comment; + Comment.default = Comment; + } +}); + +// node_modules/postcss/lib/container.js +var require_container = __commonJS({ + "node_modules/postcss/lib/container.js"(exports2, module2) { + "use strict"; + var { isClean, my } = require_symbols(); + var Declaration = require_declaration(); + var Comment = require_comment(); + var Node = require_node(); + var parse; + var Rule; + var AtRule; + var Root; + function cleanSource(nodes) { + return nodes.map((i) => { + if (i.nodes) + i.nodes = cleanSource(i.nodes); + delete i.source; + return i; + }); + } + function markDirtyUp(node) { + node[isClean] = false; + if (node.proxyOf.nodes) { + for (let i of node.proxyOf.nodes) { + markDirtyUp(i); + } + } + } + var Container = class extends Node { + push(child) { + child.parent = this; + this.proxyOf.nodes.push(child); + return this; + } + each(callback) { + if (!this.proxyOf.nodes) + return void 0; + let iterator = this.getIterator(); + let index, result; + while (this.indexes[iterator] < this.proxyOf.nodes.length) { + index = this.indexes[iterator]; + result = callback(this.proxyOf.nodes[index], index); + if (result === false) + break; + this.indexes[iterator] += 1; + } + delete this.indexes[iterator]; + return result; + } + walk(callback) { + return this.each((child, i) => { + let result; + try { + result = callback(child, i); + } catch (e) { + throw child.addToError(e); + } + if (result !== false && child.walk) { + result = child.walk(callback); + } + return result; + }); + } + walkDecls(prop, callback) { + if (!callback) { + callback = prop; + return this.walk((child, i) => { + if (child.type === "decl") { + return callback(child, i); + } + }); + } + if (prop instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === "decl" && prop.test(child.prop)) { + return callback(child, i); + } + }); + } + return this.walk((child, i) => { + if (child.type === "decl" && child.prop === prop) { + return callback(child, i); + } + }); + } + walkRules(selector, callback) { + if (!callback) { + callback = selector; + return this.walk((child, i) => { + if (child.type === "rule") { + return callback(child, i); + } + }); + } + if (selector instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === "rule" && selector.test(child.selector)) { + return callback(child, i); + } + }); + } + return this.walk((child, i) => { + if (child.type === "rule" && child.selector === selector) { + return callback(child, i); + } + }); + } + walkAtRules(name, callback) { + if (!callback) { + callback = name; + return this.walk((child, i) => { + if (child.type === "atrule") { + return callback(child, i); + } + }); + } + if (name instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === "atrule" && name.test(child.name)) { + return callback(child, i); + } + }); + } + return this.walk((child, i) => { + if (child.type === "atrule" && child.name === name) { + return callback(child, i); + } + }); + } + walkComments(callback) { + return this.walk((child, i) => { + if (child.type === "comment") { + return callback(child, i); + } + }); + } + append(...children) { + for (let child of children) { + let nodes = this.normalize(child, this.last); + for (let node of nodes) + this.proxyOf.nodes.push(node); + } + this.markDirty(); + return this; + } + prepend(...children) { + children = children.reverse(); + for (let child of children) { + let nodes = this.normalize(child, this.first, "prepend").reverse(); + for (let node of nodes) + this.proxyOf.nodes.unshift(node); + for (let id in this.indexes) { + this.indexes[id] = this.indexes[id] + nodes.length; + } + } + this.markDirty(); + return this; + } + cleanRaws(keepBetween) { + super.cleanRaws(keepBetween); + if (this.nodes) { + for (let node of this.nodes) + node.cleanRaws(keepBetween); + } + } + insertBefore(exist, add) { + let existIndex = this.index(exist); + let type = existIndex === 0 ? "prepend" : false; + let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse(); + existIndex = this.index(exist); + for (let node of nodes) + this.proxyOf.nodes.splice(existIndex, 0, node); + let index; + for (let id in this.indexes) { + index = this.indexes[id]; + if (existIndex <= index) { + this.indexes[id] = index + nodes.length; + } + } + this.markDirty(); + return this; + } + insertAfter(exist, add) { + let existIndex = this.index(exist); + let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse(); + existIndex = this.index(exist); + for (let node of nodes) + this.proxyOf.nodes.splice(existIndex + 1, 0, node); + let index; + for (let id in this.indexes) { + index = this.indexes[id]; + if (existIndex < index) { + this.indexes[id] = index + nodes.length; + } + } + this.markDirty(); + return this; + } + removeChild(child) { + child = this.index(child); + this.proxyOf.nodes[child].parent = void 0; + this.proxyOf.nodes.splice(child, 1); + let index; + for (let id in this.indexes) { + index = this.indexes[id]; + if (index >= child) { + this.indexes[id] = index - 1; + } + } + this.markDirty(); + return this; + } + removeAll() { + for (let node of this.proxyOf.nodes) + node.parent = void 0; + this.proxyOf.nodes = []; + this.markDirty(); + return this; + } + replaceValues(pattern, opts, callback) { + if (!callback) { + callback = opts; + opts = {}; + } + this.walkDecls((decl) => { + if (opts.props && !opts.props.includes(decl.prop)) + return; + if (opts.fast && !decl.value.includes(opts.fast)) + return; + decl.value = decl.value.replace(pattern, callback); + }); + this.markDirty(); + return this; + } + every(condition) { + return this.nodes.every(condition); + } + some(condition) { + return this.nodes.some(condition); + } + index(child) { + if (typeof child === "number") + return child; + if (child.proxyOf) + child = child.proxyOf; + return this.proxyOf.nodes.indexOf(child); + } + get first() { + if (!this.proxyOf.nodes) + return void 0; + return this.proxyOf.nodes[0]; + } + get last() { + if (!this.proxyOf.nodes) + return void 0; + return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]; + } + normalize(nodes, sample) { + if (typeof nodes === "string") { + nodes = cleanSource(parse(nodes).nodes); + } else if (Array.isArray(nodes)) { + nodes = nodes.slice(0); + for (let i of nodes) { + if (i.parent) + i.parent.removeChild(i, "ignore"); + } + } else if (nodes.type === "root" && this.type !== "document") { + nodes = nodes.nodes.slice(0); + for (let i of nodes) { + if (i.parent) + i.parent.removeChild(i, "ignore"); + } + } else if (nodes.type) { + nodes = [nodes]; + } else if (nodes.prop) { + if (typeof nodes.value === "undefined") { + throw new Error("Value field is missed in node creation"); + } else if (typeof nodes.value !== "string") { + nodes.value = String(nodes.value); + } + nodes = [new Declaration(nodes)]; + } else if (nodes.selector) { + nodes = [new Rule(nodes)]; + } else if (nodes.name) { + nodes = [new AtRule(nodes)]; + } else if (nodes.text) { + nodes = [new Comment(nodes)]; + } else { + throw new Error("Unknown node type in node creation"); + } + let processed = nodes.map((i) => { + if (!i[my]) + Container.rebuild(i); + i = i.proxyOf; + if (i.parent) + i.parent.removeChild(i); + if (i[isClean]) + markDirtyUp(i); + if (typeof i.raws.before === "undefined") { + if (sample && typeof sample.raws.before !== "undefined") { + i.raws.before = sample.raws.before.replace(/\S/g, ""); + } + } + i.parent = this.proxyOf; + return i; + }); + return processed; + } + getProxyProcessor() { + return { + set(node, prop, value) { + if (node[prop] === value) + return true; + node[prop] = value; + if (prop === "name" || prop === "params" || prop === "selector") { + node.markDirty(); + } + return true; + }, + get(node, prop) { + if (prop === "proxyOf") { + return node; + } else if (!node[prop]) { + return node[prop]; + } else if (prop === "each" || typeof prop === "string" && prop.startsWith("walk")) { + return (...args) => { + return node[prop]( + ...args.map((i) => { + if (typeof i === "function") { + return (child, index) => i(child.toProxy(), index); + } else { + return i; + } + }) + ); + }; + } else if (prop === "every" || prop === "some") { + return (cb) => { + return node[prop]( + (child, ...other) => cb(child.toProxy(), ...other) + ); + }; + } else if (prop === "root") { + return () => node.root().toProxy(); + } else if (prop === "nodes") { + return node.nodes.map((i) => i.toProxy()); + } else if (prop === "first" || prop === "last") { + return node[prop].toProxy(); + } else { + return node[prop]; + } + } + }; + } + getIterator() { + if (!this.lastEach) + this.lastEach = 0; + if (!this.indexes) + this.indexes = {}; + this.lastEach += 1; + let iterator = this.lastEach; + this.indexes[iterator] = 0; + return iterator; + } + }; + Container.registerParse = (dependant) => { + parse = dependant; + }; + Container.registerRule = (dependant) => { + Rule = dependant; + }; + Container.registerAtRule = (dependant) => { + AtRule = dependant; + }; + Container.registerRoot = (dependant) => { + Root = dependant; + }; + module2.exports = Container; + Container.default = Container; + Container.rebuild = (node) => { + if (node.type === "atrule") { + Object.setPrototypeOf(node, AtRule.prototype); + } else if (node.type === "rule") { + Object.setPrototypeOf(node, Rule.prototype); + } else if (node.type === "decl") { + Object.setPrototypeOf(node, Declaration.prototype); + } else if (node.type === "comment") { + Object.setPrototypeOf(node, Comment.prototype); + } else if (node.type === "root") { + Object.setPrototypeOf(node, Root.prototype); + } + node[my] = true; + if (node.nodes) { + node.nodes.forEach((child) => { + Container.rebuild(child); + }); + } + }; + } +}); + +// node_modules/postcss/lib/document.js +var require_document = __commonJS({ + "node_modules/postcss/lib/document.js"(exports2, module2) { + "use strict"; + var Container = require_container(); + var LazyResult; + var Processor; + var Document = class extends Container { + constructor(defaults) { + super({ type: "document", ...defaults }); + if (!this.nodes) { + this.nodes = []; + } + } + toResult(opts = {}) { + let lazy = new LazyResult(new Processor(), this, opts); + return lazy.stringify(); + } + }; + Document.registerLazyResult = (dependant) => { + LazyResult = dependant; + }; + Document.registerProcessor = (dependant) => { + Processor = dependant; + }; + module2.exports = Document; + Document.default = Document; + } +}); + +// node_modules/postcss/lib/warn-once.js +var require_warn_once = __commonJS({ + "node_modules/postcss/lib/warn-once.js"(exports2, module2) { + "use strict"; + var printed = {}; + module2.exports = function warnOnce(message) { + if (printed[message]) + return; + printed[message] = true; + if (typeof console !== "undefined" && console.warn) { + console.warn(message); + } + }; + } +}); + +// node_modules/postcss/lib/warning.js +var require_warning = __commonJS({ + "node_modules/postcss/lib/warning.js"(exports2, module2) { + "use strict"; + var Warning = class { + constructor(text, opts = {}) { + this.type = "warning"; + this.text = text; + if (opts.node && opts.node.source) { + let range = opts.node.rangeBy(opts); + this.line = range.start.line; + this.column = range.start.column; + this.endLine = range.end.line; + this.endColumn = range.end.column; + } + for (let opt in opts) + this[opt] = opts[opt]; + } + toString() { + if (this.node) { + return this.node.error(this.text, { + plugin: this.plugin, + index: this.index, + word: this.word + }).message; + } + if (this.plugin) { + return this.plugin + ": " + this.text; + } + return this.text; + } + }; + module2.exports = Warning; + Warning.default = Warning; + } +}); + +// node_modules/postcss/lib/result.js +var require_result = __commonJS({ + "node_modules/postcss/lib/result.js"(exports2, module2) { + "use strict"; + var Warning = require_warning(); + var Result = class { + constructor(processor, root, opts) { + this.processor = processor; + this.messages = []; + this.root = root; + this.opts = opts; + this.css = void 0; + this.map = void 0; + } + toString() { + return this.css; + } + warn(text, opts = {}) { + if (!opts.plugin) { + if (this.lastPlugin && this.lastPlugin.postcssPlugin) { + opts.plugin = this.lastPlugin.postcssPlugin; + } + } + let warning = new Warning(text, opts); + this.messages.push(warning); + return warning; + } + warnings() { + return this.messages.filter((i) => i.type === "warning"); + } + get content() { + return this.css; + } + }; + module2.exports = Result; + Result.default = Result; + } +}); + +// node_modules/postcss/lib/at-rule.js +var require_at_rule = __commonJS({ + "node_modules/postcss/lib/at-rule.js"(exports2, module2) { + "use strict"; + var Container = require_container(); + var AtRule = class extends Container { + constructor(defaults) { + super(defaults); + this.type = "atrule"; + } + append(...children) { + if (!this.proxyOf.nodes) + this.nodes = []; + return super.append(...children); + } + prepend(...children) { + if (!this.proxyOf.nodes) + this.nodes = []; + return super.prepend(...children); + } + }; + module2.exports = AtRule; + AtRule.default = AtRule; + Container.registerAtRule(AtRule); + } +}); + +// node_modules/postcss/lib/root.js +var require_root = __commonJS({ + "node_modules/postcss/lib/root.js"(exports2, module2) { + "use strict"; + var Container = require_container(); + var LazyResult; + var Processor; + var Root = class extends Container { + constructor(defaults) { + super(defaults); + this.type = "root"; + if (!this.nodes) + this.nodes = []; + } + removeChild(child, ignore) { + let index = this.index(child); + if (!ignore && index === 0 && this.nodes.length > 1) { + this.nodes[1].raws.before = this.nodes[index].raws.before; + } + return super.removeChild(child); + } + normalize(child, sample, type) { + let nodes = super.normalize(child); + if (sample) { + if (type === "prepend") { + if (this.nodes.length > 1) { + sample.raws.before = this.nodes[1].raws.before; + } else { + delete sample.raws.before; + } + } else if (this.first !== sample) { + for (let node of nodes) { + node.raws.before = sample.raws.before; + } + } + } + return nodes; + } + toResult(opts = {}) { + let lazy = new LazyResult(new Processor(), this, opts); + return lazy.stringify(); + } + }; + Root.registerLazyResult = (dependant) => { + LazyResult = dependant; + }; + Root.registerProcessor = (dependant) => { + Processor = dependant; + }; + module2.exports = Root; + Root.default = Root; + Container.registerRoot(Root); + } +}); + +// node_modules/postcss/lib/list.js +var require_list = __commonJS({ + "node_modules/postcss/lib/list.js"(exports2, module2) { + "use strict"; + var list = { + split(string, separators, last) { + let array = []; + let current = ""; + let split = false; + let func = 0; + let inQuote = false; + let prevQuote = ""; + let escape = false; + for (let letter of string) { + if (escape) { + escape = false; + } else if (letter === "\\") { + escape = true; + } else if (inQuote) { + if (letter === prevQuote) { + inQuote = false; + } + } else if (letter === '"' || letter === "'") { + inQuote = true; + prevQuote = letter; + } else if (letter === "(") { + func += 1; + } else if (letter === ")") { + if (func > 0) + func -= 1; + } else if (func === 0) { + if (separators.includes(letter)) + split = true; + } + if (split) { + if (current !== "") + array.push(current.trim()); + current = ""; + split = false; + } else { + current += letter; + } + } + if (last || current !== "") + array.push(current.trim()); + return array; + }, + space(string) { + let spaces = [" ", "\n", " "]; + return list.split(string, spaces); + }, + comma(string) { + return list.split(string, [","], true); + } + }; + module2.exports = list; + list.default = list; + } +}); + +// node_modules/postcss/lib/rule.js +var require_rule = __commonJS({ + "node_modules/postcss/lib/rule.js"(exports2, module2) { + "use strict"; + var Container = require_container(); + var list = require_list(); + var Rule = class extends Container { + constructor(defaults) { + super(defaults); + this.type = "rule"; + if (!this.nodes) + this.nodes = []; + } + get selectors() { + return list.comma(this.selector); + } + set selectors(values) { + let match = this.selector ? this.selector.match(/,\s*/) : null; + let sep = match ? match[0] : "," + this.raw("between", "beforeOpen"); + this.selector = values.join(sep); + } + }; + module2.exports = Rule; + Rule.default = Rule; + Container.registerRule(Rule); + } +}); + +// node_modules/postcss/lib/parser.js +var require_parser = __commonJS({ + "node_modules/postcss/lib/parser.js"(exports2, module2) { + "use strict"; + var Declaration = require_declaration(); + var tokenizer = require_tokenize(); + var Comment = require_comment(); + var AtRule = require_at_rule(); + var Root = require_root(); + var Rule = require_rule(); + var SAFE_COMMENT_NEIGHBOR = { + empty: true, + space: true + }; + function findLastWithPosition(tokens) { + for (let i = tokens.length - 1; i >= 0; i--) { + let token = tokens[i]; + let pos = token[3] || token[2]; + if (pos) + return pos; + } + } + var Parser = class { + constructor(input) { + this.input = input; + this.root = new Root(); + this.current = this.root; + this.spaces = ""; + this.semicolon = false; + this.customProperty = false; + this.createTokenizer(); + this.root.source = { input, start: { offset: 0, line: 1, column: 1 } }; + } + createTokenizer() { + this.tokenizer = tokenizer(this.input); + } + parse() { + let token; + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken(); + switch (token[0]) { + case "space": + this.spaces += token[1]; + break; + case ";": + this.freeSemicolon(token); + break; + case "}": + this.end(token); + break; + case "comment": + this.comment(token); + break; + case "at-word": + this.atrule(token); + break; + case "{": + this.emptyRule(token); + break; + default: + this.other(token); + break; + } + } + this.endFile(); + } + comment(token) { + let node = new Comment(); + this.init(node, token[2]); + node.source.end = this.getPosition(token[3] || token[2]); + let text = token[1].slice(2, -2); + if (/^\s*$/.test(text)) { + node.text = ""; + node.raws.left = text; + node.raws.right = ""; + } else { + let match = text.match(/^(\s*)([^]*\S)(\s*)$/); + node.text = match[2]; + node.raws.left = match[1]; + node.raws.right = match[3]; + } + } + emptyRule(token) { + let node = new Rule(); + this.init(node, token[2]); + node.selector = ""; + node.raws.between = ""; + this.current = node; + } + other(start) { + let end = false; + let type = null; + let colon = false; + let bracket = null; + let brackets = []; + let customProperty = start[1].startsWith("--"); + let tokens = []; + let token = start; + while (token) { + type = token[0]; + tokens.push(token); + if (type === "(" || type === "[") { + if (!bracket) + bracket = token; + brackets.push(type === "(" ? ")" : "]"); + } else if (customProperty && colon && type === "{") { + if (!bracket) + bracket = token; + brackets.push("}"); + } else if (brackets.length === 0) { + if (type === ";") { + if (colon) { + this.decl(tokens, customProperty); + return; + } else { + break; + } + } else if (type === "{") { + this.rule(tokens); + return; + } else if (type === "}") { + this.tokenizer.back(tokens.pop()); + end = true; + break; + } else if (type === ":") { + colon = true; + } + } else if (type === brackets[brackets.length - 1]) { + brackets.pop(); + if (brackets.length === 0) + bracket = null; + } + token = this.tokenizer.nextToken(); + } + if (this.tokenizer.endOfFile()) + end = true; + if (brackets.length > 0) + this.unclosedBracket(bracket); + if (end && colon) { + if (!customProperty) { + while (tokens.length) { + token = tokens[tokens.length - 1][0]; + if (token !== "space" && token !== "comment") + break; + this.tokenizer.back(tokens.pop()); + } + } + this.decl(tokens, customProperty); + } else { + this.unknownWord(tokens); + } + } + rule(tokens) { + tokens.pop(); + let node = new Rule(); + this.init(node, tokens[0][2]); + node.raws.between = this.spacesAndCommentsFromEnd(tokens); + this.raw(node, "selector", tokens); + this.current = node; + } + decl(tokens, customProperty) { + let node = new Declaration(); + this.init(node, tokens[0][2]); + let last = tokens[tokens.length - 1]; + if (last[0] === ";") { + this.semicolon = true; + tokens.pop(); + } + node.source.end = this.getPosition( + last[3] || last[2] || findLastWithPosition(tokens) + ); + while (tokens[0][0] !== "word") { + if (tokens.length === 1) + this.unknownWord(tokens); + node.raws.before += tokens.shift()[1]; + } + node.source.start = this.getPosition(tokens[0][2]); + node.prop = ""; + while (tokens.length) { + let type = tokens[0][0]; + if (type === ":" || type === "space" || type === "comment") { + break; + } + node.prop += tokens.shift()[1]; + } + node.raws.between = ""; + let token; + while (tokens.length) { + token = tokens.shift(); + if (token[0] === ":") { + node.raws.between += token[1]; + break; + } else { + if (token[0] === "word" && /\w/.test(token[1])) { + this.unknownWord([token]); + } + node.raws.between += token[1]; + } + } + if (node.prop[0] === "_" || node.prop[0] === "*") { + node.raws.before += node.prop[0]; + node.prop = node.prop.slice(1); + } + let firstSpaces = []; + let next; + while (tokens.length) { + next = tokens[0][0]; + if (next !== "space" && next !== "comment") + break; + firstSpaces.push(tokens.shift()); + } + this.precheckMissedSemicolon(tokens); + for (let i = tokens.length - 1; i >= 0; i--) { + token = tokens[i]; + if (token[1].toLowerCase() === "!important") { + node.important = true; + let string = this.stringFrom(tokens, i); + string = this.spacesFromEnd(tokens) + string; + if (string !== " !important") + node.raws.important = string; + break; + } else if (token[1].toLowerCase() === "important") { + let cache = tokens.slice(0); + let str = ""; + for (let j = i; j > 0; j--) { + let type = cache[j][0]; + if (str.trim().indexOf("!") === 0 && type !== "space") { + break; + } + str = cache.pop()[1] + str; + } + if (str.trim().indexOf("!") === 0) { + node.important = true; + node.raws.important = str; + tokens = cache; + } + } + if (token[0] !== "space" && token[0] !== "comment") { + break; + } + } + let hasWord = tokens.some((i) => i[0] !== "space" && i[0] !== "comment"); + if (hasWord) { + node.raws.between += firstSpaces.map((i) => i[1]).join(""); + firstSpaces = []; + } + this.raw(node, "value", firstSpaces.concat(tokens), customProperty); + if (node.value.includes(":") && !customProperty) { + this.checkMissedSemicolon(tokens); + } + } + atrule(token) { + let node = new AtRule(); + node.name = token[1].slice(1); + if (node.name === "") { + this.unnamedAtrule(node, token); + } + this.init(node, token[2]); + let type; + let prev; + let shift; + let last = false; + let open = false; + let params = []; + let brackets = []; + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken(); + type = token[0]; + if (type === "(" || type === "[") { + brackets.push(type === "(" ? ")" : "]"); + } else if (type === "{" && brackets.length > 0) { + brackets.push("}"); + } else if (type === brackets[brackets.length - 1]) { + brackets.pop(); + } + if (brackets.length === 0) { + if (type === ";") { + node.source.end = this.getPosition(token[2]); + this.semicolon = true; + break; + } else if (type === "{") { + open = true; + break; + } else if (type === "}") { + if (params.length > 0) { + shift = params.length - 1; + prev = params[shift]; + while (prev && prev[0] === "space") { + prev = params[--shift]; + } + if (prev) { + node.source.end = this.getPosition(prev[3] || prev[2]); + } + } + this.end(token); + break; + } else { + params.push(token); + } + } else { + params.push(token); + } + if (this.tokenizer.endOfFile()) { + last = true; + break; + } + } + node.raws.between = this.spacesAndCommentsFromEnd(params); + if (params.length) { + node.raws.afterName = this.spacesAndCommentsFromStart(params); + this.raw(node, "params", params); + if (last) { + token = params[params.length - 1]; + node.source.end = this.getPosition(token[3] || token[2]); + this.spaces = node.raws.between; + node.raws.between = ""; + } + } else { + node.raws.afterName = ""; + node.params = ""; + } + if (open) { + node.nodes = []; + this.current = node; + } + } + end(token) { + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon; + } + this.semicolon = false; + this.current.raws.after = (this.current.raws.after || "") + this.spaces; + this.spaces = ""; + if (this.current.parent) { + this.current.source.end = this.getPosition(token[2]); + this.current = this.current.parent; + } else { + this.unexpectedClose(token); + } + } + endFile() { + if (this.current.parent) + this.unclosedBlock(); + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon; + } + this.current.raws.after = (this.current.raws.after || "") + this.spaces; + } + freeSemicolon(token) { + this.spaces += token[1]; + if (this.current.nodes) { + let prev = this.current.nodes[this.current.nodes.length - 1]; + if (prev && prev.type === "rule" && !prev.raws.ownSemicolon) { + prev.raws.ownSemicolon = this.spaces; + this.spaces = ""; + } + } + } + getPosition(offset) { + let pos = this.input.fromOffset(offset); + return { + offset, + line: pos.line, + column: pos.col + }; + } + init(node, offset) { + this.current.push(node); + node.source = { + start: this.getPosition(offset), + input: this.input + }; + node.raws.before = this.spaces; + this.spaces = ""; + if (node.type !== "comment") + this.semicolon = false; + } + raw(node, prop, tokens, customProperty) { + let token, type; + let length = tokens.length; + let value = ""; + let clean = true; + let next, prev; + for (let i = 0; i < length; i += 1) { + token = tokens[i]; + type = token[0]; + if (type === "space" && i === length - 1 && !customProperty) { + clean = false; + } else if (type === "comment") { + prev = tokens[i - 1] ? tokens[i - 1][0] : "empty"; + next = tokens[i + 1] ? tokens[i + 1][0] : "empty"; + if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) { + if (value.slice(-1) === ",") { + clean = false; + } else { + value += token[1]; + } + } else { + clean = false; + } + } else { + value += token[1]; + } + } + if (!clean) { + let raw = tokens.reduce((all, i) => all + i[1], ""); + node.raws[prop] = { value, raw }; + } + node[prop] = value; + } + spacesAndCommentsFromEnd(tokens) { + let lastTokenType; + let spaces = ""; + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0]; + if (lastTokenType !== "space" && lastTokenType !== "comment") + break; + spaces = tokens.pop()[1] + spaces; + } + return spaces; + } + spacesAndCommentsFromStart(tokens) { + let next; + let spaces = ""; + while (tokens.length) { + next = tokens[0][0]; + if (next !== "space" && next !== "comment") + break; + spaces += tokens.shift()[1]; + } + return spaces; + } + spacesFromEnd(tokens) { + let lastTokenType; + let spaces = ""; + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0]; + if (lastTokenType !== "space") + break; + spaces = tokens.pop()[1] + spaces; + } + return spaces; + } + stringFrom(tokens, from) { + let result = ""; + for (let i = from; i < tokens.length; i++) { + result += tokens[i][1]; + } + tokens.splice(from, tokens.length - from); + return result; + } + colon(tokens) { + let brackets = 0; + let token, type, prev; + for (let [i, element] of tokens.entries()) { + token = element; + type = token[0]; + if (type === "(") { + brackets += 1; + } + if (type === ")") { + brackets -= 1; + } + if (brackets === 0 && type === ":") { + if (!prev) { + this.doubleColon(token); + } else if (prev[0] === "word" && prev[1] === "progid") { + continue; + } else { + return i; + } + } + prev = token; + } + return false; + } + unclosedBracket(bracket) { + throw this.input.error( + "Unclosed bracket", + { offset: bracket[2] }, + { offset: bracket[2] + 1 } + ); + } + unknownWord(tokens) { + throw this.input.error( + "Unknown word", + { offset: tokens[0][2] }, + { offset: tokens[0][2] + tokens[0][1].length } + ); + } + unexpectedClose(token) { + throw this.input.error( + "Unexpected }", + { offset: token[2] }, + { offset: token[2] + 1 } + ); + } + unclosedBlock() { + let pos = this.current.source.start; + throw this.input.error("Unclosed block", pos.line, pos.column); + } + doubleColon(token) { + throw this.input.error( + "Double colon", + { offset: token[2] }, + { offset: token[2] + token[1].length } + ); + } + unnamedAtrule(node, token) { + throw this.input.error( + "At-rule without name", + { offset: token[2] }, + { offset: token[2] + token[1].length } + ); + } + precheckMissedSemicolon() { + } + checkMissedSemicolon(tokens) { + let colon = this.colon(tokens); + if (colon === false) + return; + let founded = 0; + let token; + for (let j = colon - 1; j >= 0; j--) { + token = tokens[j]; + if (token[0] !== "space") { + founded += 1; + if (founded === 2) + break; + } + } + throw this.input.error( + "Missed semicolon", + token[0] === "word" ? token[3] + 1 : token[2] + ); + } + }; + module2.exports = Parser; + } +}); + +// node_modules/postcss/lib/parse.js +var require_parse = __commonJS({ + "node_modules/postcss/lib/parse.js"(exports2, module2) { + "use strict"; + var Container = require_container(); + var Parser = require_parser(); + var Input = require_input(); + function parse(css, opts) { + let input = new Input(css, opts); + let parser = new Parser(input); + try { + parser.parse(); + } catch (e) { + if (process.env.NODE_ENV !== "production") { + if (e.name === "CssSyntaxError" && opts && opts.from) { + if (/\.scss$/i.test(opts.from)) { + e.message += "\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser"; + } else if (/\.sass/i.test(opts.from)) { + e.message += "\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser"; + } else if (/\.less$/i.test(opts.from)) { + e.message += "\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser"; + } + } + } + throw e; + } + return parser.root; + } + module2.exports = parse; + parse.default = parse; + Container.registerParse(parse); + } +}); + +// node_modules/postcss/lib/lazy-result.js +var require_lazy_result = __commonJS({ + "node_modules/postcss/lib/lazy-result.js"(exports2, module2) { + "use strict"; + var { isClean, my } = require_symbols(); + var MapGenerator = require_map_generator(); + var stringify = require_stringify(); + var Container = require_container(); + var Document = require_document(); + var warnOnce = require_warn_once(); + var Result = require_result(); + var parse = require_parse(); + var Root = require_root(); + var TYPE_TO_CLASS_NAME = { + document: "Document", + root: "Root", + atrule: "AtRule", + rule: "Rule", + decl: "Declaration", + comment: "Comment" + }; + var PLUGIN_PROPS = { + postcssPlugin: true, + prepare: true, + Once: true, + Document: true, + Root: true, + Declaration: true, + Rule: true, + AtRule: true, + Comment: true, + DeclarationExit: true, + RuleExit: true, + AtRuleExit: true, + CommentExit: true, + RootExit: true, + DocumentExit: true, + OnceExit: true + }; + var NOT_VISITORS = { + postcssPlugin: true, + prepare: true, + Once: true + }; + var CHILDREN = 0; + function isPromise(obj) { + return typeof obj === "object" && typeof obj.then === "function"; + } + function getEvents(node) { + let key = false; + let type = TYPE_TO_CLASS_NAME[node.type]; + if (node.type === "decl") { + key = node.prop.toLowerCase(); + } else if (node.type === "atrule") { + key = node.name.toLowerCase(); + } + if (key && node.append) { + return [ + type, + type + "-" + key, + CHILDREN, + type + "Exit", + type + "Exit-" + key + ]; + } else if (key) { + return [type, type + "-" + key, type + "Exit", type + "Exit-" + key]; + } else if (node.append) { + return [type, CHILDREN, type + "Exit"]; + } else { + return [type, type + "Exit"]; + } + } + function toStack(node) { + let events; + if (node.type === "document") { + events = ["Document", CHILDREN, "DocumentExit"]; + } else if (node.type === "root") { + events = ["Root", CHILDREN, "RootExit"]; + } else { + events = getEvents(node); + } + return { + node, + events, + eventIndex: 0, + visitors: [], + visitorIndex: 0, + iterator: 0 + }; + } + function cleanMarks(node) { + node[isClean] = false; + if (node.nodes) + node.nodes.forEach((i) => cleanMarks(i)); + return node; + } + var postcss = {}; + var LazyResult = class { + constructor(processor, css, opts) { + this.stringified = false; + this.processed = false; + let root; + if (typeof css === "object" && css !== null && (css.type === "root" || css.type === "document")) { + root = cleanMarks(css); + } else if (css instanceof LazyResult || css instanceof Result) { + root = cleanMarks(css.root); + if (css.map) { + if (typeof opts.map === "undefined") + opts.map = {}; + if (!opts.map.inline) + opts.map.inline = false; + opts.map.prev = css.map; + } + } else { + let parser = parse; + if (opts.syntax) + parser = opts.syntax.parse; + if (opts.parser) + parser = opts.parser; + if (parser.parse) + parser = parser.parse; + try { + root = parser(css, opts); + } catch (error) { + this.processed = true; + this.error = error; + } + if (root && !root[my]) { + Container.rebuild(root); + } + } + this.result = new Result(processor, root, opts); + this.helpers = { ...postcss, result: this.result, postcss }; + this.plugins = this.processor.plugins.map((plugin) => { + if (typeof plugin === "object" && plugin.prepare) { + return { ...plugin, ...plugin.prepare(this.result) }; + } else { + return plugin; + } + }); + } + get [Symbol.toStringTag]() { + return "LazyResult"; + } + get processor() { + return this.result.processor; + } + get opts() { + return this.result.opts; + } + get css() { + return this.stringify().css; + } + get content() { + return this.stringify().content; + } + get map() { + return this.stringify().map; + } + get root() { + return this.sync().root; + } + get messages() { + return this.sync().messages; + } + warnings() { + return this.sync().warnings(); + } + toString() { + return this.css; + } + then(onFulfilled, onRejected) { + if (process.env.NODE_ENV !== "production") { + if (!("from" in this.opts)) { + warnOnce( + "Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning." + ); + } + } + return this.async().then(onFulfilled, onRejected); + } + catch(onRejected) { + return this.async().catch(onRejected); + } + finally(onFinally) { + return this.async().then(onFinally, onFinally); + } + async() { + if (this.error) + return Promise.reject(this.error); + if (this.processed) + return Promise.resolve(this.result); + if (!this.processing) { + this.processing = this.runAsync(); + } + return this.processing; + } + sync() { + if (this.error) + throw this.error; + if (this.processed) + return this.result; + this.processed = true; + if (this.processing) { + throw this.getAsyncError(); + } + for (let plugin of this.plugins) { + let promise = this.runOnRoot(plugin); + if (isPromise(promise)) { + throw this.getAsyncError(); + } + } + this.prepareVisitors(); + if (this.hasListener) { + let root = this.result.root; + while (!root[isClean]) { + root[isClean] = true; + this.walkSync(root); + } + if (this.listeners.OnceExit) { + if (root.type === "document") { + for (let subRoot of root.nodes) { + this.visitSync(this.listeners.OnceExit, subRoot); + } + } else { + this.visitSync(this.listeners.OnceExit, root); + } + } + } + return this.result; + } + stringify() { + if (this.error) + throw this.error; + if (this.stringified) + return this.result; + this.stringified = true; + this.sync(); + let opts = this.result.opts; + let str = stringify; + if (opts.syntax) + str = opts.syntax.stringify; + if (opts.stringifier) + str = opts.stringifier; + if (str.stringify) + str = str.stringify; + let map = new MapGenerator(str, this.result.root, this.result.opts); + let data = map.generate(); + this.result.css = data[0]; + this.result.map = data[1]; + return this.result; + } + walkSync(node) { + node[isClean] = true; + let events = getEvents(node); + for (let event of events) { + if (event === CHILDREN) { + if (node.nodes) { + node.each((child) => { + if (!child[isClean]) + this.walkSync(child); + }); + } + } else { + let visitors = this.listeners[event]; + if (visitors) { + if (this.visitSync(visitors, node.toProxy())) + return; + } + } + } + } + visitSync(visitors, node) { + for (let [plugin, visitor] of visitors) { + this.result.lastPlugin = plugin; + let promise; + try { + promise = visitor(node, this.helpers); + } catch (e) { + throw this.handleError(e, node.proxyOf); + } + if (node.type !== "root" && node.type !== "document" && !node.parent) { + return true; + } + if (isPromise(promise)) { + throw this.getAsyncError(); + } + } + } + runOnRoot(plugin) { + this.result.lastPlugin = plugin; + try { + if (typeof plugin === "object" && plugin.Once) { + if (this.result.root.type === "document") { + let roots = this.result.root.nodes.map( + (root) => plugin.Once(root, this.helpers) + ); + if (isPromise(roots[0])) { + return Promise.all(roots); + } + return roots; + } + return plugin.Once(this.result.root, this.helpers); + } else if (typeof plugin === "function") { + return plugin(this.result.root, this.result); + } + } catch (error) { + throw this.handleError(error); + } + } + getAsyncError() { + throw new Error("Use process(css).then(cb) to work with async plugins"); + } + handleError(error, node) { + let plugin = this.result.lastPlugin; + try { + if (node) + node.addToError(error); + this.error = error; + if (error.name === "CssSyntaxError" && !error.plugin) { + error.plugin = plugin.postcssPlugin; + error.setMessage(); + } else if (plugin.postcssVersion) { + if (process.env.NODE_ENV !== "production") { + let pluginName = plugin.postcssPlugin; + let pluginVer = plugin.postcssVersion; + let runtimeVer = this.result.processor.version; + let a = pluginVer.split("."); + let b = runtimeVer.split("."); + if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) { + console.error( + "Unknown error from PostCSS plugin. Your current PostCSS version is " + runtimeVer + ", but " + pluginName + " uses " + pluginVer + ". Perhaps this is the source of the error below." + ); + } + } + } + } catch (err) { + if (console && console.error) + console.error(err); + } + return error; + } + async runAsync() { + this.plugin = 0; + for (let i = 0; i < this.plugins.length; i++) { + let plugin = this.plugins[i]; + let promise = this.runOnRoot(plugin); + if (isPromise(promise)) { + try { + await promise; + } catch (error) { + throw this.handleError(error); + } + } + } + this.prepareVisitors(); + if (this.hasListener) { + let root = this.result.root; + while (!root[isClean]) { + root[isClean] = true; + let stack = [toStack(root)]; + while (stack.length > 0) { + let promise = this.visitTick(stack); + if (isPromise(promise)) { + try { + await promise; + } catch (e) { + let node = stack[stack.length - 1].node; + throw this.handleError(e, node); + } + } + } + } + if (this.listeners.OnceExit) { + for (let [plugin, visitor] of this.listeners.OnceExit) { + this.result.lastPlugin = plugin; + try { + if (root.type === "document") { + let roots = root.nodes.map( + (subRoot) => visitor(subRoot, this.helpers) + ); + await Promise.all(roots); + } else { + await visitor(root, this.helpers); + } + } catch (e) { + throw this.handleError(e); + } + } + } + } + this.processed = true; + return this.stringify(); + } + prepareVisitors() { + this.listeners = {}; + let add = (plugin, type, cb) => { + if (!this.listeners[type]) + this.listeners[type] = []; + this.listeners[type].push([plugin, cb]); + }; + for (let plugin of this.plugins) { + if (typeof plugin === "object") { + for (let event in plugin) { + if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) { + throw new Error( + `Unknown event ${event} in ${plugin.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).` + ); + } + if (!NOT_VISITORS[event]) { + if (typeof plugin[event] === "object") { + for (let filter in plugin[event]) { + if (filter === "*") { + add(plugin, event, plugin[event][filter]); + } else { + add( + plugin, + event + "-" + filter.toLowerCase(), + plugin[event][filter] + ); + } + } + } else if (typeof plugin[event] === "function") { + add(plugin, event, plugin[event]); + } + } + } + } + } + this.hasListener = Object.keys(this.listeners).length > 0; + } + visitTick(stack) { + let visit = stack[stack.length - 1]; + let { node, visitors } = visit; + if (node.type !== "root" && node.type !== "document" && !node.parent) { + stack.pop(); + return; + } + if (visitors.length > 0 && visit.visitorIndex < visitors.length) { + let [plugin, visitor] = visitors[visit.visitorIndex]; + visit.visitorIndex += 1; + if (visit.visitorIndex === visitors.length) { + visit.visitors = []; + visit.visitorIndex = 0; + } + this.result.lastPlugin = plugin; + try { + return visitor(node.toProxy(), this.helpers); + } catch (e) { + throw this.handleError(e, node); + } + } + if (visit.iterator !== 0) { + let iterator = visit.iterator; + let child; + while (child = node.nodes[node.indexes[iterator]]) { + node.indexes[iterator] += 1; + if (!child[isClean]) { + child[isClean] = true; + stack.push(toStack(child)); + return; + } + } + visit.iterator = 0; + delete node.indexes[iterator]; + } + let events = visit.events; + while (visit.eventIndex < events.length) { + let event = events[visit.eventIndex]; + visit.eventIndex += 1; + if (event === CHILDREN) { + if (node.nodes && node.nodes.length) { + node[isClean] = true; + visit.iterator = node.getIterator(); + } + return; + } else if (this.listeners[event]) { + visit.visitors = this.listeners[event]; + return; + } + } + stack.pop(); + } + }; + LazyResult.registerPostcss = (dependant) => { + postcss = dependant; + }; + module2.exports = LazyResult; + LazyResult.default = LazyResult; + Root.registerLazyResult(LazyResult); + Document.registerLazyResult(LazyResult); + } +}); + +// node_modules/postcss/lib/no-work-result.js +var require_no_work_result = __commonJS({ + "node_modules/postcss/lib/no-work-result.js"(exports2, module2) { + "use strict"; + var MapGenerator = require_map_generator(); + var stringify = require_stringify(); + var warnOnce = require_warn_once(); + var parse = require_parse(); + var Result = require_result(); + var NoWorkResult = class { + constructor(processor, css, opts) { + css = css.toString(); + this.stringified = false; + this._processor = processor; + this._css = css; + this._opts = opts; + this._map = void 0; + let root; + let str = stringify; + this.result = new Result(this._processor, root, this._opts); + this.result.css = css; + let self2 = this; + Object.defineProperty(this.result, "root", { + get() { + return self2.root; + } + }); + let map = new MapGenerator(str, root, this._opts, css); + if (map.isMap()) { + let [generatedCSS, generatedMap] = map.generate(); + if (generatedCSS) { + this.result.css = generatedCSS; + } + if (generatedMap) { + this.result.map = generatedMap; + } + } + } + get [Symbol.toStringTag]() { + return "NoWorkResult"; + } + get processor() { + return this.result.processor; + } + get opts() { + return this.result.opts; + } + get css() { + return this.result.css; + } + get content() { + return this.result.css; + } + get map() { + return this.result.map; + } + get root() { + if (this._root) { + return this._root; + } + let root; + let parser = parse; + try { + root = parser(this._css, this._opts); + } catch (error) { + this.error = error; + } + if (this.error) { + throw this.error; + } else { + this._root = root; + return root; + } + } + get messages() { + return []; + } + warnings() { + return []; + } + toString() { + return this._css; + } + then(onFulfilled, onRejected) { + if (process.env.NODE_ENV !== "production") { + if (!("from" in this._opts)) { + warnOnce( + "Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning." + ); + } + } + return this.async().then(onFulfilled, onRejected); + } + catch(onRejected) { + return this.async().catch(onRejected); + } + finally(onFinally) { + return this.async().then(onFinally, onFinally); + } + async() { + if (this.error) + return Promise.reject(this.error); + return Promise.resolve(this.result); + } + sync() { + if (this.error) + throw this.error; + return this.result; + } + }; + module2.exports = NoWorkResult; + NoWorkResult.default = NoWorkResult; + } +}); + +// node_modules/postcss/lib/processor.js +var require_processor = __commonJS({ + "node_modules/postcss/lib/processor.js"(exports2, module2) { + "use strict"; + var NoWorkResult = require_no_work_result(); + var LazyResult = require_lazy_result(); + var Document = require_document(); + var Root = require_root(); + var Processor = class { + constructor(plugins = []) { + this.version = "8.4.21"; + this.plugins = this.normalize(plugins); + } + use(plugin) { + this.plugins = this.plugins.concat(this.normalize([plugin])); + return this; + } + process(css, opts = {}) { + if (this.plugins.length === 0 && typeof opts.parser === "undefined" && typeof opts.stringifier === "undefined" && typeof opts.syntax === "undefined") { + return new NoWorkResult(this, css, opts); + } else { + return new LazyResult(this, css, opts); + } + } + normalize(plugins) { + let normalized = []; + for (let i of plugins) { + if (i.postcss === true) { + i = i(); + } else if (i.postcss) { + i = i.postcss; + } + if (typeof i === "object" && Array.isArray(i.plugins)) { + normalized = normalized.concat(i.plugins); + } else if (typeof i === "object" && i.postcssPlugin) { + normalized.push(i); + } else if (typeof i === "function") { + normalized.push(i); + } else if (typeof i === "object" && (i.parse || i.stringify)) { + if (process.env.NODE_ENV !== "production") { + throw new Error( + "PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation." + ); + } + } else { + throw new Error(i + " is not a PostCSS plugin"); + } + } + return normalized; + } + }; + module2.exports = Processor; + Processor.default = Processor; + Root.registerProcessor(Processor); + Document.registerProcessor(Processor); + } +}); + +// node_modules/postcss/lib/fromJSON.js +var require_fromJSON = __commonJS({ + "node_modules/postcss/lib/fromJSON.js"(exports2, module2) { + "use strict"; + var Declaration = require_declaration(); + var PreviousMap = require_previous_map(); + var Comment = require_comment(); + var AtRule = require_at_rule(); + var Input = require_input(); + var Root = require_root(); + var Rule = require_rule(); + function fromJSON(json, inputs) { + if (Array.isArray(json)) + return json.map((n) => fromJSON(n)); + let { inputs: ownInputs, ...defaults } = json; + if (ownInputs) { + inputs = []; + for (let input of ownInputs) { + let inputHydrated = { ...input, __proto__: Input.prototype }; + if (inputHydrated.map) { + inputHydrated.map = { + ...inputHydrated.map, + __proto__: PreviousMap.prototype + }; + } + inputs.push(inputHydrated); + } + } + if (defaults.nodes) { + defaults.nodes = json.nodes.map((n) => fromJSON(n, inputs)); + } + if (defaults.source) { + let { inputId, ...source } = defaults.source; + defaults.source = source; + if (inputId != null) { + defaults.source.input = inputs[inputId]; + } + } + if (defaults.type === "root") { + return new Root(defaults); + } else if (defaults.type === "decl") { + return new Declaration(defaults); + } else if (defaults.type === "rule") { + return new Rule(defaults); + } else if (defaults.type === "comment") { + return new Comment(defaults); + } else if (defaults.type === "atrule") { + return new AtRule(defaults); + } else { + throw new Error("Unknown node type: " + json.type); + } + } + module2.exports = fromJSON; + fromJSON.default = fromJSON; + } +}); + +// node_modules/postcss/lib/postcss.js +var require_postcss = __commonJS({ + "node_modules/postcss/lib/postcss.js"(exports2, module2) { + "use strict"; + var CssSyntaxError = require_css_syntax_error(); + var Declaration = require_declaration(); + var LazyResult = require_lazy_result(); + var Container = require_container(); + var Processor = require_processor(); + var stringify = require_stringify(); + var fromJSON = require_fromJSON(); + var Document = require_document(); + var Warning = require_warning(); + var Comment = require_comment(); + var AtRule = require_at_rule(); + var Result = require_result(); + var Input = require_input(); + var parse = require_parse(); + var list = require_list(); + var Rule = require_rule(); + var Root = require_root(); + var Node = require_node(); + function postcss(...plugins) { + if (plugins.length === 1 && Array.isArray(plugins[0])) { + plugins = plugins[0]; + } + return new Processor(plugins); + } + postcss.plugin = function plugin(name, initializer) { + let warningPrinted = false; + function creator(...args) { + if (console && console.warn && !warningPrinted) { + warningPrinted = true; + console.warn( + name + ": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration" + ); + if (process.env.LANG && process.env.LANG.startsWith("cn")) { + console.warn( + name + ": \u91CC\u9762 postcss.plugin \u88AB\u5F03\u7528. \u8FC1\u79FB\u6307\u5357:\nhttps://www.w3ctech.com/topic/2226" + ); + } + } + let transformer = initializer(...args); + transformer.postcssPlugin = name; + transformer.postcssVersion = new Processor().version; + return transformer; + } + let cache; + Object.defineProperty(creator, "postcss", { + get() { + if (!cache) + cache = creator(); + return cache; + } + }); + creator.process = function(css, processOpts, pluginOpts) { + return postcss([creator(pluginOpts)]).process(css, processOpts); + }; + return creator; + }; + postcss.stringify = stringify; + postcss.parse = parse; + postcss.fromJSON = fromJSON; + postcss.list = list; + postcss.comment = (defaults) => new Comment(defaults); + postcss.atRule = (defaults) => new AtRule(defaults); + postcss.decl = (defaults) => new Declaration(defaults); + postcss.rule = (defaults) => new Rule(defaults); + postcss.root = (defaults) => new Root(defaults); + postcss.document = (defaults) => new Document(defaults); + postcss.CssSyntaxError = CssSyntaxError; + postcss.Declaration = Declaration; + postcss.Container = Container; + postcss.Processor = Processor; + postcss.Document = Document; + postcss.Comment = Comment; + postcss.Warning = Warning; + postcss.AtRule = AtRule; + postcss.Result = Result; + postcss.Input = Input; + postcss.Rule = Rule; + postcss.Root = Root; + postcss.Node = Node; + LazyResult.registerPostcss(postcss); + module2.exports = postcss; + postcss.default = postcss; + } +}); + +// node_modules/postcss-import/lib/join-media.js +var require_join_media = __commonJS({ + "node_modules/postcss-import/lib/join-media.js"(exports2, module2) { + "use strict"; + module2.exports = function(parentMedia, childMedia) { + if (!parentMedia.length && childMedia.length) + return childMedia; + if (parentMedia.length && !childMedia.length) + return parentMedia; + if (!parentMedia.length && !childMedia.length) + return []; + const media = []; + parentMedia.forEach((parentItem) => { + childMedia.forEach((childItem) => { + if (parentItem !== childItem) + media.push(`${parentItem} and ${childItem}`); + }); + }); + return media; + }; + } +}); + +// node_modules/postcss-import/lib/join-layer.js +var require_join_layer = __commonJS({ + "node_modules/postcss-import/lib/join-layer.js"(exports2, module2) { + "use strict"; + module2.exports = function(parentLayer, childLayer) { + if (!parentLayer.length && childLayer.length) + return childLayer; + if (parentLayer.length && !childLayer.length) + return parentLayer; + if (!parentLayer.length && !childLayer.length) + return []; + return parentLayer.concat(childLayer); + }; + } +}); + +// node_modules/resolve/lib/homedir.js +var require_homedir = __commonJS({ + "node_modules/resolve/lib/homedir.js"(exports2, module2) { + "use strict"; + var os = require("os"); + module2.exports = os.homedir || function homedir() { + var home = process.env.HOME; + var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME; + if (process.platform === "win32") { + return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null; + } + if (process.platform === "darwin") { + return home || (user ? "/Users/" + user : null); + } + if (process.platform === "linux") { + return home || (process.getuid() === 0 ? "/root" : user ? "/home/" + user : null); + } + return home || null; + }; + } +}); + +// node_modules/resolve/lib/caller.js +var require_caller = __commonJS({ + "node_modules/resolve/lib/caller.js"(exports2, module2) { + module2.exports = function() { + var origPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = function(_, stack2) { + return stack2; + }; + var stack = new Error().stack; + Error.prepareStackTrace = origPrepareStackTrace; + return stack[2].getFileName(); + }; + } +}); + +// node_modules/path-parse/index.js +var require_path_parse = __commonJS({ + "node_modules/path-parse/index.js"(exports2, module2) { + "use strict"; + var isWindows = process.platform === "win32"; + var splitWindowsRe = /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/; + var win32 = {}; + function win32SplitPath(filename) { + return splitWindowsRe.exec(filename).slice(1); + } + win32.parse = function(pathString) { + if (typeof pathString !== "string") { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = win32SplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[1], + dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3] + }; + }; + var splitPathRe = /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/; + var posix = {}; + function posixSplitPath(filename) { + return splitPathRe.exec(filename).slice(1); + } + posix.parse = function(pathString) { + if (typeof pathString !== "string") { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = posixSplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[1], + dir: allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3] + }; + }; + if (isWindows) + module2.exports = win32.parse; + else + module2.exports = posix.parse; + module2.exports.posix = posix.parse; + module2.exports.win32 = win32.parse; + } +}); + +// node_modules/resolve/lib/node-modules-paths.js +var require_node_modules_paths = __commonJS({ + "node_modules/resolve/lib/node-modules-paths.js"(exports2, module2) { + var path = require("path"); + var parse = path.parse || require_path_parse(); + var getNodeModulesDirs = function getNodeModulesDirs2(absoluteStart, modules) { + var prefix = "/"; + if (/^([A-Za-z]:)/.test(absoluteStart)) { + prefix = ""; + } else if (/^\\\\/.test(absoluteStart)) { + prefix = "\\\\"; + } + var paths = [absoluteStart]; + var parsed = parse(absoluteStart); + while (parsed.dir !== paths[paths.length - 1]) { + paths.push(parsed.dir); + parsed = parse(parsed.dir); + } + return paths.reduce(function(dirs, aPath) { + return dirs.concat(modules.map(function(moduleDir) { + return path.resolve(prefix, aPath, moduleDir); + })); + }, []); + }; + module2.exports = function nodeModulesPaths(start, opts, request) { + var modules = opts && opts.moduleDirectory ? [].concat(opts.moduleDirectory) : ["node_modules"]; + if (opts && typeof opts.paths === "function") { + return opts.paths( + request, + start, + function() { + return getNodeModulesDirs(start, modules); + }, + opts + ); + } + var dirs = getNodeModulesDirs(start, modules); + return opts && opts.paths ? dirs.concat(opts.paths) : dirs; + }; + } +}); + +// node_modules/resolve/lib/normalize-options.js +var require_normalize_options = __commonJS({ + "node_modules/resolve/lib/normalize-options.js"(exports2, module2) { + module2.exports = function(x, opts) { + return opts || {}; + }; + } +}); + +// node_modules/function-bind/implementation.js +var require_implementation = __commonJS({ + "node_modules/function-bind/implementation.js"(exports2, module2) { + "use strict"; + var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; + var slice = Array.prototype.slice; + var toStr = Object.prototype.toString; + var funcType = "[object Function]"; + module2.exports = function bind(that) { + var target = this; + if (typeof target !== "function" || toStr.call(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slice.call(arguments, 1); + var bound; + var binder = function() { + if (this instanceof bound) { + var result = target.apply( + this, + args.concat(slice.call(arguments)) + ); + if (Object(result) === result) { + return result; + } + return this; + } else { + return target.apply( + that, + args.concat(slice.call(arguments)) + ); + } + }; + var boundLength = Math.max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs.push("$" + i); + } + bound = Function("binder", "return function (" + boundArgs.join(",") + "){ return binder.apply(this,arguments); }")(binder); + if (target.prototype) { + var Empty = function Empty2() { + }; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + return bound; + }; + } +}); + +// node_modules/function-bind/index.js +var require_function_bind = __commonJS({ + "node_modules/function-bind/index.js"(exports2, module2) { + "use strict"; + var implementation = require_implementation(); + module2.exports = Function.prototype.bind || implementation; + } +}); + +// node_modules/has/src/index.js +var require_src = __commonJS({ + "node_modules/has/src/index.js"(exports2, module2) { + "use strict"; + var bind = require_function_bind(); + module2.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); + } +}); + +// node_modules/is-core-module/core.json +var require_core = __commonJS({ + "node_modules/is-core-module/core.json"(exports2, module2) { + module2.exports = { + assert: true, + "node:assert": [">= 14.18 && < 15", ">= 16"], + "assert/strict": ">= 15", + "node:assert/strict": ">= 16", + async_hooks: ">= 8", + "node:async_hooks": [">= 14.18 && < 15", ">= 16"], + buffer_ieee754: ">= 0.5 && < 0.9.7", + buffer: true, + "node:buffer": [">= 14.18 && < 15", ">= 16"], + child_process: true, + "node:child_process": [">= 14.18 && < 15", ">= 16"], + cluster: ">= 0.5", + "node:cluster": [">= 14.18 && < 15", ">= 16"], + console: true, + "node:console": [">= 14.18 && < 15", ">= 16"], + constants: true, + "node:constants": [">= 14.18 && < 15", ">= 16"], + crypto: true, + "node:crypto": [">= 14.18 && < 15", ">= 16"], + _debug_agent: ">= 1 && < 8", + _debugger: "< 8", + dgram: true, + "node:dgram": [">= 14.18 && < 15", ">= 16"], + diagnostics_channel: [">= 14.17 && < 15", ">= 15.1"], + "node:diagnostics_channel": [">= 14.18 && < 15", ">= 16"], + dns: true, + "node:dns": [">= 14.18 && < 15", ">= 16"], + "dns/promises": ">= 15", + "node:dns/promises": ">= 16", + domain: ">= 0.7.12", + "node:domain": [">= 14.18 && < 15", ">= 16"], + events: true, + "node:events": [">= 14.18 && < 15", ">= 16"], + freelist: "< 6", + fs: true, + "node:fs": [">= 14.18 && < 15", ">= 16"], + "fs/promises": [">= 10 && < 10.1", ">= 14"], + "node:fs/promises": [">= 14.18 && < 15", ">= 16"], + _http_agent: ">= 0.11.1", + "node:_http_agent": [">= 14.18 && < 15", ">= 16"], + _http_client: ">= 0.11.1", + "node:_http_client": [">= 14.18 && < 15", ">= 16"], + _http_common: ">= 0.11.1", + "node:_http_common": [">= 14.18 && < 15", ">= 16"], + _http_incoming: ">= 0.11.1", + "node:_http_incoming": [">= 14.18 && < 15", ">= 16"], + _http_outgoing: ">= 0.11.1", + "node:_http_outgoing": [">= 14.18 && < 15", ">= 16"], + _http_server: ">= 0.11.1", + "node:_http_server": [">= 14.18 && < 15", ">= 16"], + http: true, + "node:http": [">= 14.18 && < 15", ">= 16"], + http2: ">= 8.8", + "node:http2": [">= 14.18 && < 15", ">= 16"], + https: true, + "node:https": [">= 14.18 && < 15", ">= 16"], + inspector: ">= 8", + "node:inspector": [">= 14.18 && < 15", ">= 16"], + _linklist: "< 8", + module: true, + "node:module": [">= 14.18 && < 15", ">= 16"], + net: true, + "node:net": [">= 14.18 && < 15", ">= 16"], + "node-inspect/lib/_inspect": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_client": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_repl": ">= 7.6 && < 12", + os: true, + "node:os": [">= 14.18 && < 15", ">= 16"], + path: true, + "node:path": [">= 14.18 && < 15", ">= 16"], + "path/posix": ">= 15.3", + "node:path/posix": ">= 16", + "path/win32": ">= 15.3", + "node:path/win32": ">= 16", + perf_hooks: ">= 8.5", + "node:perf_hooks": [">= 14.18 && < 15", ">= 16"], + process: ">= 1", + "node:process": [">= 14.18 && < 15", ">= 16"], + punycode: ">= 0.5", + "node:punycode": [">= 14.18 && < 15", ">= 16"], + querystring: true, + "node:querystring": [">= 14.18 && < 15", ">= 16"], + readline: true, + "node:readline": [">= 14.18 && < 15", ">= 16"], + "readline/promises": ">= 17", + "node:readline/promises": ">= 17", + repl: true, + "node:repl": [">= 14.18 && < 15", ">= 16"], + smalloc: ">= 0.11.5 && < 3", + _stream_duplex: ">= 0.9.4", + "node:_stream_duplex": [">= 14.18 && < 15", ">= 16"], + _stream_transform: ">= 0.9.4", + "node:_stream_transform": [">= 14.18 && < 15", ">= 16"], + _stream_wrap: ">= 1.4.1", + "node:_stream_wrap": [">= 14.18 && < 15", ">= 16"], + _stream_passthrough: ">= 0.9.4", + "node:_stream_passthrough": [">= 14.18 && < 15", ">= 16"], + _stream_readable: ">= 0.9.4", + "node:_stream_readable": [">= 14.18 && < 15", ">= 16"], + _stream_writable: ">= 0.9.4", + "node:_stream_writable": [">= 14.18 && < 15", ">= 16"], + stream: true, + "node:stream": [">= 14.18 && < 15", ">= 16"], + "stream/consumers": ">= 16.7", + "node:stream/consumers": ">= 16.7", + "stream/promises": ">= 15", + "node:stream/promises": ">= 16", + "stream/web": ">= 16.5", + "node:stream/web": ">= 16.5", + string_decoder: true, + "node:string_decoder": [">= 14.18 && < 15", ">= 16"], + sys: [">= 0.4 && < 0.7", ">= 0.8"], + "node:sys": [">= 14.18 && < 15", ">= 16"], + "node:test": ">= 18", + timers: true, + "node:timers": [">= 14.18 && < 15", ">= 16"], + "timers/promises": ">= 15", + "node:timers/promises": ">= 16", + _tls_common: ">= 0.11.13", + "node:_tls_common": [">= 14.18 && < 15", ">= 16"], + _tls_legacy: ">= 0.11.3 && < 10", + _tls_wrap: ">= 0.11.3", + "node:_tls_wrap": [">= 14.18 && < 15", ">= 16"], + tls: true, + "node:tls": [">= 14.18 && < 15", ">= 16"], + trace_events: ">= 10", + "node:trace_events": [">= 14.18 && < 15", ">= 16"], + tty: true, + "node:tty": [">= 14.18 && < 15", ">= 16"], + url: true, + "node:url": [">= 14.18 && < 15", ">= 16"], + util: true, + "node:util": [">= 14.18 && < 15", ">= 16"], + "util/types": ">= 15.3", + "node:util/types": ">= 16", + "v8/tools/arguments": ">= 10 && < 12", + "v8/tools/codemap": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/consarray": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/csvparser": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/logreader": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/profile_view": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/splaytree": [">= 4.4 && < 5", ">= 5.2 && < 12"], + v8: ">= 1", + "node:v8": [">= 14.18 && < 15", ">= 16"], + vm: true, + "node:vm": [">= 14.18 && < 15", ">= 16"], + wasi: ">= 13.4 && < 13.5", + worker_threads: ">= 11.7", + "node:worker_threads": [">= 14.18 && < 15", ">= 16"], + zlib: ">= 0.5", + "node:zlib": [">= 14.18 && < 15", ">= 16"] + }; + } +}); + +// node_modules/is-core-module/index.js +var require_is_core_module = __commonJS({ + "node_modules/is-core-module/index.js"(exports2, module2) { + "use strict"; + var has = require_src(); + function specifierIncluded(current, specifier) { + var nodeParts = current.split("."); + var parts = specifier.split(" "); + var op = parts.length > 1 ? parts[0] : "="; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split("."); + for (var i = 0; i < 3; ++i) { + var cur = parseInt(nodeParts[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; + } + if (op === "<") { + return cur < ver; + } + if (op === ">=") { + return cur >= ver; + } + return false; + } + return op === ">="; + } + function matchesRange(current, range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { + return false; + } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(current, specifiers[i])) { + return false; + } + } + return true; + } + function versionIncluded(nodeVersion, specifierValue) { + if (typeof specifierValue === "boolean") { + return specifierValue; + } + var current = typeof nodeVersion === "undefined" ? process.versions && process.versions.node : nodeVersion; + if (typeof current !== "string") { + throw new TypeError(typeof nodeVersion === "undefined" ? "Unable to determine current node version" : "If provided, a valid node version is required"); + } + if (specifierValue && typeof specifierValue === "object") { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(current, specifierValue[i])) { + return true; + } + } + return false; + } + return matchesRange(current, specifierValue); + } + var data = require_core(); + module2.exports = function isCore(x, nodeVersion) { + return has(data, x) && versionIncluded(nodeVersion, data[x]); + }; + } +}); + +// node_modules/resolve/lib/async.js +var require_async = __commonJS({ + "node_modules/resolve/lib/async.js"(exports2, module2) { + var fs = require("fs"); + var getHomedir = require_homedir(); + var path = require("path"); + var caller = require_caller(); + var nodeModulesPaths = require_node_modules_paths(); + var normalizeOptions = require_normalize_options(); + var isCore = require_is_core_module(); + var realpathFS = process.platform !== "win32" && fs.realpath && typeof fs.realpath.native === "function" ? fs.realpath.native : fs.realpath; + var homedir = getHomedir(); + var defaultPaths = function() { + return [ + path.join(homedir, ".node_modules"), + path.join(homedir, ".node_libraries") + ]; + }; + var defaultIsFile = function isFile(file, cb) { + fs.stat(file, function(err, stat) { + if (!err) { + return cb(null, stat.isFile() || stat.isFIFO()); + } + if (err.code === "ENOENT" || err.code === "ENOTDIR") + return cb(null, false); + return cb(err); + }); + }; + var defaultIsDir = function isDirectory(dir, cb) { + fs.stat(dir, function(err, stat) { + if (!err) { + return cb(null, stat.isDirectory()); + } + if (err.code === "ENOENT" || err.code === "ENOTDIR") + return cb(null, false); + return cb(err); + }); + }; + var defaultRealpath = function realpath(x, cb) { + realpathFS(x, function(realpathErr, realPath) { + if (realpathErr && realpathErr.code !== "ENOENT") + cb(realpathErr); + else + cb(null, realpathErr ? x : realPath); + }); + }; + var maybeRealpath = function maybeRealpath2(realpath, x, opts, cb) { + if (opts && opts.preserveSymlinks === false) { + realpath(x, cb); + } else { + cb(null, x); + } + }; + var defaultReadPackage = function defaultReadPackage2(readFile, pkgfile, cb) { + readFile(pkgfile, function(readFileErr, body) { + if (readFileErr) + cb(readFileErr); + else { + try { + var pkg = JSON.parse(body); + cb(null, pkg); + } catch (jsonErr) { + cb(null); + } + } + }); + }; + var getPackageCandidates = function getPackageCandidates2(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path.join(dirs[i], x); + } + return dirs; + }; + module2.exports = function resolve(x, options, callback) { + var cb = callback; + var opts = options; + if (typeof options === "function") { + cb = opts; + opts = {}; + } + if (typeof x !== "string") { + var err = new TypeError("Path must be a string."); + return process.nextTick(function() { + cb(err); + }); + } + opts = normalizeOptions(x, opts); + var isFile = opts.isFile || defaultIsFile; + var isDirectory = opts.isDirectory || defaultIsDir; + var readFile = opts.readFile || fs.readFile; + var realpath = opts.realpath || defaultRealpath; + var readPackage = opts.readPackage || defaultReadPackage; + if (opts.readFile && opts.readPackage) { + var conflictErr = new TypeError("`readFile` and `readPackage` are mutually exclusive."); + return process.nextTick(function() { + cb(conflictErr); + }); + } + var packageIterator = opts.packageIterator; + var extensions = opts.extensions || [".js"]; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path.dirname(caller()); + var parent = opts.filename || basedir; + opts.paths = opts.paths || defaultPaths(); + var absoluteStart = path.resolve(basedir); + maybeRealpath( + realpath, + absoluteStart, + opts, + function(err2, realStart) { + if (err2) + cb(err2); + else + init(realStart); + } + ); + var res; + function init(basedir2) { + if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) { + res = path.resolve(basedir2, x); + if (x === "." || x === ".." || x.slice(-1) === "/") + res += "/"; + if (/\/$/.test(x) && res === basedir2) { + loadAsDirectory(res, opts.package, onfile); + } else + loadAsFile(res, opts.package, onfile); + } else if (includeCoreModules && isCore(x)) { + return cb(null, x); + } else + loadNodeModules(x, basedir2, function(err2, n, pkg) { + if (err2) + cb(err2); + else if (n) { + return maybeRealpath(realpath, n, opts, function(err3, realN) { + if (err3) { + cb(err3); + } else { + cb(null, realN, pkg); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = "MODULE_NOT_FOUND"; + cb(moduleError); + } + }); + } + function onfile(err2, m, pkg) { + if (err2) + cb(err2); + else if (m) + cb(null, m, pkg); + else + loadAsDirectory(res, function(err3, d, pkg2) { + if (err3) + cb(err3); + else if (d) { + maybeRealpath(realpath, d, opts, function(err4, realD) { + if (err4) { + cb(err4); + } else { + cb(null, realD, pkg2); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = "MODULE_NOT_FOUND"; + cb(moduleError); + } + }); + } + function loadAsFile(x2, thePackage, callback2) { + var loadAsFilePackage = thePackage; + var cb2 = callback2; + if (typeof loadAsFilePackage === "function") { + cb2 = loadAsFilePackage; + loadAsFilePackage = void 0; + } + var exts = [""].concat(extensions); + load(exts, x2, loadAsFilePackage); + function load(exts2, x3, loadPackage) { + if (exts2.length === 0) + return cb2(null, void 0, loadPackage); + var file = x3 + exts2[0]; + var pkg = loadPackage; + if (pkg) + onpkg(null, pkg); + else + loadpkg(path.dirname(file), onpkg); + function onpkg(err2, pkg_, dir) { + pkg = pkg_; + if (err2) + return cb2(err2); + if (dir && pkg && opts.pathFilter) { + var rfile = path.relative(dir, file); + var rel = rfile.slice(0, rfile.length - exts2[0].length); + var r = opts.pathFilter(pkg, x3, rel); + if (r) + return load( + [""].concat(extensions.slice()), + path.resolve(dir, r), + pkg + ); + } + isFile(file, onex); + } + function onex(err2, ex) { + if (err2) + return cb2(err2); + if (ex) + return cb2(null, file, pkg); + load(exts2.slice(1), x3, pkg); + } + } + } + function loadpkg(dir, cb2) { + if (dir === "" || dir === "/") + return cb2(null); + if (process.platform === "win32" && /^\w:[/\\]*$/.test(dir)) { + return cb2(null); + } + if (/[/\\]node_modules[/\\]*$/.test(dir)) + return cb2(null); + maybeRealpath(realpath, dir, opts, function(unwrapErr, pkgdir) { + if (unwrapErr) + return loadpkg(path.dirname(dir), cb2); + var pkgfile = path.join(pkgdir, "package.json"); + isFile(pkgfile, function(err2, ex) { + if (!ex) + return loadpkg(path.dirname(dir), cb2); + readPackage(readFile, pkgfile, function(err3, pkgParam) { + if (err3) + cb2(err3); + var pkg = pkgParam; + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } + cb2(null, pkg, dir); + }); + }); + }); + } + function loadAsDirectory(x2, loadAsDirectoryPackage, callback2) { + var cb2 = callback2; + var fpkg = loadAsDirectoryPackage; + if (typeof fpkg === "function") { + cb2 = fpkg; + fpkg = opts.package; + } + maybeRealpath(realpath, x2, opts, function(unwrapErr, pkgdir) { + if (unwrapErr) + return cb2(unwrapErr); + var pkgfile = path.join(pkgdir, "package.json"); + isFile(pkgfile, function(err2, ex) { + if (err2) + return cb2(err2); + if (!ex) + return loadAsFile(path.join(x2, "index"), fpkg, cb2); + readPackage(readFile, pkgfile, function(err3, pkgParam) { + if (err3) + return cb2(err3); + var pkg = pkgParam; + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } + if (pkg && pkg.main) { + if (typeof pkg.main !== "string") { + var mainError = new TypeError("package \u201C" + pkg.name + "\u201D `main` must be a string"); + mainError.code = "INVALID_PACKAGE_MAIN"; + return cb2(mainError); + } + if (pkg.main === "." || pkg.main === "./") { + pkg.main = "index"; + } + loadAsFile(path.resolve(x2, pkg.main), pkg, function(err4, m, pkg2) { + if (err4) + return cb2(err4); + if (m) + return cb2(null, m, pkg2); + if (!pkg2) + return loadAsFile(path.join(x2, "index"), pkg2, cb2); + var dir = path.resolve(x2, pkg2.main); + loadAsDirectory(dir, pkg2, function(err5, n, pkg3) { + if (err5) + return cb2(err5); + if (n) + return cb2(null, n, pkg3); + loadAsFile(path.join(x2, "index"), pkg3, cb2); + }); + }); + return; + } + loadAsFile(path.join(x2, "/index"), pkg, cb2); + }); + }); + }); + } + function processDirs(cb2, dirs) { + if (dirs.length === 0) + return cb2(null, void 0); + var dir = dirs[0]; + isDirectory(path.dirname(dir), isdir); + function isdir(err2, isdir2) { + if (err2) + return cb2(err2); + if (!isdir2) + return processDirs(cb2, dirs.slice(1)); + loadAsFile(dir, opts.package, onfile2); + } + function onfile2(err2, m, pkg) { + if (err2) + return cb2(err2); + if (m) + return cb2(null, m, pkg); + loadAsDirectory(dir, opts.package, ondir); + } + function ondir(err2, n, pkg) { + if (err2) + return cb2(err2); + if (n) + return cb2(null, n, pkg); + processDirs(cb2, dirs.slice(1)); + } + } + function loadNodeModules(x2, start, cb2) { + var thunk = function() { + return getPackageCandidates(x2, start, opts); + }; + processDirs( + cb2, + packageIterator ? packageIterator(x2, start, thunk, opts) : thunk() + ); + } + }; + } +}); + +// node_modules/resolve/lib/core.json +var require_core2 = __commonJS({ + "node_modules/resolve/lib/core.json"(exports2, module2) { + module2.exports = { + assert: true, + "node:assert": [">= 14.18 && < 15", ">= 16"], + "assert/strict": ">= 15", + "node:assert/strict": ">= 16", + async_hooks: ">= 8", + "node:async_hooks": [">= 14.18 && < 15", ">= 16"], + buffer_ieee754: ">= 0.5 && < 0.9.7", + buffer: true, + "node:buffer": [">= 14.18 && < 15", ">= 16"], + child_process: true, + "node:child_process": [">= 14.18 && < 15", ">= 16"], + cluster: ">= 0.5", + "node:cluster": [">= 14.18 && < 15", ">= 16"], + console: true, + "node:console": [">= 14.18 && < 15", ">= 16"], + constants: true, + "node:constants": [">= 14.18 && < 15", ">= 16"], + crypto: true, + "node:crypto": [">= 14.18 && < 15", ">= 16"], + _debug_agent: ">= 1 && < 8", + _debugger: "< 8", + dgram: true, + "node:dgram": [">= 14.18 && < 15", ">= 16"], + diagnostics_channel: [">= 14.17 && < 15", ">= 15.1"], + "node:diagnostics_channel": [">= 14.18 && < 15", ">= 16"], + dns: true, + "node:dns": [">= 14.18 && < 15", ">= 16"], + "dns/promises": ">= 15", + "node:dns/promises": ">= 16", + domain: ">= 0.7.12", + "node:domain": [">= 14.18 && < 15", ">= 16"], + events: true, + "node:events": [">= 14.18 && < 15", ">= 16"], + freelist: "< 6", + fs: true, + "node:fs": [">= 14.18 && < 15", ">= 16"], + "fs/promises": [">= 10 && < 10.1", ">= 14"], + "node:fs/promises": [">= 14.18 && < 15", ">= 16"], + _http_agent: ">= 0.11.1", + "node:_http_agent": [">= 14.18 && < 15", ">= 16"], + _http_client: ">= 0.11.1", + "node:_http_client": [">= 14.18 && < 15", ">= 16"], + _http_common: ">= 0.11.1", + "node:_http_common": [">= 14.18 && < 15", ">= 16"], + _http_incoming: ">= 0.11.1", + "node:_http_incoming": [">= 14.18 && < 15", ">= 16"], + _http_outgoing: ">= 0.11.1", + "node:_http_outgoing": [">= 14.18 && < 15", ">= 16"], + _http_server: ">= 0.11.1", + "node:_http_server": [">= 14.18 && < 15", ">= 16"], + http: true, + "node:http": [">= 14.18 && < 15", ">= 16"], + http2: ">= 8.8", + "node:http2": [">= 14.18 && < 15", ">= 16"], + https: true, + "node:https": [">= 14.18 && < 15", ">= 16"], + inspector: ">= 8", + "node:inspector": [">= 14.18 && < 15", ">= 16"], + _linklist: "< 8", + module: true, + "node:module": [">= 14.18 && < 15", ">= 16"], + net: true, + "node:net": [">= 14.18 && < 15", ">= 16"], + "node-inspect/lib/_inspect": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_client": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_repl": ">= 7.6 && < 12", + os: true, + "node:os": [">= 14.18 && < 15", ">= 16"], + path: true, + "node:path": [">= 14.18 && < 15", ">= 16"], + "path/posix": ">= 15.3", + "node:path/posix": ">= 16", + "path/win32": ">= 15.3", + "node:path/win32": ">= 16", + perf_hooks: ">= 8.5", + "node:perf_hooks": [">= 14.18 && < 15", ">= 16"], + process: ">= 1", + "node:process": [">= 14.18 && < 15", ">= 16"], + punycode: ">= 0.5", + "node:punycode": [">= 14.18 && < 15", ">= 16"], + querystring: true, + "node:querystring": [">= 14.18 && < 15", ">= 16"], + readline: true, + "node:readline": [">= 14.18 && < 15", ">= 16"], + "readline/promises": ">= 17", + "node:readline/promises": ">= 17", + repl: true, + "node:repl": [">= 14.18 && < 15", ">= 16"], + smalloc: ">= 0.11.5 && < 3", + _stream_duplex: ">= 0.9.4", + "node:_stream_duplex": [">= 14.18 && < 15", ">= 16"], + _stream_transform: ">= 0.9.4", + "node:_stream_transform": [">= 14.18 && < 15", ">= 16"], + _stream_wrap: ">= 1.4.1", + "node:_stream_wrap": [">= 14.18 && < 15", ">= 16"], + _stream_passthrough: ">= 0.9.4", + "node:_stream_passthrough": [">= 14.18 && < 15", ">= 16"], + _stream_readable: ">= 0.9.4", + "node:_stream_readable": [">= 14.18 && < 15", ">= 16"], + _stream_writable: ">= 0.9.4", + "node:_stream_writable": [">= 14.18 && < 15", ">= 16"], + stream: true, + "node:stream": [">= 14.18 && < 15", ">= 16"], + "stream/consumers": ">= 16.7", + "node:stream/consumers": ">= 16.7", + "stream/promises": ">= 15", + "node:stream/promises": ">= 16", + "stream/web": ">= 16.5", + "node:stream/web": ">= 16.5", + string_decoder: true, + "node:string_decoder": [">= 14.18 && < 15", ">= 16"], + sys: [">= 0.4 && < 0.7", ">= 0.8"], + "node:sys": [">= 14.18 && < 15", ">= 16"], + "node:test": ">= 18", + timers: true, + "node:timers": [">= 14.18 && < 15", ">= 16"], + "timers/promises": ">= 15", + "node:timers/promises": ">= 16", + _tls_common: ">= 0.11.13", + "node:_tls_common": [">= 14.18 && < 15", ">= 16"], + _tls_legacy: ">= 0.11.3 && < 10", + _tls_wrap: ">= 0.11.3", + "node:_tls_wrap": [">= 14.18 && < 15", ">= 16"], + tls: true, + "node:tls": [">= 14.18 && < 15", ">= 16"], + trace_events: ">= 10", + "node:trace_events": [">= 14.18 && < 15", ">= 16"], + tty: true, + "node:tty": [">= 14.18 && < 15", ">= 16"], + url: true, + "node:url": [">= 14.18 && < 15", ">= 16"], + util: true, + "node:util": [">= 14.18 && < 15", ">= 16"], + "util/types": ">= 15.3", + "node:util/types": ">= 16", + "v8/tools/arguments": ">= 10 && < 12", + "v8/tools/codemap": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/consarray": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/csvparser": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/logreader": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/profile_view": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/splaytree": [">= 4.4 && < 5", ">= 5.2 && < 12"], + v8: ">= 1", + "node:v8": [">= 14.18 && < 15", ">= 16"], + vm: true, + "node:vm": [">= 14.18 && < 15", ">= 16"], + wasi: ">= 13.4 && < 13.5", + worker_threads: ">= 11.7", + "node:worker_threads": [">= 14.18 && < 15", ">= 16"], + zlib: ">= 0.5", + "node:zlib": [">= 14.18 && < 15", ">= 16"] + }; + } +}); + +// node_modules/resolve/lib/core.js +var require_core3 = __commonJS({ + "node_modules/resolve/lib/core.js"(exports2, module2) { + var current = process.versions && process.versions.node && process.versions.node.split(".") || []; + function specifierIncluded(specifier) { + var parts = specifier.split(" "); + var op = parts.length > 1 ? parts[0] : "="; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split("."); + for (var i = 0; i < 3; ++i) { + var cur = parseInt(current[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; + } + if (op === "<") { + return cur < ver; + } else if (op === ">=") { + return cur >= ver; + } + return false; + } + return op === ">="; + } + function matchesRange(range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { + return false; + } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(specifiers[i])) { + return false; + } + } + return true; + } + function versionIncluded(specifierValue) { + if (typeof specifierValue === "boolean") { + return specifierValue; + } + if (specifierValue && typeof specifierValue === "object") { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(specifierValue[i])) { + return true; + } + } + return false; + } + return matchesRange(specifierValue); + } + var data = require_core2(); + var core = {}; + for (mod in data) { + if (Object.prototype.hasOwnProperty.call(data, mod)) { + core[mod] = versionIncluded(data[mod]); + } + } + var mod; + module2.exports = core; + } +}); + +// node_modules/resolve/lib/is-core.js +var require_is_core = __commonJS({ + "node_modules/resolve/lib/is-core.js"(exports2, module2) { + var isCoreModule = require_is_core_module(); + module2.exports = function isCore(x) { + return isCoreModule(x); + }; + } +}); + +// node_modules/resolve/lib/sync.js +var require_sync = __commonJS({ + "node_modules/resolve/lib/sync.js"(exports2, module2) { + var isCore = require_is_core_module(); + var fs = require("fs"); + var path = require("path"); + var getHomedir = require_homedir(); + var caller = require_caller(); + var nodeModulesPaths = require_node_modules_paths(); + var normalizeOptions = require_normalize_options(); + var realpathFS = process.platform !== "win32" && fs.realpathSync && typeof fs.realpathSync.native === "function" ? fs.realpathSync.native : fs.realpathSync; + var homedir = getHomedir(); + var defaultPaths = function() { + return [ + path.join(homedir, ".node_modules"), + path.join(homedir, ".node_libraries") + ]; + }; + var defaultIsFile = function isFile(file) { + try { + var stat = fs.statSync(file, { throwIfNoEntry: false }); + } catch (e) { + if (e && (e.code === "ENOENT" || e.code === "ENOTDIR")) + return false; + throw e; + } + return !!stat && (stat.isFile() || stat.isFIFO()); + }; + var defaultIsDir = function isDirectory(dir) { + try { + var stat = fs.statSync(dir, { throwIfNoEntry: false }); + } catch (e) { + if (e && (e.code === "ENOENT" || e.code === "ENOTDIR")) + return false; + throw e; + } + return !!stat && stat.isDirectory(); + }; + var defaultRealpathSync = function realpathSync(x) { + try { + return realpathFS(x); + } catch (realpathErr) { + if (realpathErr.code !== "ENOENT") { + throw realpathErr; + } + } + return x; + }; + var maybeRealpathSync = function maybeRealpathSync2(realpathSync, x, opts) { + if (opts && opts.preserveSymlinks === false) { + return realpathSync(x); + } + return x; + }; + var defaultReadPackageSync = function defaultReadPackageSync2(readFileSync, pkgfile) { + var body = readFileSync(pkgfile); + try { + var pkg = JSON.parse(body); + return pkg; + } catch (jsonErr) { + } + }; + var getPackageCandidates = function getPackageCandidates2(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path.join(dirs[i], x); + } + return dirs; + }; + module2.exports = function resolveSync(x, options) { + if (typeof x !== "string") { + throw new TypeError("Path must be a string."); + } + var opts = normalizeOptions(x, options); + var isFile = opts.isFile || defaultIsFile; + var readFileSync = opts.readFileSync || fs.readFileSync; + var isDirectory = opts.isDirectory || defaultIsDir; + var realpathSync = opts.realpathSync || defaultRealpathSync; + var readPackageSync = opts.readPackageSync || defaultReadPackageSync; + if (opts.readFileSync && opts.readPackageSync) { + throw new TypeError("`readFileSync` and `readPackageSync` are mutually exclusive."); + } + var packageIterator = opts.packageIterator; + var extensions = opts.extensions || [".js"]; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path.dirname(caller()); + var parent = opts.filename || basedir; + opts.paths = opts.paths || defaultPaths(); + var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts); + if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) { + var res = path.resolve(absoluteStart, x); + if (x === "." || x === ".." || x.slice(-1) === "/") + res += "/"; + var m = loadAsFileSync(res) || loadAsDirectorySync(res); + if (m) + return maybeRealpathSync(realpathSync, m, opts); + } else if (includeCoreModules && isCore(x)) { + return x; + } else { + var n = loadNodeModulesSync(x, absoluteStart); + if (n) + return maybeRealpathSync(realpathSync, n, opts); + } + var err = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + err.code = "MODULE_NOT_FOUND"; + throw err; + function loadAsFileSync(x2) { + var pkg = loadpkg(path.dirname(x2)); + if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) { + var rfile = path.relative(pkg.dir, x2); + var r = opts.pathFilter(pkg.pkg, x2, rfile); + if (r) { + x2 = path.resolve(pkg.dir, r); + } + } + if (isFile(x2)) { + return x2; + } + for (var i = 0; i < extensions.length; i++) { + var file = x2 + extensions[i]; + if (isFile(file)) { + return file; + } + } + } + function loadpkg(dir) { + if (dir === "" || dir === "/") + return; + if (process.platform === "win32" && /^\w:[/\\]*$/.test(dir)) { + return; + } + if (/[/\\]node_modules[/\\]*$/.test(dir)) + return; + var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), "package.json"); + if (!isFile(pkgfile)) { + return loadpkg(path.dirname(dir)); + } + var pkg = readPackageSync(readFileSync, pkgfile); + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, dir); + } + return { pkg, dir }; + } + function loadAsDirectorySync(x2) { + var pkgfile = path.join(maybeRealpathSync(realpathSync, x2, opts), "/package.json"); + if (isFile(pkgfile)) { + try { + var pkg = readPackageSync(readFileSync, pkgfile); + } catch (e) { + } + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, x2); + } + if (pkg && pkg.main) { + if (typeof pkg.main !== "string") { + var mainError = new TypeError("package \u201C" + pkg.name + "\u201D `main` must be a string"); + mainError.code = "INVALID_PACKAGE_MAIN"; + throw mainError; + } + if (pkg.main === "." || pkg.main === "./") { + pkg.main = "index"; + } + try { + var m2 = loadAsFileSync(path.resolve(x2, pkg.main)); + if (m2) + return m2; + var n2 = loadAsDirectorySync(path.resolve(x2, pkg.main)); + if (n2) + return n2; + } catch (e) { + } + } + } + return loadAsFileSync(path.join(x2, "/index")); + } + function loadNodeModulesSync(x2, start) { + var thunk = function() { + return getPackageCandidates(x2, start, opts); + }; + var dirs = packageIterator ? packageIterator(x2, start, thunk, opts) : thunk(); + for (var i = 0; i < dirs.length; i++) { + var dir = dirs[i]; + if (isDirectory(path.dirname(dir))) { + var m2 = loadAsFileSync(dir); + if (m2) + return m2; + var n2 = loadAsDirectorySync(dir); + if (n2) + return n2; + } + } + } + }; + } +}); + +// node_modules/resolve/index.js +var require_resolve = __commonJS({ + "node_modules/resolve/index.js"(exports2, module2) { + var async = require_async(); + async.core = require_core3(); + async.isCore = require_is_core(); + async.sync = require_sync(); + module2.exports = async; + } +}); + +// node_modules/postcss-import/lib/resolve-id.js +var require_resolve_id = __commonJS({ + "node_modules/postcss-import/lib/resolve-id.js"(exports2, module2) { + "use strict"; + var resolve = require_resolve(); + var moduleDirectories = ["web_modules", "node_modules"]; + function resolveModule(id, opts) { + return new Promise((res, rej) => { + resolve(id, opts, (err, path) => err ? rej(err) : res(path)); + }); + } + module2.exports = function(id, base, options) { + const paths = options.path; + const resolveOpts = { + basedir: base, + moduleDirectory: moduleDirectories.concat(options.addModulesDirectories), + paths, + extensions: [".css"], + packageFilter: function processPackage(pkg) { + if (pkg.style) + pkg.main = pkg.style; + else if (!pkg.main || !/\.css$/.test(pkg.main)) + pkg.main = "index.css"; + return pkg; + }, + preserveSymlinks: false + }; + return resolveModule(`./${id}`, resolveOpts).catch(() => resolveModule(id, resolveOpts)).catch(() => { + if (paths.indexOf(base) === -1) + paths.unshift(base); + throw new Error( + `Failed to find '${id}' + in [ + ${paths.join(",\n ")} + ]` + ); + }); + }; + } +}); + +// node_modules/pify/index.js +var require_pify = __commonJS({ + "node_modules/pify/index.js"(exports2, module2) { + "use strict"; + var processFn = function(fn, P, opts) { + return function() { + var that = this; + var args = new Array(arguments.length); + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + return new P(function(resolve, reject) { + args.push(function(err, result) { + if (err) { + reject(err); + } else if (opts.multiArgs) { + var results = new Array(arguments.length - 1); + for (var i2 = 1; i2 < arguments.length; i2++) { + results[i2 - 1] = arguments[i2]; + } + resolve(results); + } else { + resolve(result); + } + }); + fn.apply(that, args); + }); + }; + }; + var pify = module2.exports = function(obj, P, opts) { + if (typeof P !== "function") { + opts = P; + P = Promise; + } + opts = opts || {}; + opts.exclude = opts.exclude || [/.+Sync$/]; + var filter = function(key) { + var match = function(pattern) { + return typeof pattern === "string" ? key === pattern : pattern.test(key); + }; + return opts.include ? opts.include.some(match) : !opts.exclude.some(match); + }; + var ret = typeof obj === "function" ? function() { + if (opts.excludeMain) { + return obj.apply(this, arguments); + } + return processFn(obj, P, opts).apply(this, arguments); + } : {}; + return Object.keys(obj).reduce(function(ret2, key) { + var x = obj[key]; + ret2[key] = typeof x === "function" && filter(key) ? processFn(x, P, opts) : x; + return ret2; + }, ret); + }; + pify.all = pify; + } +}); + +// node_modules/read-cache/index.js +var require_read_cache = __commonJS({ + "node_modules/read-cache/index.js"(exports2, module2) { + var fs = require("fs"); + var path = require("path"); + var pify = require_pify(); + var stat = pify(fs.stat); + var readFile = pify(fs.readFile); + var resolve = path.resolve; + var cache = /* @__PURE__ */ Object.create(null); + function convert(content, encoding) { + if (Buffer.isEncoding(encoding)) { + return content.toString(encoding); + } + return content; + } + module2.exports = function(path2, encoding) { + path2 = resolve(path2); + return stat(path2).then(function(stats) { + var item = cache[path2]; + if (item && item.mtime.getTime() === stats.mtime.getTime()) { + return convert(item.content, encoding); + } + return readFile(path2).then(function(data) { + cache[path2] = { + mtime: stats.mtime, + content: data + }; + return convert(data, encoding); + }); + }).catch(function(err) { + cache[path2] = null; + return Promise.reject(err); + }); + }; + module2.exports.sync = function(path2, encoding) { + path2 = resolve(path2); + try { + var stats = fs.statSync(path2); + var item = cache[path2]; + if (item && item.mtime.getTime() === stats.mtime.getTime()) { + return convert(item.content, encoding); + } + var data = fs.readFileSync(path2); + cache[path2] = { + mtime: stats.mtime, + content: data + }; + return convert(data, encoding); + } catch (err) { + cache[path2] = null; + throw err; + } + }; + module2.exports.get = function(path2, encoding) { + path2 = resolve(path2); + if (cache[path2]) { + return convert(cache[path2].content, encoding); + } + return null; + }; + module2.exports.clear = function() { + cache = /* @__PURE__ */ Object.create(null); + }; + } +}); + +// node_modules/postcss-import/lib/load-content.js +var require_load_content = __commonJS({ + "node_modules/postcss-import/lib/load-content.js"(exports2, module2) { + "use strict"; + var readCache = require_read_cache(); + module2.exports = (filename) => readCache(filename, "utf-8"); + } +}); + +// node_modules/postcss-import/lib/process-content.js +var require_process_content = __commonJS({ + "node_modules/postcss-import/lib/process-content.js"(exports2, module2) { + "use strict"; + var path = require("path"); + var sugarss; + module2.exports = function processContent(result, content, filename, options, postcss) { + const { plugins } = options; + const ext = path.extname(filename); + const parserList = []; + if (ext === ".sss") { + if (!sugarss) { + try { + sugarss = require("sugarss"); + } catch { + } + } + if (sugarss) + return runPostcss(postcss, content, filename, plugins, [sugarss]); + } + if (result.opts.syntax && result.opts.syntax.parse) { + parserList.push(result.opts.syntax.parse); + } + if (result.opts.parser) + parserList.push(result.opts.parser); + parserList.push(null); + return runPostcss(postcss, content, filename, plugins, parserList); + }; + function runPostcss(postcss, content, filename, plugins, parsers, index) { + if (!index) + index = 0; + return postcss(plugins).process(content, { + from: filename, + parser: parsers[index] + }).catch((err) => { + index++; + if (index === parsers.length) + throw err; + return runPostcss(postcss, content, filename, plugins, parsers, index); + }); + } + } +}); + +// node_modules/postcss-value-parser/lib/parse.js +var require_parse2 = __commonJS({ + "node_modules/postcss-value-parser/lib/parse.js"(exports2, module2) { + var openParentheses = "(".charCodeAt(0); + var closeParentheses = ")".charCodeAt(0); + var singleQuote = "'".charCodeAt(0); + var doubleQuote = '"'.charCodeAt(0); + var backslash = "\\".charCodeAt(0); + var slash = "/".charCodeAt(0); + var comma = ",".charCodeAt(0); + var colon = ":".charCodeAt(0); + var star = "*".charCodeAt(0); + var uLower = "u".charCodeAt(0); + var uUpper = "U".charCodeAt(0); + var plus = "+".charCodeAt(0); + var isUnicodeRange = /^[a-f0-9?-]+$/i; + module2.exports = function(input) { + var tokens = []; + var value = input; + var next, quote, prev, token, escape, escapePos, whitespacePos, parenthesesOpenPos; + var pos = 0; + var code = value.charCodeAt(pos); + var max = value.length; + var stack = [{ nodes: tokens }]; + var balanced = 0; + var parent; + var name = ""; + var before = ""; + var after = ""; + while (pos < max) { + if (code <= 32) { + next = pos; + do { + next += 1; + code = value.charCodeAt(next); + } while (code <= 32); + token = value.slice(pos, next); + prev = tokens[tokens.length - 1]; + if (code === closeParentheses && balanced) { + after = token; + } else if (prev && prev.type === "div") { + prev.after = token; + prev.sourceEndIndex += token.length; + } else if (code === comma || code === colon || code === slash && value.charCodeAt(next + 1) !== star && (!parent || parent && parent.type === "function" && parent.value !== "calc")) { + before = token; + } else { + tokens.push({ + type: "space", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + } + pos = next; + } else if (code === singleQuote || code === doubleQuote) { + next = pos; + quote = code === singleQuote ? "'" : '"'; + token = { + type: "string", + sourceIndex: pos, + quote + }; + do { + escape = false; + next = value.indexOf(quote, next + 1); + if (~next) { + escapePos = next; + while (value.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escape = !escape; + } + } else { + value += quote; + next = value.length - 1; + token.unclosed = true; + } + } while (escape); + token.value = value.slice(pos + 1, next); + token.sourceEndIndex = token.unclosed ? next : next + 1; + tokens.push(token); + pos = next + 1; + code = value.charCodeAt(pos); + } else if (code === slash && value.charCodeAt(pos + 1) === star) { + next = value.indexOf("*/", pos); + token = { + type: "comment", + sourceIndex: pos, + sourceEndIndex: next + 2 + }; + if (next === -1) { + token.unclosed = true; + next = value.length; + token.sourceEndIndex = next; + } + token.value = value.slice(pos + 2, next); + tokens.push(token); + pos = next + 2; + code = value.charCodeAt(pos); + } else if ((code === slash || code === star) && parent && parent.type === "function" && parent.value === "calc") { + token = value[pos]; + tokens.push({ + type: "word", + sourceIndex: pos - before.length, + sourceEndIndex: pos + token.length, + value: token + }); + pos += 1; + code = value.charCodeAt(pos); + } else if (code === slash || code === comma || code === colon) { + token = value[pos]; + tokens.push({ + type: "div", + sourceIndex: pos - before.length, + sourceEndIndex: pos + token.length, + value: token, + before, + after: "" + }); + before = ""; + pos += 1; + code = value.charCodeAt(pos); + } else if (openParentheses === code) { + next = pos; + do { + next += 1; + code = value.charCodeAt(next); + } while (code <= 32); + parenthesesOpenPos = pos; + token = { + type: "function", + sourceIndex: pos - name.length, + value: name, + before: value.slice(parenthesesOpenPos + 1, next) + }; + pos = next; + if (name === "url" && code !== singleQuote && code !== doubleQuote) { + next -= 1; + do { + escape = false; + next = value.indexOf(")", next + 1); + if (~next) { + escapePos = next; + while (value.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escape = !escape; + } + } else { + value += ")"; + next = value.length - 1; + token.unclosed = true; + } + } while (escape); + whitespacePos = next; + do { + whitespacePos -= 1; + code = value.charCodeAt(whitespacePos); + } while (code <= 32); + if (parenthesesOpenPos < whitespacePos) { + if (pos !== whitespacePos + 1) { + token.nodes = [ + { + type: "word", + sourceIndex: pos, + sourceEndIndex: whitespacePos + 1, + value: value.slice(pos, whitespacePos + 1) + } + ]; + } else { + token.nodes = []; + } + if (token.unclosed && whitespacePos + 1 !== next) { + token.after = ""; + token.nodes.push({ + type: "space", + sourceIndex: whitespacePos + 1, + sourceEndIndex: next, + value: value.slice(whitespacePos + 1, next) + }); + } else { + token.after = value.slice(whitespacePos + 1, next); + token.sourceEndIndex = next; + } + } else { + token.after = ""; + token.nodes = []; + } + pos = next + 1; + token.sourceEndIndex = token.unclosed ? next : pos; + code = value.charCodeAt(pos); + tokens.push(token); + } else { + balanced += 1; + token.after = ""; + token.sourceEndIndex = pos + 1; + tokens.push(token); + stack.push(token); + tokens = token.nodes = []; + parent = token; + } + name = ""; + } else if (closeParentheses === code && balanced) { + pos += 1; + code = value.charCodeAt(pos); + parent.after = after; + parent.sourceEndIndex += after.length; + after = ""; + balanced -= 1; + stack[stack.length - 1].sourceEndIndex = pos; + stack.pop(); + parent = stack[balanced]; + tokens = parent.nodes; + } else { + next = pos; + do { + if (code === backslash) { + next += 1; + } + next += 1; + code = value.charCodeAt(next); + } while (next < max && !(code <= 32 || code === singleQuote || code === doubleQuote || code === comma || code === colon || code === slash || code === openParentheses || code === star && parent && parent.type === "function" && parent.value === "calc" || code === slash && parent.type === "function" && parent.value === "calc" || code === closeParentheses && balanced)); + token = value.slice(pos, next); + if (openParentheses === code) { + name = token; + } else if ((uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) && plus === token.charCodeAt(1) && isUnicodeRange.test(token.slice(2))) { + tokens.push({ + type: "unicode-range", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + } else { + tokens.push({ + type: "word", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + } + pos = next; + } + } + for (pos = stack.length - 1; pos; pos -= 1) { + stack[pos].unclosed = true; + stack[pos].sourceEndIndex = value.length; + } + return stack[0].nodes; + }; + } +}); + +// node_modules/postcss-value-parser/lib/walk.js +var require_walk = __commonJS({ + "node_modules/postcss-value-parser/lib/walk.js"(exports2, module2) { + module2.exports = function walk(nodes, cb, bubble) { + var i, max, node, result; + for (i = 0, max = nodes.length; i < max; i += 1) { + node = nodes[i]; + if (!bubble) { + result = cb(node, i, nodes); + } + if (result !== false && node.type === "function" && Array.isArray(node.nodes)) { + walk(node.nodes, cb, bubble); + } + if (bubble) { + cb(node, i, nodes); + } + } + }; + } +}); + +// node_modules/postcss-value-parser/lib/stringify.js +var require_stringify2 = __commonJS({ + "node_modules/postcss-value-parser/lib/stringify.js"(exports2, module2) { + function stringifyNode(node, custom) { + var type = node.type; + var value = node.value; + var buf; + var customResult; + if (custom && (customResult = custom(node)) !== void 0) { + return customResult; + } else if (type === "word" || type === "space") { + return value; + } else if (type === "string") { + buf = node.quote || ""; + return buf + value + (node.unclosed ? "" : buf); + } else if (type === "comment") { + return "/*" + value + (node.unclosed ? "" : "*/"); + } else if (type === "div") { + return (node.before || "") + value + (node.after || ""); + } else if (Array.isArray(node.nodes)) { + buf = stringify(node.nodes, custom); + if (type !== "function") { + return buf; + } + return value + "(" + (node.before || "") + buf + (node.after || "") + (node.unclosed ? "" : ")"); + } + return value; + } + function stringify(nodes, custom) { + var result, i; + if (Array.isArray(nodes)) { + result = ""; + for (i = nodes.length - 1; ~i; i -= 1) { + result = stringifyNode(nodes[i], custom) + result; + } + return result; + } + return stringifyNode(nodes, custom); + } + module2.exports = stringify; + } +}); + +// node_modules/postcss-value-parser/lib/unit.js +var require_unit = __commonJS({ + "node_modules/postcss-value-parser/lib/unit.js"(exports2, module2) { + var minus = "-".charCodeAt(0); + var plus = "+".charCodeAt(0); + var dot = ".".charCodeAt(0); + var exp = "e".charCodeAt(0); + var EXP = "E".charCodeAt(0); + function likeNumber(value) { + var code = value.charCodeAt(0); + var nextCode; + if (code === plus || code === minus) { + nextCode = value.charCodeAt(1); + if (nextCode >= 48 && nextCode <= 57) { + return true; + } + var nextNextCode = value.charCodeAt(2); + if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) { + return true; + } + return false; + } + if (code === dot) { + nextCode = value.charCodeAt(1); + if (nextCode >= 48 && nextCode <= 57) { + return true; + } + return false; + } + if (code >= 48 && code <= 57) { + return true; + } + return false; + } + module2.exports = function(value) { + var pos = 0; + var length = value.length; + var code; + var nextCode; + var nextNextCode; + if (length === 0 || !likeNumber(value)) { + return false; + } + code = value.charCodeAt(pos); + if (code === plus || code === minus) { + pos++; + } + while (pos < length) { + code = value.charCodeAt(pos); + if (code < 48 || code > 57) { + break; + } + pos += 1; + } + code = value.charCodeAt(pos); + nextCode = value.charCodeAt(pos + 1); + if (code === dot && nextCode >= 48 && nextCode <= 57) { + pos += 2; + while (pos < length) { + code = value.charCodeAt(pos); + if (code < 48 || code > 57) { + break; + } + pos += 1; + } + } + code = value.charCodeAt(pos); + nextCode = value.charCodeAt(pos + 1); + nextNextCode = value.charCodeAt(pos + 2); + if ((code === exp || code === EXP) && (nextCode >= 48 && nextCode <= 57 || (nextCode === plus || nextCode === minus) && nextNextCode >= 48 && nextNextCode <= 57)) { + pos += nextCode === plus || nextCode === minus ? 3 : 2; + while (pos < length) { + code = value.charCodeAt(pos); + if (code < 48 || code > 57) { + break; + } + pos += 1; + } + } + return { + number: value.slice(0, pos), + unit: value.slice(pos) + }; + }; + } +}); + +// node_modules/postcss-value-parser/lib/index.js +var require_lib = __commonJS({ + "node_modules/postcss-value-parser/lib/index.js"(exports2, module2) { + var parse = require_parse2(); + var walk = require_walk(); + var stringify = require_stringify2(); + function ValueParser(value) { + if (this instanceof ValueParser) { + this.nodes = parse(value); + return this; + } + return new ValueParser(value); + } + ValueParser.prototype.toString = function() { + return Array.isArray(this.nodes) ? stringify(this.nodes) : ""; + }; + ValueParser.prototype.walk = function(cb, bubble) { + walk(this.nodes, cb, bubble); + return this; + }; + ValueParser.unit = require_unit(); + ValueParser.walk = walk; + ValueParser.stringify = stringify; + module2.exports = ValueParser; + } +}); + +// node_modules/postcss-import/lib/parse-statements.js +var require_parse_statements = __commonJS({ + "node_modules/postcss-import/lib/parse-statements.js"(exports2, module2) { + "use strict"; + var valueParser = require_lib(); + var { stringify } = valueParser; + function split(params, start) { + const list = []; + const last = params.reduce((item, node, index) => { + if (index < start) + return ""; + if (node.type === "div" && node.value === ",") { + list.push(item); + return ""; + } + return item + stringify(node); + }, ""); + list.push(last); + return list; + } + module2.exports = function(result, styles) { + const statements = []; + let nodes = []; + styles.each((node) => { + let stmt; + if (node.type === "atrule") { + if (node.name === "import") + stmt = parseImport(result, node); + else if (node.name === "media") + stmt = parseMedia(result, node); + else if (node.name === "charset") + stmt = parseCharset(result, node); + } + if (stmt) { + if (nodes.length) { + statements.push({ + type: "nodes", + nodes, + media: [], + layer: [] + }); + nodes = []; + } + statements.push(stmt); + } else + nodes.push(node); + }); + if (nodes.length) { + statements.push({ + type: "nodes", + nodes, + media: [], + layer: [] + }); + } + return statements; + }; + function parseMedia(result, atRule) { + const params = valueParser(atRule.params).nodes; + return { + type: "media", + node: atRule, + media: split(params, 0), + layer: [] + }; + } + function parseCharset(result, atRule) { + if (atRule.prev()) { + return result.warn("@charset must precede all other statements", { + node: atRule + }); + } + return { + type: "charset", + node: atRule, + media: [], + layer: [] + }; + } + function parseImport(result, atRule) { + let prev = atRule.prev(); + if (prev) { + do { + if (prev.type !== "comment" && (prev.type !== "atrule" || prev.name !== "import" && prev.name !== "charset" && !(prev.name === "layer" && !prev.nodes))) { + return result.warn( + "@import must precede all other statements (besides @charset or empty @layer)", + { node: atRule } + ); + } + prev = prev.prev(); + } while (prev); + } + if (atRule.nodes) { + return result.warn( + "It looks like you didn't end your @import statement correctly. Child nodes are attached to it.", + { node: atRule } + ); + } + const params = valueParser(atRule.params).nodes; + const stmt = { + type: "import", + node: atRule, + media: [], + layer: [] + }; + if (!params.length || (params[0].type !== "string" || !params[0].value) && (params[0].type !== "function" || params[0].value !== "url" || !params[0].nodes.length || !params[0].nodes[0].value)) { + return result.warn(`Unable to find uri in '${atRule.toString()}'`, { + node: atRule + }); + } + if (params[0].type === "string") + stmt.uri = params[0].value; + else + stmt.uri = params[0].nodes[0].value; + stmt.fullUri = stringify(params[0]); + let remainder = params; + if (remainder.length > 2) { + if ((remainder[2].type === "word" || remainder[2].type === "function") && remainder[2].value === "layer") { + if (remainder[1].type !== "space") { + return result.warn("Invalid import layer statement", { node: atRule }); + } + if (remainder[2].nodes) { + stmt.layer = [stringify(remainder[2].nodes)]; + } else { + stmt.layer = [""]; + } + remainder = remainder.slice(2); + } + } + if (remainder.length > 2) { + if (remainder[1].type !== "space") { + return result.warn("Invalid import media statement", { node: atRule }); + } + stmt.media = split(remainder, 2); + } + return stmt; + } + } +}); + +// node_modules/postcss-import/index.js +var require_postcss_import = __commonJS({ + "node_modules/postcss-import/index.js"(exports2, module2) { + "use strict"; + var path = require("path"); + var joinMedia = require_join_media(); + var joinLayer = require_join_layer(); + var resolveId = require_resolve_id(); + var loadContent = require_load_content(); + var processContent = require_process_content(); + var parseStatements = require_parse_statements(); + function AtImport(options) { + options = { + root: process.cwd(), + path: [], + skipDuplicates: true, + resolve: resolveId, + load: loadContent, + plugins: [], + addModulesDirectories: [], + ...options + }; + options.root = path.resolve(options.root); + if (typeof options.path === "string") + options.path = [options.path]; + if (!Array.isArray(options.path)) + options.path = []; + options.path = options.path.map((p) => path.resolve(options.root, p)); + return { + postcssPlugin: "postcss-import", + Once(styles, { result, atRule, postcss }) { + const state = { + importedFiles: {}, + hashFiles: {} + }; + if (styles.source && styles.source.input && styles.source.input.file) { + state.importedFiles[styles.source.input.file] = {}; + } + if (options.plugins && !Array.isArray(options.plugins)) { + throw new Error("plugins option must be an array"); + } + return parseStyles(result, styles, options, state, [], []).then( + (bundle) => { + applyRaws(bundle); + applyMedia(bundle); + applyStyles(bundle, styles); + } + ); + function applyRaws(bundle) { + bundle.forEach((stmt, index) => { + if (index === 0) + return; + if (stmt.parent) { + const { before } = stmt.parent.node.raws; + if (stmt.type === "nodes") + stmt.nodes[0].raws.before = before; + else + stmt.node.raws.before = before; + } else if (stmt.type === "nodes") { + stmt.nodes[0].raws.before = stmt.nodes[0].raws.before || "\n"; + } + }); + } + function applyMedia(bundle) { + bundle.forEach((stmt) => { + if (!stmt.media.length && !stmt.layer.length || stmt.type === "charset") { + return; + } + if (stmt.type === "import") { + stmt.node.params = `${stmt.fullUri} ${stmt.media.join(", ")}`; + } else if (stmt.type === "media") { + stmt.node.params = stmt.media.join(", "); + } else { + const { nodes } = stmt; + const { parent } = nodes[0]; + let outerAtRule; + let innerAtRule; + if (stmt.media.length && stmt.layer.length) { + const mediaNode = atRule({ + name: "media", + params: stmt.media.join(", "), + source: parent.source + }); + const layerNode = atRule({ + name: "layer", + params: stmt.layer.filter((layer) => layer !== "").join("."), + source: parent.source + }); + mediaNode.append(layerNode); + innerAtRule = layerNode; + outerAtRule = mediaNode; + } else if (stmt.media.length) { + const mediaNode = atRule({ + name: "media", + params: stmt.media.join(", "), + source: parent.source + }); + innerAtRule = mediaNode; + outerAtRule = mediaNode; + } else if (stmt.layer.length) { + const layerNode = atRule({ + name: "layer", + params: stmt.layer.filter((layer) => layer !== "").join("."), + source: parent.source + }); + innerAtRule = layerNode; + outerAtRule = layerNode; + } + parent.insertBefore(nodes[0], outerAtRule); + nodes.forEach((node) => { + node.parent = void 0; + }); + nodes[0].raws.before = nodes[0].raws.before || "\n"; + innerAtRule.append(nodes); + stmt.type = "media"; + stmt.node = outerAtRule; + delete stmt.nodes; + } + }); + } + function applyStyles(bundle, styles2) { + styles2.nodes = []; + bundle.forEach((stmt) => { + if (["charset", "import", "media"].includes(stmt.type)) { + stmt.node.parent = void 0; + styles2.append(stmt.node); + } else if (stmt.type === "nodes") { + stmt.nodes.forEach((node) => { + node.parent = void 0; + styles2.append(node); + }); + } + }); + } + function parseStyles(result2, styles2, options2, state2, media, layer) { + const statements = parseStatements(result2, styles2); + return Promise.resolve(statements).then((stmts) => { + return stmts.reduce((promise, stmt) => { + return promise.then(() => { + stmt.media = joinMedia(media, stmt.media || []); + stmt.layer = joinLayer(layer, stmt.layer || []); + if (stmt.type !== "import" || /^(?:[a-z]+:)?\/\//i.test(stmt.uri)) { + return; + } + if (options2.filter && !options2.filter(stmt.uri)) { + return; + } + return resolveImportId(result2, stmt, options2, state2); + }); + }, Promise.resolve()); + }).then(() => { + let charset; + const imports = []; + const bundle = []; + function handleCharset(stmt) { + if (!charset) + charset = stmt; + else if (stmt.node.params.toLowerCase() !== charset.node.params.toLowerCase()) { + throw new Error( + `Incompatable @charset statements: + ${stmt.node.params} specified in ${stmt.node.source.input.file} + ${charset.node.params} specified in ${charset.node.source.input.file}` + ); + } + } + statements.forEach((stmt) => { + if (stmt.type === "charset") + handleCharset(stmt); + else if (stmt.type === "import") { + if (stmt.children) { + stmt.children.forEach((child, index) => { + if (child.type === "import") + imports.push(child); + else if (child.type === "charset") + handleCharset(child); + else + bundle.push(child); + if (index === 0) + child.parent = stmt; + }); + } else + imports.push(stmt); + } else if (stmt.type === "media" || stmt.type === "nodes") { + bundle.push(stmt); + } + }); + return charset ? [charset, ...imports.concat(bundle)] : imports.concat(bundle); + }); + } + function resolveImportId(result2, stmt, options2, state2) { + const atRule2 = stmt.node; + let sourceFile; + if (atRule2.source && atRule2.source.input && atRule2.source.input.file) { + sourceFile = atRule2.source.input.file; + } + const base = sourceFile ? path.dirname(atRule2.source.input.file) : options2.root; + return Promise.resolve(options2.resolve(stmt.uri, base, options2)).then((paths) => { + if (!Array.isArray(paths)) + paths = [paths]; + return Promise.all( + paths.map((file) => { + return !path.isAbsolute(file) ? resolveId(file, base, options2) : file; + }) + ); + }).then((resolved) => { + resolved.forEach((file) => { + result2.messages.push({ + type: "dependency", + plugin: "postcss-import", + file, + parent: sourceFile + }); + }); + return Promise.all( + resolved.map((file) => { + return loadImportContent(result2, stmt, file, options2, state2); + }) + ); + }).then((result3) => { + stmt.children = result3.reduce((result4, statements) => { + return statements ? result4.concat(statements) : result4; + }, []); + }); + } + function loadImportContent(result2, stmt, filename, options2, state2) { + const atRule2 = stmt.node; + const { media, layer } = stmt; + if (options2.skipDuplicates) { + if (state2.importedFiles[filename] && state2.importedFiles[filename][media]) { + return; + } + if (!state2.importedFiles[filename]) + state2.importedFiles[filename] = {}; + state2.importedFiles[filename][media] = true; + } + return Promise.resolve(options2.load(filename, options2)).then( + (content) => { + if (content.trim() === "") { + result2.warn(`${filename} is empty`, { node: atRule2 }); + return; + } + if (state2.hashFiles[content] && state2.hashFiles[content][media]) + return; + return processContent( + result2, + content, + filename, + options2, + postcss + ).then((importedResult) => { + const styles2 = importedResult.root; + result2.messages = result2.messages.concat(importedResult.messages); + if (options2.skipDuplicates) { + const hasImport = styles2.some((child) => { + return child.type === "atrule" && child.name === "import"; + }); + if (!hasImport) { + if (!state2.hashFiles[content]) + state2.hashFiles[content] = {}; + state2.hashFiles[content][media] = true; + } + } + return parseStyles(result2, styles2, options2, state2, media, layer); + }); + } + ); + } + } + }; + } + AtImport.postcss = true; + module2.exports = AtImport; + } +}); + +// node_modules/node-releases/data/processed/envs.json +var require_envs = __commonJS({ + "node_modules/node-releases/data/processed/envs.json"(exports2, module2) { + module2.exports = [{ name: "nodejs", version: "0.2.0", date: "2011-08-26", lts: false, security: false }, { name: "nodejs", version: "0.3.0", date: "2011-08-26", lts: false, security: false }, { name: "nodejs", version: "0.4.0", date: "2011-08-26", lts: false, security: false }, { name: "nodejs", version: "0.5.0", date: "2011-08-26", lts: false, security: false }, { name: "nodejs", version: "0.6.0", date: "2011-11-04", lts: false, security: false }, { name: "nodejs", version: "0.7.0", date: "2012-01-17", lts: false, security: false }, { name: "nodejs", version: "0.8.0", date: "2012-06-22", lts: false, security: false }, { name: "nodejs", version: "0.9.0", date: "2012-07-20", lts: false, security: false }, { name: "nodejs", version: "0.10.0", date: "2013-03-11", lts: false, security: false }, { name: "nodejs", version: "0.11.0", date: "2013-03-28", lts: false, security: false }, { name: "nodejs", version: "0.12.0", date: "2015-02-06", lts: false, security: false }, { name: "nodejs", version: "4.0.0", date: "2015-09-08", lts: false, security: false }, { name: "nodejs", version: "4.1.0", date: "2015-09-17", lts: false, security: false }, { name: "nodejs", version: "4.2.0", date: "2015-10-12", lts: "Argon", security: false }, { name: "nodejs", version: "4.3.0", date: "2016-02-09", lts: "Argon", security: false }, { name: "nodejs", version: "4.4.0", date: "2016-03-08", lts: "Argon", security: false }, { name: "nodejs", version: "4.5.0", date: "2016-08-16", lts: "Argon", security: false }, { name: "nodejs", version: "4.6.0", date: "2016-09-27", lts: "Argon", security: true }, { name: "nodejs", version: "4.7.0", date: "2016-12-06", lts: "Argon", security: false }, { name: "nodejs", version: "4.8.0", date: "2017-02-21", lts: "Argon", security: false }, { name: "nodejs", version: "4.9.0", date: "2018-03-28", lts: "Argon", security: true }, { name: "nodejs", version: "5.0.0", date: "2015-10-29", lts: false, security: false }, { name: "nodejs", version: "5.1.0", date: "2015-11-17", lts: false, security: false }, { name: "nodejs", version: "5.2.0", date: "2015-12-09", lts: false, security: false }, { name: "nodejs", version: "5.3.0", date: "2015-12-15", lts: false, security: false }, { name: "nodejs", version: "5.4.0", date: "2016-01-06", lts: false, security: false }, { name: "nodejs", version: "5.5.0", date: "2016-01-21", lts: false, security: false }, { name: "nodejs", version: "5.6.0", date: "2016-02-09", lts: false, security: false }, { name: "nodejs", version: "5.7.0", date: "2016-02-23", lts: false, security: false }, { name: "nodejs", version: "5.8.0", date: "2016-03-09", lts: false, security: false }, { name: "nodejs", version: "5.9.0", date: "2016-03-16", lts: false, security: false }, { name: "nodejs", version: "5.10.0", date: "2016-04-01", lts: false, security: false }, { name: "nodejs", version: "5.11.0", date: "2016-04-21", lts: false, security: false }, { name: "nodejs", version: "5.12.0", date: "2016-06-23", lts: false, security: false }, { name: "nodejs", version: "6.0.0", date: "2016-04-26", lts: false, security: false }, { name: "nodejs", version: "6.1.0", date: "2016-05-05", lts: false, security: false }, { name: "nodejs", version: "6.2.0", date: "2016-05-17", lts: false, security: false }, { name: "nodejs", version: "6.3.0", date: "2016-07-06", lts: false, security: false }, { name: "nodejs", version: "6.4.0", date: "2016-08-12", lts: false, security: false }, { name: "nodejs", version: "6.5.0", date: "2016-08-26", lts: false, security: false }, { name: "nodejs", version: "6.6.0", date: "2016-09-14", lts: false, security: false }, { name: "nodejs", version: "6.7.0", date: "2016-09-27", lts: false, security: true }, { name: "nodejs", version: "6.8.0", date: "2016-10-12", lts: false, security: false }, { name: "nodejs", version: "6.9.0", date: "2016-10-18", lts: "Boron", security: false }, { name: "nodejs", version: "6.10.0", date: "2017-02-21", lts: "Boron", security: false }, { name: "nodejs", version: "6.11.0", date: "2017-06-06", lts: "Boron", security: false }, { name: "nodejs", version: "6.12.0", date: "2017-11-06", lts: "Boron", security: false }, { name: "nodejs", version: "6.13.0", date: "2018-02-10", lts: "Boron", security: false }, { name: "nodejs", version: "6.14.0", date: "2018-03-28", lts: "Boron", security: true }, { name: "nodejs", version: "6.15.0", date: "2018-11-27", lts: "Boron", security: true }, { name: "nodejs", version: "6.16.0", date: "2018-12-26", lts: "Boron", security: false }, { name: "nodejs", version: "6.17.0", date: "2019-02-28", lts: "Boron", security: true }, { name: "nodejs", version: "7.0.0", date: "2016-10-25", lts: false, security: false }, { name: "nodejs", version: "7.1.0", date: "2016-11-08", lts: false, security: false }, { name: "nodejs", version: "7.2.0", date: "2016-11-22", lts: false, security: false }, { name: "nodejs", version: "7.3.0", date: "2016-12-20", lts: false, security: false }, { name: "nodejs", version: "7.4.0", date: "2017-01-04", lts: false, security: false }, { name: "nodejs", version: "7.5.0", date: "2017-01-31", lts: false, security: false }, { name: "nodejs", version: "7.6.0", date: "2017-02-21", lts: false, security: false }, { name: "nodejs", version: "7.7.0", date: "2017-02-28", lts: false, security: false }, { name: "nodejs", version: "7.8.0", date: "2017-03-29", lts: false, security: false }, { name: "nodejs", version: "7.9.0", date: "2017-04-11", lts: false, security: false }, { name: "nodejs", version: "7.10.0", date: "2017-05-02", lts: false, security: false }, { name: "nodejs", version: "8.0.0", date: "2017-05-30", lts: false, security: false }, { name: "nodejs", version: "8.1.0", date: "2017-06-08", lts: false, security: false }, { name: "nodejs", version: "8.2.0", date: "2017-07-19", lts: false, security: false }, { name: "nodejs", version: "8.3.0", date: "2017-08-08", lts: false, security: false }, { name: "nodejs", version: "8.4.0", date: "2017-08-15", lts: false, security: false }, { name: "nodejs", version: "8.5.0", date: "2017-09-12", lts: false, security: false }, { name: "nodejs", version: "8.6.0", date: "2017-09-26", lts: false, security: false }, { name: "nodejs", version: "8.7.0", date: "2017-10-11", lts: false, security: false }, { name: "nodejs", version: "8.8.0", date: "2017-10-24", lts: false, security: false }, { name: "nodejs", version: "8.9.0", date: "2017-10-31", lts: "Carbon", security: false }, { name: "nodejs", version: "8.10.0", date: "2018-03-06", lts: "Carbon", security: false }, { name: "nodejs", version: "8.11.0", date: "2018-03-28", lts: "Carbon", security: true }, { name: "nodejs", version: "8.12.0", date: "2018-09-10", lts: "Carbon", security: false }, { name: "nodejs", version: "8.13.0", date: "2018-11-20", lts: "Carbon", security: false }, { name: "nodejs", version: "8.14.0", date: "2018-11-27", lts: "Carbon", security: true }, { name: "nodejs", version: "8.15.0", date: "2018-12-26", lts: "Carbon", security: false }, { name: "nodejs", version: "8.16.0", date: "2019-04-16", lts: "Carbon", security: false }, { name: "nodejs", version: "8.17.0", date: "2019-12-17", lts: "Carbon", security: true }, { name: "nodejs", version: "9.0.0", date: "2017-10-31", lts: false, security: false }, { name: "nodejs", version: "9.1.0", date: "2017-11-07", lts: false, security: false }, { name: "nodejs", version: "9.2.0", date: "2017-11-14", lts: false, security: false }, { name: "nodejs", version: "9.3.0", date: "2017-12-12", lts: false, security: false }, { name: "nodejs", version: "9.4.0", date: "2018-01-10", lts: false, security: false }, { name: "nodejs", version: "9.5.0", date: "2018-01-31", lts: false, security: false }, { name: "nodejs", version: "9.6.0", date: "2018-02-21", lts: false, security: false }, { name: "nodejs", version: "9.7.0", date: "2018-03-01", lts: false, security: false }, { name: "nodejs", version: "9.8.0", date: "2018-03-07", lts: false, security: false }, { name: "nodejs", version: "9.9.0", date: "2018-03-21", lts: false, security: false }, { name: "nodejs", version: "9.10.0", date: "2018-03-28", lts: false, security: true }, { name: "nodejs", version: "9.11.0", date: "2018-04-04", lts: false, security: false }, { name: "nodejs", version: "10.0.0", date: "2018-04-24", lts: false, security: false }, { name: "nodejs", version: "10.1.0", date: "2018-05-08", lts: false, security: false }, { name: "nodejs", version: "10.2.0", date: "2018-05-23", lts: false, security: false }, { name: "nodejs", version: "10.3.0", date: "2018-05-29", lts: false, security: false }, { name: "nodejs", version: "10.4.0", date: "2018-06-06", lts: false, security: false }, { name: "nodejs", version: "10.5.0", date: "2018-06-20", lts: false, security: false }, { name: "nodejs", version: "10.6.0", date: "2018-07-04", lts: false, security: false }, { name: "nodejs", version: "10.7.0", date: "2018-07-18", lts: false, security: false }, { name: "nodejs", version: "10.8.0", date: "2018-08-01", lts: false, security: false }, { name: "nodejs", version: "10.9.0", date: "2018-08-15", lts: false, security: false }, { name: "nodejs", version: "10.10.0", date: "2018-09-06", lts: false, security: false }, { name: "nodejs", version: "10.11.0", date: "2018-09-19", lts: false, security: false }, { name: "nodejs", version: "10.12.0", date: "2018-10-10", lts: false, security: false }, { name: "nodejs", version: "10.13.0", date: "2018-10-30", lts: "Dubnium", security: false }, { name: "nodejs", version: "10.14.0", date: "2018-11-27", lts: "Dubnium", security: true }, { name: "nodejs", version: "10.15.0", date: "2018-12-26", lts: "Dubnium", security: false }, { name: "nodejs", version: "10.16.0", date: "2019-05-28", lts: "Dubnium", security: false }, { name: "nodejs", version: "10.17.0", date: "2019-10-22", lts: "Dubnium", security: false }, { name: "nodejs", version: "10.18.0", date: "2019-12-17", lts: "Dubnium", security: true }, { name: "nodejs", version: "10.19.0", date: "2020-02-05", lts: "Dubnium", security: true }, { name: "nodejs", version: "10.20.0", date: "2020-03-26", lts: "Dubnium", security: false }, { name: "nodejs", version: "10.21.0", date: "2020-06-02", lts: "Dubnium", security: true }, { name: "nodejs", version: "10.22.0", date: "2020-07-21", lts: "Dubnium", security: false }, { name: "nodejs", version: "10.23.0", date: "2020-10-27", lts: "Dubnium", security: false }, { name: "nodejs", version: "10.24.0", date: "2021-02-23", lts: "Dubnium", security: true }, { name: "nodejs", version: "11.0.0", date: "2018-10-23", lts: false, security: false }, { name: "nodejs", version: "11.1.0", date: "2018-10-30", lts: false, security: false }, { name: "nodejs", version: "11.2.0", date: "2018-11-15", lts: false, security: false }, { name: "nodejs", version: "11.3.0", date: "2018-11-27", lts: false, security: true }, { name: "nodejs", version: "11.4.0", date: "2018-12-07", lts: false, security: false }, { name: "nodejs", version: "11.5.0", date: "2018-12-18", lts: false, security: false }, { name: "nodejs", version: "11.6.0", date: "2018-12-26", lts: false, security: false }, { name: "nodejs", version: "11.7.0", date: "2019-01-17", lts: false, security: false }, { name: "nodejs", version: "11.8.0", date: "2019-01-24", lts: false, security: false }, { name: "nodejs", version: "11.9.0", date: "2019-01-30", lts: false, security: false }, { name: "nodejs", version: "11.10.0", date: "2019-02-14", lts: false, security: false }, { name: "nodejs", version: "11.11.0", date: "2019-03-05", lts: false, security: false }, { name: "nodejs", version: "11.12.0", date: "2019-03-14", lts: false, security: false }, { name: "nodejs", version: "11.13.0", date: "2019-03-28", lts: false, security: false }, { name: "nodejs", version: "11.14.0", date: "2019-04-10", lts: false, security: false }, { name: "nodejs", version: "11.15.0", date: "2019-04-30", lts: false, security: false }, { name: "nodejs", version: "12.0.0", date: "2019-04-23", lts: false, security: false }, { name: "nodejs", version: "12.1.0", date: "2019-04-29", lts: false, security: false }, { name: "nodejs", version: "12.2.0", date: "2019-05-07", lts: false, security: false }, { name: "nodejs", version: "12.3.0", date: "2019-05-21", lts: false, security: false }, { name: "nodejs", version: "12.4.0", date: "2019-06-04", lts: false, security: false }, { name: "nodejs", version: "12.5.0", date: "2019-06-26", lts: false, security: false }, { name: "nodejs", version: "12.6.0", date: "2019-07-03", lts: false, security: false }, { name: "nodejs", version: "12.7.0", date: "2019-07-23", lts: false, security: false }, { name: "nodejs", version: "12.8.0", date: "2019-08-06", lts: false, security: false }, { name: "nodejs", version: "12.9.0", date: "2019-08-20", lts: false, security: false }, { name: "nodejs", version: "12.10.0", date: "2019-09-04", lts: false, security: false }, { name: "nodejs", version: "12.11.0", date: "2019-09-25", lts: false, security: false }, { name: "nodejs", version: "12.12.0", date: "2019-10-11", lts: false, security: false }, { name: "nodejs", version: "12.13.0", date: "2019-10-21", lts: "Erbium", security: false }, { name: "nodejs", version: "12.14.0", date: "2019-12-17", lts: "Erbium", security: true }, { name: "nodejs", version: "12.15.0", date: "2020-02-05", lts: "Erbium", security: true }, { name: "nodejs", version: "12.16.0", date: "2020-02-11", lts: "Erbium", security: false }, { name: "nodejs", version: "12.17.0", date: "2020-05-26", lts: "Erbium", security: false }, { name: "nodejs", version: "12.18.0", date: "2020-06-02", lts: "Erbium", security: true }, { name: "nodejs", version: "12.19.0", date: "2020-10-06", lts: "Erbium", security: false }, { name: "nodejs", version: "12.20.0", date: "2020-11-24", lts: "Erbium", security: false }, { name: "nodejs", version: "12.21.0", date: "2021-02-23", lts: "Erbium", security: true }, { name: "nodejs", version: "12.22.0", date: "2021-03-30", lts: "Erbium", security: false }, { name: "nodejs", version: "13.0.0", date: "2019-10-22", lts: false, security: false }, { name: "nodejs", version: "13.1.0", date: "2019-11-05", lts: false, security: false }, { name: "nodejs", version: "13.2.0", date: "2019-11-21", lts: false, security: false }, { name: "nodejs", version: "13.3.0", date: "2019-12-03", lts: false, security: false }, { name: "nodejs", version: "13.4.0", date: "2019-12-17", lts: false, security: true }, { name: "nodejs", version: "13.5.0", date: "2019-12-18", lts: false, security: false }, { name: "nodejs", version: "13.6.0", date: "2020-01-07", lts: false, security: false }, { name: "nodejs", version: "13.7.0", date: "2020-01-21", lts: false, security: false }, { name: "nodejs", version: "13.8.0", date: "2020-02-05", lts: false, security: true }, { name: "nodejs", version: "13.9.0", date: "2020-02-18", lts: false, security: false }, { name: "nodejs", version: "13.10.0", date: "2020-03-04", lts: false, security: false }, { name: "nodejs", version: "13.11.0", date: "2020-03-12", lts: false, security: false }, { name: "nodejs", version: "13.12.0", date: "2020-03-26", lts: false, security: false }, { name: "nodejs", version: "13.13.0", date: "2020-04-14", lts: false, security: false }, { name: "nodejs", version: "13.14.0", date: "2020-04-29", lts: false, security: false }, { name: "nodejs", version: "14.0.0", date: "2020-04-21", lts: false, security: false }, { name: "nodejs", version: "14.1.0", date: "2020-04-29", lts: false, security: false }, { name: "nodejs", version: "14.2.0", date: "2020-05-05", lts: false, security: false }, { name: "nodejs", version: "14.3.0", date: "2020-05-19", lts: false, security: false }, { name: "nodejs", version: "14.4.0", date: "2020-06-02", lts: false, security: true }, { name: "nodejs", version: "14.5.0", date: "2020-06-30", lts: false, security: false }, { name: "nodejs", version: "14.6.0", date: "2020-07-20", lts: false, security: false }, { name: "nodejs", version: "14.7.0", date: "2020-07-29", lts: false, security: false }, { name: "nodejs", version: "14.8.0", date: "2020-08-11", lts: false, security: false }, { name: "nodejs", version: "14.9.0", date: "2020-08-27", lts: false, security: false }, { name: "nodejs", version: "14.10.0", date: "2020-09-08", lts: false, security: false }, { name: "nodejs", version: "14.11.0", date: "2020-09-15", lts: false, security: true }, { name: "nodejs", version: "14.12.0", date: "2020-09-22", lts: false, security: false }, { name: "nodejs", version: "14.13.0", date: "2020-09-29", lts: false, security: false }, { name: "nodejs", version: "14.14.0", date: "2020-10-15", lts: false, security: false }, { name: "nodejs", version: "14.15.0", date: "2020-10-27", lts: "Fermium", security: false }, { name: "nodejs", version: "14.16.0", date: "2021-02-23", lts: "Fermium", security: true }, { name: "nodejs", version: "14.17.0", date: "2021-05-11", lts: "Fermium", security: false }, { name: "nodejs", version: "14.18.0", date: "2021-09-28", lts: "Fermium", security: false }, { name: "nodejs", version: "14.19.0", date: "2022-02-01", lts: "Fermium", security: false }, { name: "nodejs", version: "14.20.0", date: "2022-07-07", lts: "Fermium", security: true }, { name: "nodejs", version: "15.0.0", date: "2020-10-20", lts: false, security: false }, { name: "nodejs", version: "15.1.0", date: "2020-11-04", lts: false, security: false }, { name: "nodejs", version: "15.2.0", date: "2020-11-10", lts: false, security: false }, { name: "nodejs", version: "15.3.0", date: "2020-11-24", lts: false, security: false }, { name: "nodejs", version: "15.4.0", date: "2020-12-09", lts: false, security: false }, { name: "nodejs", version: "15.5.0", date: "2020-12-22", lts: false, security: false }, { name: "nodejs", version: "15.6.0", date: "2021-01-14", lts: false, security: false }, { name: "nodejs", version: "15.7.0", date: "2021-01-25", lts: false, security: false }, { name: "nodejs", version: "15.8.0", date: "2021-02-02", lts: false, security: false }, { name: "nodejs", version: "15.9.0", date: "2021-02-18", lts: false, security: false }, { name: "nodejs", version: "15.10.0", date: "2021-02-23", lts: false, security: true }, { name: "nodejs", version: "15.11.0", date: "2021-03-03", lts: false, security: false }, { name: "nodejs", version: "15.12.0", date: "2021-03-17", lts: false, security: false }, { name: "nodejs", version: "15.13.0", date: "2021-03-31", lts: false, security: false }, { name: "nodejs", version: "15.14.0", date: "2021-04-06", lts: false, security: false }, { name: "nodejs", version: "16.0.0", date: "2021-04-20", lts: false, security: false }, { name: "nodejs", version: "16.1.0", date: "2021-05-04", lts: false, security: false }, { name: "nodejs", version: "16.2.0", date: "2021-05-19", lts: false, security: false }, { name: "nodejs", version: "16.3.0", date: "2021-06-03", lts: false, security: false }, { name: "nodejs", version: "16.4.0", date: "2021-06-23", lts: false, security: false }, { name: "nodejs", version: "16.5.0", date: "2021-07-14", lts: false, security: false }, { name: "nodejs", version: "16.6.0", date: "2021-07-29", lts: false, security: true }, { name: "nodejs", version: "16.7.0", date: "2021-08-18", lts: false, security: false }, { name: "nodejs", version: "16.8.0", date: "2021-08-25", lts: false, security: false }, { name: "nodejs", version: "16.9.0", date: "2021-09-07", lts: false, security: false }, { name: "nodejs", version: "16.10.0", date: "2021-09-22", lts: false, security: false }, { name: "nodejs", version: "16.11.0", date: "2021-10-08", lts: false, security: false }, { name: "nodejs", version: "16.12.0", date: "2021-10-20", lts: false, security: false }, { name: "nodejs", version: "16.13.0", date: "2021-10-26", lts: "Gallium", security: false }, { name: "nodejs", version: "16.14.0", date: "2022-02-08", lts: "Gallium", security: false }, { name: "nodejs", version: "16.15.0", date: "2022-04-26", lts: "Gallium", security: false }, { name: "nodejs", version: "16.16.0", date: "2022-07-07", lts: "Gallium", security: true }, { name: "nodejs", version: "17.0.0", date: "2021-10-19", lts: false, security: false }, { name: "nodejs", version: "17.1.0", date: "2021-11-09", lts: false, security: false }, { name: "nodejs", version: "17.2.0", date: "2021-11-30", lts: false, security: false }, { name: "nodejs", version: "17.3.0", date: "2021-12-17", lts: false, security: false }, { name: "nodejs", version: "17.4.0", date: "2022-01-18", lts: false, security: false }, { name: "nodejs", version: "17.5.0", date: "2022-02-10", lts: false, security: false }, { name: "nodejs", version: "17.6.0", date: "2022-02-22", lts: false, security: false }, { name: "nodejs", version: "17.7.0", date: "2022-03-09", lts: false, security: false }, { name: "nodejs", version: "17.8.0", date: "2022-03-22", lts: false, security: false }, { name: "nodejs", version: "17.9.0", date: "2022-04-07", lts: false, security: false }, { name: "nodejs", version: "18.0.0", date: "2022-04-18", lts: false, security: false }, { name: "nodejs", version: "18.1.0", date: "2022-05-03", lts: false, security: false }, { name: "nodejs", version: "18.2.0", date: "2022-05-17", lts: false, security: false }, { name: "nodejs", version: "18.3.0", date: "2022-06-02", lts: false, security: false }, { name: "nodejs", version: "18.4.0", date: "2022-06-16", lts: false, security: false }, { name: "nodejs", version: "18.5.0", date: "2022-07-06", lts: false, security: true }]; + } +}); + +// node_modules/caniuse-lite/data/browsers.js +var require_browsers = __commonJS({ + "node_modules/caniuse-lite/data/browsers.js"(exports2, module2) { + module2.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" }; + } +}); + +// node_modules/caniuse-lite/dist/unpacker/browsers.js +var require_browsers2 = __commonJS({ + "node_modules/caniuse-lite/dist/unpacker/browsers.js"(exports2, module2) { + module2.exports.browsers = require_browsers(); + } +}); + +// node_modules/caniuse-lite/data/browserVersions.js +var require_browserVersions = __commonJS({ + "node_modules/caniuse-lite/data/browserVersions.js"(exports2, module2) { + module2.exports = { "0": "27", "1": "28", "2": "29", "3": "30", "4": "31", "5": "32", "6": "33", "7": "34", "8": "35", "9": "36", A: "10", B: "11", C: "12", D: "7", E: "8", F: "9", G: "15", H: "107", 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: "106", c: "64", d: "92", e: "93", f: "94", g: "95", h: "96", i: "97", j: "98", k: "99", l: "100", m: "101", n: "102", o: "103", p: "104", q: "105", r: "5", s: "19", t: "20", u: "21", v: "22", w: "23", x: "24", y: "25", z: "26", AB: "37", BB: "38", CB: "39", DB: "40", EB: "41", FB: "42", GB: "43", HB: "44", IB: "45", JB: "46", KB: "47", LB: "48", MB: "49", NB: "50", OB: "51", PB: "52", QB: "53", RB: "54", SB: "55", TB: "56", UB: "57", VB: "58", WB: "60", XB: "62", YB: "63", ZB: "65", aB: "66", bB: "67", cB: "68", dB: "69", eB: "70", fB: "71", gB: "72", hB: "73", iB: "74", jB: "75", kB: "76", lB: "77", mB: "78", nB: "11.1", oB: "12.1", pB: "16.0", qB: "3", rB: "59", sB: "61", tB: "82", uB: "108", vB: "3.2", wB: "10.1", xB: "13.1", yB: "15.2-15.3", zB: "15.4", "0B": "15.5", "1B": "15.6", "2B": "16.1", "3B": "11.5", "4B": "4.2-4.3", "5B": "5.5", "6B": "2", "7B": "3.5", "8B": "3.6", "9B": "109", AC: "110", BC: "3.1", CC: "5.1", DC: "6.1", EC: "7.1", FC: "9.1", GC: "14.1", HC: "15.1", IC: "16.2", JC: "TP", KC: "9.5-9.6", LC: "10.0-10.1", MC: "10.5", NC: "10.6", OC: "11.6", PC: "4.0-4.1", QC: "5.0-5.1", RC: "6.0-6.1", SC: "7.0-7.1", TC: "8.1-8.4", UC: "9.0-9.2", VC: "9.3", WC: "10.0-10.2", XC: "10.3", YC: "11.0-11.2", ZC: "11.3-11.4", aC: "12.0-12.1", bC: "12.2-12.5", cC: "13.0-13.1", dC: "13.2", eC: "13.3", fC: "13.4-13.7", gC: "14.0-14.4", hC: "14.5-14.8", iC: "15.0-15.1", jC: "all", kC: "2.1", lC: "2.2", mC: "2.3", nC: "4.1", oC: "4.4", pC: "4.4.3-4.4.4", qC: "13.4", rC: "5.0-5.4", sC: "6.2-6.4", tC: "7.2-7.4", uC: "8.2", vC: "9.2", wC: "11.1-11.2", xC: "12.0", yC: "13.0", zC: "14.0", "0C": "15.0", "1C": "17.0", "2C": "18.0", "3C": "13.18", "4C": "2.5" }; + } +}); + +// node_modules/caniuse-lite/dist/unpacker/browserVersions.js +var require_browserVersions2 = __commonJS({ + "node_modules/caniuse-lite/dist/unpacker/browserVersions.js"(exports2, module2) { + module2.exports.browserVersions = require_browserVersions(); + } +}); + +// node_modules/caniuse-lite/data/agents.js +var require_agents = __commonJS({ + "node_modules/caniuse-lite/data/agents.js"(exports2, module2) { + module2.exports = { A: { A: { J: 0.0131217, D: 621152e-8, E: 0.0360158, F: 0.086438, A: 720317e-8, B: 0.475409, "5B": 9298e-6 }, B: "ms", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "5B", "J", "D", "E", "F", "A", "B", "", "", ""], E: "IE", F: { "5B": 962323200, J: 998870400, D: 1161129600, E: 1237420800, F: 1300060800, A: 1346716800, B: 1381968e3 } }, B: { A: { C: 7858e-6, K: 4267e-6, L: 4268e-6, G: 3929e-6, M: 3702e-6, N: 7858e-6, O: 0.023574, P: 0, Q: 4298e-6, R: 944e-5, S: 4043e-6, T: 7858e-6, U: 7858e-6, V: 3929e-6, W: 3929e-6, X: 4318e-6, Y: 3929e-6, Z: 4118e-6, a: 3939e-6, d: 7858e-6, e: 4118e-6, f: 3939e-6, g: 3801e-6, h: 3929e-6, i: 3855e-6, j: 3929e-6, k: 3929e-6, l: 7858e-6, m: 0.019645, n: 0.015716, o: 0.055006, p: 0.652214, q: 3.4143, b: 0, H: 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "C", "K", "L", "G", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "b", "H", "", "", ""], E: "Edge", F: { C: 1438128e3, K: 1447286400, L: 1470096e3, G: 1491868800, M: 1508198400, N: 1525046400, O: 1542067200, P: 1579046400, Q: 1581033600, R: 1586736e3, S: 1590019200, T: 1594857600, U: 1598486400, V: 1602201600, W: 1605830400, X: 161136e4, Y: 1614816e3, Z: 1618358400, a: 1622073600, d: 1626912e3, e: 1630627200, f: 1632441600, g: 1634774400, h: 1637539200, i: 1641427200, j: 1643932800, k: 1646265600, l: 1649635200, m: 1651190400, n: 1653955200, o: 1655942400, p: 1659657600, q: 1661990400, b: 1664755200, H: 1666915200 }, D: { C: "ms", K: "ms", L: "ms", G: "ms", M: "ms", N: "ms", O: "ms" } }, C: { A: { "0": 4393e-6, "1": 4418e-6, "2": 8834e-6, "3": 8322e-6, "4": 8928e-6, "5": 4471e-6, "6": 9284e-6, "7": 4707e-6, "8": 9076e-6, "9": 7858e-6, "6B": 4118e-6, qB: 4271e-6, I: 0.019645, r: 4879e-6, J: 0.020136, D: 5725e-6, E: 4525e-6, F: 533e-5, A: 4283e-6, B: 7858e-6, C: 4471e-6, K: 4486e-6, L: 453e-5, G: 8322e-6, M: 4417e-6, N: 4425e-6, O: 4161e-6, s: 4443e-6, t: 4283e-6, u: 8322e-6, v: 0.013698, w: 4161e-6, x: 8786e-6, y: 4118e-6, z: 4317e-6, AB: 4783e-6, BB: 3929e-6, CB: 4783e-6, DB: 487e-5, EB: 5029e-6, FB: 47e-4, GB: 0.011787, HB: 7858e-6, IB: 3867e-6, JB: 4525e-6, KB: 4293e-6, LB: 3702e-6, MB: 4538e-6, NB: 8282e-6, OB: 0.011601, PB: 0.055006, QB: 0.011601, RB: 3929e-6, SB: 7858e-6, TB: 3929e-6, UB: 0.011601, VB: 3939e-6, rB: 3855e-6, WB: 3929e-6, sB: 4356e-6, XB: 4425e-6, YB: 8322e-6, c: 415e-5, ZB: 4267e-6, aB: 3801e-6, bB: 4267e-6, cB: 7858e-6, dB: 415e-5, eB: 4293e-6, fB: 4425e-6, gB: 3929e-6, hB: 415e-5, iB: 415e-5, jB: 4318e-6, kB: 4356e-6, lB: 3929e-6, mB: 0.03929, P: 7858e-6, Q: 7858e-6, R: 7858e-6, tB: 7858e-6, S: 7858e-6, T: 3929e-6, U: 4268e-6, V: 3801e-6, W: 0.011787, X: 7858e-6, Y: 3929e-6, Z: 3929e-6, a: 0.070722, d: 3801e-6, e: 3855e-6, f: 0.019645, g: 7858e-6, h: 3929e-6, i: 7858e-6, j: 7858e-6, k: 0.011787, l: 0.011787, m: 0.011787, n: 0.051077, o: 0.141444, p: 1.60303, q: 0.542202, b: 7858e-6, H: 0, uB: 0, "7B": 8786e-6, "8B": 487e-5 }, B: "moz", C: ["6B", "qB", "7B", "8B", "I", "r", "J", "D", "E", "F", "A", "B", "C", "K", "L", "G", "M", "N", "O", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "FB", "GB", "HB", "IB", "JB", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "rB", "WB", "sB", "XB", "YB", "c", "ZB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "lB", "mB", "P", "Q", "R", "tB", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "b", "H", "uB", ""], E: "Firefox", F: { "0": 1391472e3, "1": 1395100800, "2": 1398729600, "3": 1402358400, "4": 1405987200, "5": 1409616e3, "6": 1413244800, "7": 1417392e3, "8": 1421107200, "9": 1424736e3, "6B": 1161648e3, qB: 1213660800, "7B": 124632e4, "8B": 1264032e3, I: 1300752e3, r: 1308614400, J: 1313452800, D: 1317081600, E: 1317081600, F: 1320710400, A: 1324339200, B: 1327968e3, C: 1331596800, K: 1335225600, L: 1338854400, G: 1342483200, M: 1346112e3, N: 1349740800, O: 1353628800, s: 1357603200, t: 1361232e3, u: 1364860800, v: 1368489600, w: 1372118400, x: 1375747200, y: 1379376e3, z: 1386633600, AB: 1428278400, BB: 1431475200, CB: 1435881600, DB: 1439251200, EB: 144288e4, FB: 1446508800, GB: 1450137600, HB: 1453852800, IB: 1457395200, JB: 1461628800, KB: 1465257600, LB: 1470096e3, MB: 1474329600, NB: 1479168e3, OB: 1485216e3, PB: 1488844800, QB: 149256e4, RB: 1497312e3, SB: 1502150400, TB: 1506556800, UB: 1510617600, VB: 1516665600, rB: 1520985600, WB: 1525824e3, sB: 1529971200, XB: 1536105600, YB: 1540252800, c: 1544486400, ZB: 154872e4, aB: 1552953600, bB: 1558396800, cB: 1562630400, dB: 1567468800, eB: 1571788800, fB: 1575331200, gB: 1578355200, hB: 1581379200, iB: 1583798400, jB: 1586304e3, kB: 1588636800, lB: 1591056e3, mB: 1593475200, P: 1595894400, Q: 1598313600, R: 1600732800, tB: 1603152e3, S: 1605571200, T: 1607990400, U: 1611619200, V: 1614038400, W: 1616457600, X: 1618790400, Y: 1622505600, Z: 1626134400, a: 1628553600, d: 1630972800, e: 1633392e3, f: 1635811200, g: 1638835200, h: 1641859200, i: 1644364800, j: 1646697600, k: 1649116800, l: 1651536e3, m: 1653955200, n: 1656374400, o: 1658793600, p: 1661212800, q: 1663632e3, b: 1666051200, H: null, uB: null } }, D: { A: { "0": 4326e-6, "1": 47e-4, "2": 4538e-6, "3": 8322e-6, "4": 8596e-6, "5": 4566e-6, "6": 4118e-6, "7": 7858e-6, "8": 3702e-6, "9": 4335e-6, I: 4706e-6, r: 4879e-6, J: 4879e-6, D: 5591e-6, E: 5591e-6, F: 5591e-6, A: 4534e-6, B: 4464e-6, C: 0.010424, K: 83e-4, L: 4706e-6, G: 0.015087, M: 4393e-6, N: 4393e-6, O: 8652e-6, s: 8322e-6, t: 4393e-6, u: 4317e-6, v: 3929e-6, w: 8786e-6, x: 3939e-6, y: 4461e-6, z: 4141e-6, AB: 4464e-6, BB: 0.015716, CB: 3867e-6, DB: 0.015716, EB: 7858e-6, FB: 3929e-6, GB: 7858e-6, HB: 7858e-6, IB: 7858e-6, JB: 3867e-6, KB: 7858e-6, LB: 0.019645, MB: 0.047148, NB: 3867e-6, OB: 3929e-6, PB: 3929e-6, QB: 7858e-6, RB: 3867e-6, SB: 3929e-6, TB: 0.03929, UB: 3929e-6, VB: 3702e-6, rB: 3702e-6, WB: 0.011787, sB: 7858e-6, XB: 3929e-6, YB: 0.011787, c: 3929e-6, ZB: 0.011787, aB: 0.027503, bB: 0.011787, cB: 7858e-6, dB: 0.047148, eB: 0.023574, fB: 0.015716, gB: 0.023574, hB: 7858e-6, iB: 0.031432, jB: 0.047148, kB: 0.03929, lB: 0.015716, mB: 0.035361, P: 0.113941, Q: 0.043219, R: 0.03929, S: 0.082509, T: 0.086438, U: 0.121799, V: 0.11787, W: 0.121799, X: 0.023574, Y: 0.043219, Z: 0.023574, a: 0.062864, d: 0.051077, e: 0.047148, f: 0.03929, g: 0.023574, h: 0.082509, i: 0.066793, j: 0.062864, k: 0.066793, l: 0.113941, m: 0.110012, n: 0.208237, o: 0.664001, p: 4.8091, q: 16.604, b: 0.294675, H: 0.019645, uB: 0.011787, "9B": 0, AC: 0 }, B: "webkit", C: ["", "", "", "", "I", "r", "J", "D", "E", "F", "A", "B", "C", "K", "L", "G", "M", "N", "O", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "FB", "GB", "HB", "IB", "JB", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "rB", "WB", "sB", "XB", "YB", "c", "ZB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "lB", "mB", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "b", "H", "uB", "9B", "AC"], E: "Chrome", F: { "0": 1364428800, "1": 1369094400, "2": 1374105600, "3": 1376956800, "4": 1384214400, "5": 1389657600, "6": 1392940800, "7": 1397001600, "8": 1400544e3, "9": 1405468800, I: 1264377600, r: 1274745600, J: 1283385600, D: 1287619200, E: 1291248e3, F: 1296777600, A: 1299542400, B: 1303862400, C: 1307404800, K: 1312243200, L: 1316131200, G: 1316131200, M: 1319500800, N: 1323734400, O: 1328659200, s: 1332892800, t: 133704e4, u: 1340668800, v: 1343692800, w: 1348531200, x: 1352246400, y: 1357862400, z: 1361404800, AB: 1409011200, BB: 141264e4, CB: 1416268800, DB: 1421798400, EB: 1425513600, FB: 1429401600, GB: 143208e4, HB: 1437523200, IB: 1441152e3, JB: 1444780800, KB: 1449014400, LB: 1453248e3, MB: 1456963200, NB: 1460592e3, OB: 1464134400, PB: 1469059200, QB: 1472601600, RB: 1476230400, SB: 1480550400, TB: 1485302400, UB: 1489017600, VB: 149256e4, rB: 1496707200, WB: 1500940800, sB: 1504569600, XB: 1508198400, YB: 1512518400, c: 1516752e3, ZB: 1520294400, aB: 1523923200, bB: 1527552e3, cB: 1532390400, dB: 1536019200, eB: 1539648e3, fB: 1543968e3, gB: 154872e4, hB: 1552348800, iB: 1555977600, jB: 1559606400, kB: 1564444800, lB: 1568073600, mB: 1571702400, P: 1575936e3, Q: 1580860800, R: 1586304e3, S: 1589846400, T: 1594684800, U: 1598313600, V: 1601942400, W: 1605571200, X: 1611014400, Y: 1614556800, Z: 1618272e3, a: 1621987200, d: 1626739200, e: 1630368e3, f: 1632268800, g: 1634601600, h: 1637020800, i: 1641340800, j: 1643673600, k: 1646092800, l: 1648512e3, m: 1650931200, n: 1653350400, o: 1655769600, p: 1659398400, q: 1661817600, b: 1664236800, H: 1666656e3, uB: null, "9B": null, AC: null } }, E: { A: { I: 0, r: 8322e-6, J: 4656e-6, D: 4465e-6, E: 3929e-6, F: 3929e-6, A: 4425e-6, B: 4318e-6, C: 3801e-6, K: 0.027503, L: 0.11787, G: 0.027503, BC: 0, vB: 8692e-6, CC: 0.011787, DC: 456e-5, EC: 4283e-6, FC: 0.015716, wB: 7858e-6, nB: 0.019645, oB: 0.03929, xB: 0.259314, GC: 0.306462, HC: 0.051077, yB: 0.051077, zB: 0.141444, "0B": 0.31432, "1B": 1.77984, pB: 0.184663, "2B": 0.011787, IC: 0, JC: 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "BC", "vB", "I", "r", "CC", "J", "DC", "D", "EC", "E", "F", "FC", "A", "wB", "B", "nB", "C", "oB", "K", "xB", "L", "GC", "G", "HC", "yB", "zB", "0B", "1B", "pB", "2B", "IC", "JC", ""], E: "Safari", F: { BC: 1205798400, vB: 1226534400, I: 1244419200, r: 1275868800, CC: 131112e4, J: 1343174400, DC: 13824e5, D: 13824e5, EC: 1410998400, E: 1413417600, F: 1443657600, FC: 1458518400, A: 1474329600, wB: 1490572800, B: 1505779200, nB: 1522281600, C: 1537142400, oB: 1553472e3, K: 1568851200, xB: 1585008e3, L: 1600214400, GC: 1619395200, G: 1632096e3, HC: 1635292800, yB: 1639353600, zB: 1647216e3, "0B": 1652745600, "1B": 1658275200, pB: 1662940800, "2B": 1666569600, IC: null, JC: null } }, F: { A: { "0": 4393e-6, "1": 7858e-6, "2": 4879e-6, "3": 4879e-6, "4": 3929e-6, "5": 5152e-6, "6": 5014e-6, "7": 9758e-6, "8": 4879e-6, "9": 3929e-6, F: 82e-4, B: 0.016581, C: 4317e-6, G: 685e-5, M: 685e-5, N: 685e-5, O: 5014e-6, s: 6015e-6, t: 4879e-6, u: 6597e-6, v: 6597e-6, w: 0.013434, x: 6702e-6, y: 6015e-6, z: 5595e-6, AB: 4283e-6, BB: 4367e-6, CB: 4534e-6, DB: 7858e-6, EB: 4227e-6, FB: 4418e-6, GB: 4161e-6, HB: 4227e-6, IB: 4725e-6, JB: 0.011787, KB: 8942e-6, LB: 4707e-6, MB: 4827e-6, NB: 4707e-6, OB: 4707e-6, PB: 4326e-6, QB: 8922e-6, RB: 0.014349, SB: 4425e-6, TB: 472e-5, UB: 4425e-6, VB: 4425e-6, WB: 472e-5, XB: 4532e-6, YB: 4566e-6, c: 0.02283, ZB: 867e-5, aB: 4656e-6, bB: 4642e-6, cB: 3929e-6, dB: 944e-5, eB: 4293e-6, fB: 3929e-6, gB: 4298e-6, hB: 0.096692, iB: 4201e-6, jB: 4141e-6, kB: 4257e-6, lB: 3939e-6, mB: 8236e-6, P: 3855e-6, Q: 3939e-6, R: 8514e-6, tB: 3939e-6, S: 3939e-6, T: 3702e-6, U: 0.011787, V: 3855e-6, W: 3855e-6, X: 3929e-6, Y: 0.07858, Z: 0.887954, a: 0.035361, KC: 685e-5, LC: 0, MC: 8392e-6, NC: 4706e-6, nB: 6229e-6, "3B": 4879e-6, OC: 8786e-6, oB: 472e-5 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "F", "KC", "LC", "MC", "NC", "B", "nB", "3B", "OC", "C", "oB", "G", "M", "N", "O", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "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", "c", "ZB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "lB", "mB", "P", "Q", "R", "tB", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "", "", ""], E: "Opera", F: { "0": 1422316800, "1": 1425945600, "2": 1430179200, "3": 1433808e3, "4": 1438646400, "5": 1442448e3, "6": 1445904e3, "7": 1449100800, "8": 1454371200, "9": 1457308800, F: 1150761600, KC: 1223424e3, LC: 1251763200, MC: 1267488e3, NC: 1277942400, B: 1292457600, nB: 1302566400, "3B": 1309219200, OC: 1323129600, C: 1323129600, oB: 1352073600, G: 1372723200, M: 1377561600, N: 1381104e3, O: 1386288e3, s: 1390867200, t: 1393891200, u: 1399334400, v: 1401753600, w: 1405987200, x: 1409616e3, y: 1413331200, z: 1417132800, AB: 146232e4, BB: 1465344e3, CB: 1470096e3, DB: 1474329600, EB: 1477267200, FB: 1481587200, GB: 1486425600, HB: 1490054400, IB: 1494374400, JB: 1498003200, KB: 1502236800, LB: 1506470400, MB: 1510099200, NB: 1515024e3, OB: 1517961600, PB: 1521676800, QB: 1525910400, RB: 1530144e3, SB: 1534982400, TB: 1537833600, UB: 1543363200, VB: 1548201600, WB: 1554768e3, XB: 1561593600, YB: 1566259200, c: 1570406400, ZB: 1573689600, aB: 1578441600, bB: 1583971200, cB: 1587513600, dB: 1592956800, eB: 1595894400, fB: 1600128e3, gB: 1603238400, hB: 161352e4, iB: 1612224e3, jB: 1616544e3, kB: 1619568e3, lB: 1623715200, mB: 1627948800, P: 1631577600, Q: 1633392e3, R: 1635984e3, tB: 1638403200, S: 1642550400, T: 1644969600, U: 1647993600, V: 1650412800, W: 1652745600, X: 1654646400, Y: 1657152e3, Z: 1660780800, a: 1663113600 }, D: { F: "o", B: "o", C: "o", KC: "o", LC: "o", MC: "o", NC: "o", nB: "o", "3B": "o", OC: "o", oB: "o" } }, G: { A: { E: 0, vB: 0, PC: 0, "4B": 30538e-7, QC: 458069e-8, RC: 458069e-8, SC: 0.015269, TC: 916139e-8, UC: 0.0198497, VC: 0.0641297, WC: 458069e-8, XC: 0.074818, YC: 0.030538, ZC: 0.0244304, aC: 0.0290111, bC: 0.427531, cC: 0.0198497, dC: 0.0106883, eC: 0.04428, fC: 0.140475, gC: 0.432112, hC: 0.916139, iC: 0.230562, yB: 0.322175, zB: 0.426004, "0B": 1.04134, "1B": 8.71401, pB: 1.9132, "2B": 0.0244304 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "vB", "PC", "4B", "QC", "RC", "SC", "E", "TC", "UC", "VC", "WC", "XC", "YC", "ZC", "aC", "bC", "cC", "dC", "eC", "fC", "gC", "hC", "iC", "yB", "zB", "0B", "1B", "pB", "2B", "", "", ""], E: "Safari on iOS", F: { vB: 1270252800, PC: 1283904e3, "4B": 1299628800, QC: 1331078400, RC: 1359331200, SC: 1394409600, E: 1410912e3, TC: 1413763200, UC: 1442361600, VC: 1458518400, WC: 1473724800, XC: 1490572800, YC: 1505779200, ZC: 1522281600, aC: 1537142400, bC: 1553472e3, cC: 1568851200, dC: 1572220800, eC: 1580169600, fC: 1585008e3, gC: 1600214400, hC: 1619395200, iC: 1632096e3, yB: 1639353600, zB: 1647216e3, "0B": 1652659200, "1B": 1658275200, pB: 1662940800, "2B": 1666569600 } }, H: { A: { jC: 1.06906 }, B: "o", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "jC", "", "", ""], E: "Opera Mini", F: { jC: 1426464e3 } }, I: { A: { qB: 0, I: 0.024284, H: 0, kC: 0, lC: 6071e-6, mC: 0, nC: 0.024284, "4B": 0.078923, oC: 0, pC: 0.309621 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "kC", "lC", "mC", "qB", "I", "nC", "4B", "oC", "pC", "H", "", "", ""], E: "Android Browser", F: { kC: 1256515200, lC: 1274313600, mC: 1291593600, qB: 1298332800, I: 1318896e3, nC: 1341792e3, "4B": 1374624e3, oC: 1386547200, pC: 1401667200, H: 1666828800 } }, J: { A: { D: 0, A: 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "D", "A", "", "", ""], E: "Blackberry Browser", F: { D: 1325376e3, A: 1359504e3 } }, K: { A: { A: 0, B: 0, C: 0, c: 0.0111391, nB: 0, "3B": 0, oB: 0 }, B: "o", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "A", "B", "nB", "3B", "C", "oB", "c", "", "", ""], E: "Opera Mobile", F: { A: 1287100800, B: 1300752e3, nB: 1314835200, "3B": 1318291200, C: 1330300800, oB: 1349740800, c: 1613433600 }, D: { c: "webkit" } }, L: { A: { H: 41.2317 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "H", "", "", ""], E: "Chrome for Android", F: { H: 1666828800 } }, M: { A: { b: 0.297479 }, B: "moz", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "b", "", "", ""], E: "Firefox for Android", F: { b: 1666051200 } }, N: { A: { A: 0.0115934, B: 0.022664 }, B: "ms", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "A", "B", "", "", ""], E: "IE Mobile", F: { A: 1340150400, B: 1353456e3 } }, O: { A: { qC: 0.710307 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "qC", "", "", ""], E: "UC Browser for Android", F: { qC: 1634688e3 }, D: { qC: "webkit" } }, P: { A: { I: 0.166875, rC: 0.0103543, sC: 0.010304, tC: 0.062578, uC: 0.0103584, vC: 0.0104443, wB: 0.0105043, wC: 0.031289, xC: 0.0208593, yC: 0.062578, zC: 0.062578, "0C": 0.062578, pB: 0.114726, "1C": 0.239882, "2C": 2.02336 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "I", "rC", "sC", "tC", "uC", "vC", "wB", "wC", "xC", "yC", "zC", "0C", "pB", "1C", "2C", "", "", ""], E: "Samsung Internet", F: { I: 1461024e3, rC: 1481846400, sC: 1509408e3, tC: 1528329600, uC: 1546128e3, vC: 1554163200, wB: 1567900800, wC: 1582588800, xC: 1593475200, yC: 1605657600, zC: 1618531200, "0C": 1629072e3, pB: 1640736e3, "1C": 1651708800, "2C": 1659657600 } }, Q: { A: { xB: 0.139633 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "xB", "", "", ""], E: "QQ Browser", F: { xB: 1663718400 } }, R: { A: { "3C": 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "3C", "", "", ""], E: "Baidu Browser", F: { "3C": 1663027200 } }, S: { A: { "4C": 0.024284 }, B: "moz", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "4C", "", "", ""], E: "KaiOS Browser", F: { "4C": 1527811200 } } }; + } +}); + +// node_modules/caniuse-lite/dist/unpacker/agents.js +var require_agents2 = __commonJS({ + "node_modules/caniuse-lite/dist/unpacker/agents.js"(exports2, module2) { + "use strict"; + var browsers = require_browsers2().browsers; + var versions = require_browserVersions2().browserVersions; + var agentsData = require_agents(); + function unpackBrowserVersions(versionsData) { + return Object.keys(versionsData).reduce((usage, version) => { + usage[versions[version]] = versionsData[version]; + return usage; + }, {}); + } + module2.exports.agents = Object.keys(agentsData).reduce((map, key) => { + let versionsData = agentsData[key]; + map[browsers[key]] = Object.keys(versionsData).reduce((data, entry) => { + if (entry === "A") { + data.usage_global = unpackBrowserVersions(versionsData[entry]); + } else if (entry === "C") { + data.versions = versionsData[entry].reduce((list, version) => { + if (version === "") { + list.push(null); + } else { + list.push(versions[version]); + } + return list; + }, []); + } else if (entry === "D") { + data.prefix_exceptions = unpackBrowserVersions(versionsData[entry]); + } else if (entry === "E") { + data.browser = versionsData[entry]; + } else if (entry === "F") { + data.release_date = Object.keys(versionsData[entry]).reduce( + (map2, key2) => { + map2[versions[key2]] = versionsData[entry][key2]; + return map2; + }, + {} + ); + } else { + data.prefix = versionsData[entry]; + } + return data; + }, {}); + return map; + }, {}); + } +}); + +// node_modules/node-releases/data/release-schedule/release-schedule.json +var require_release_schedule = __commonJS({ + "node_modules/node-releases/data/release-schedule/release-schedule.json"(exports2, module2) { + module2.exports = { "v0.8": { start: "2012-06-25", end: "2014-07-31" }, "v0.10": { start: "2013-03-11", end: "2016-10-31" }, "v0.12": { start: "2015-02-06", end: "2016-12-31" }, v4: { start: "2015-09-08", lts: "2015-10-12", maintenance: "2017-04-01", end: "2018-04-30", codename: "Argon" }, v5: { start: "2015-10-29", maintenance: "2016-04-30", end: "2016-06-30" }, v6: { start: "2016-04-26", lts: "2016-10-18", maintenance: "2018-04-30", end: "2019-04-30", codename: "Boron" }, v7: { start: "2016-10-25", maintenance: "2017-04-30", end: "2017-06-30" }, v8: { start: "2017-05-30", lts: "2017-10-31", maintenance: "2019-01-01", end: "2019-12-31", codename: "Carbon" }, v9: { start: "2017-10-01", maintenance: "2018-04-01", end: "2018-06-30" }, v10: { start: "2018-04-24", lts: "2018-10-30", maintenance: "2020-05-19", end: "2021-04-30", codename: "Dubnium" }, v11: { start: "2018-10-23", maintenance: "2019-04-22", end: "2019-06-01" }, v12: { start: "2019-04-23", lts: "2019-10-21", maintenance: "2020-11-30", end: "2022-04-30", codename: "Erbium" }, v13: { start: "2019-10-22", maintenance: "2020-04-01", end: "2020-06-01" }, v14: { start: "2020-04-21", lts: "2020-10-27", maintenance: "2021-10-19", end: "2023-04-30", codename: "Fermium" }, v15: { start: "2020-10-20", maintenance: "2021-04-01", end: "2021-06-01" }, v16: { start: "2021-04-20", lts: "2021-10-26", maintenance: "2022-10-18", end: "2023-09-11", codename: "Gallium" }, v17: { start: "2021-10-19", maintenance: "2022-04-01", end: "2022-06-01" }, v18: { start: "2022-04-19", lts: "2022-10-25", maintenance: "2023-10-18", end: "2025-04-30", codename: "" }, v19: { start: "2022-10-18", maintenance: "2023-04-01", end: "2023-06-01" }, v20: { start: "2023-04-18", lts: "2023-10-24", maintenance: "2024-10-22", end: "2026-04-30", codename: "" } }; + } +}); + +// node_modules/electron-to-chromium/versions.js +var require_versions = __commonJS({ + "node_modules/electron-to-chromium/versions.js"(exports2, module2) { + module2.exports = { + "0.20": "39", + "0.21": "41", + "0.22": "41", + "0.23": "41", + "0.24": "41", + "0.25": "42", + "0.26": "42", + "0.27": "43", + "0.28": "43", + "0.29": "43", + "0.30": "44", + "0.31": "45", + "0.32": "45", + "0.33": "45", + "0.34": "45", + "0.35": "45", + "0.36": "47", + "0.37": "49", + "1.0": "49", + "1.1": "50", + "1.2": "51", + "1.3": "52", + "1.4": "53", + "1.5": "54", + "1.6": "56", + "1.7": "58", + "1.8": "59", + "2.0": "61", + "2.1": "61", + "3.0": "66", + "3.1": "66", + "4.0": "69", + "4.1": "69", + "4.2": "69", + "5.0": "73", + "6.0": "76", + "6.1": "76", + "7.0": "78", + "7.1": "78", + "7.2": "78", + "7.3": "78", + "8.0": "80", + "8.1": "80", + "8.2": "80", + "8.3": "80", + "8.4": "80", + "8.5": "80", + "9.0": "83", + "9.1": "83", + "9.2": "83", + "9.3": "83", + "9.4": "83", + "10.0": "85", + "10.1": "85", + "10.2": "85", + "10.3": "85", + "10.4": "85", + "11.0": "87", + "11.1": "87", + "11.2": "87", + "11.3": "87", + "11.4": "87", + "11.5": "87", + "12.0": "89", + "12.1": "89", + "12.2": "89", + "13.0": "91", + "13.1": "91", + "13.2": "91", + "13.3": "91", + "13.4": "91", + "13.5": "91", + "13.6": "91", + "14.0": "93", + "14.1": "93", + "14.2": "93", + "15.0": "94", + "15.1": "94", + "15.2": "94", + "15.3": "94", + "15.4": "94", + "15.5": "94", + "16.0": "96", + "16.1": "96", + "16.2": "96", + "17.0": "98", + "17.1": "98", + "17.2": "98", + "17.3": "98", + "17.4": "98", + "18.0": "100", + "18.1": "100", + "18.2": "100", + "18.3": "100", + "19.0": "102", + "19.1": "102", + "20.0": "104", + "20.1": "104", + "20.2": "104", + "20.3": "104", + "21.0": "106", + "21.1": "106", + "22.0": "108" + }; + } +}); + +// node_modules/browserslist/error.js +var require_error = __commonJS({ + "node_modules/browserslist/error.js"(exports2, module2) { + function BrowserslistError(message) { + this.name = "BrowserslistError"; + this.message = message; + this.browserslist = true; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, BrowserslistError); + } + } + BrowserslistError.prototype = Error.prototype; + module2.exports = BrowserslistError; + } +}); + +// node_modules/browserslist/parse.js +var require_parse3 = __commonJS({ + "node_modules/browserslist/parse.js"(exports2, module2) { + 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 }; + 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; + }); + } + module2.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; + }) + ); + }; + } +}); + +// node_modules/caniuse-lite/dist/lib/statuses.js +var require_statuses = __commonJS({ + "node_modules/caniuse-lite/dist/lib/statuses.js"(exports2, module2) { + module2.exports = { + 1: "ls", + 2: "rec", + 3: "pr", + 4: "cr", + 5: "wd", + 6: "other", + 7: "unoff" + }; + } +}); + +// node_modules/caniuse-lite/dist/lib/supported.js +var require_supported = __commonJS({ + "node_modules/caniuse-lite/dist/lib/supported.js"(exports2, module2) { + module2.exports = { + y: 1 << 0, + n: 1 << 1, + a: 1 << 2, + p: 1 << 3, + u: 1 << 4, + x: 1 << 5, + d: 1 << 6 + }; + } +}); + +// node_modules/caniuse-lite/dist/unpacker/feature.js +var require_feature = __commonJS({ + "node_modules/caniuse-lite/dist/unpacker/feature.js"(exports2, module2) { + "use strict"; + var statuses = require_statuses(); + var supported = require_supported(); + var browsers = require_browsers2().browsers; + var versions = require_browserVersions2().browserVersions; + var MATH2LOG = Math.log(2); + function unpackSupport(cipher) { + let stats = Object.keys(supported).reduce((list, support) => { + if (cipher & supported[support]) + list.push(support); + return list; + }, []); + let notes = cipher >> 7; + let notesArray = []; + while (notes) { + let note = Math.floor(Math.log(notes) / MATH2LOG) + 1; + notesArray.unshift(`#${note}`); + notes -= Math.pow(2, note - 1); + } + return stats.concat(notesArray).join(" "); + } + function unpackFeature(packed) { + let unpacked = { status: statuses[packed.B], title: packed.C }; + unpacked.stats = Object.keys(packed.A).reduce((browserStats, key) => { + let browser = packed.A[key]; + browserStats[browsers[key]] = Object.keys(browser).reduce( + (stats, support) => { + let packedVersions = browser[support].split(" "); + let unpacked2 = unpackSupport(support); + packedVersions.forEach((v) => stats[versions[v]] = unpacked2); + return stats; + }, + {} + ); + return browserStats; + }, {}); + return unpacked; + } + module2.exports = unpackFeature; + module2.exports.default = unpackFeature; + } +}); + +// node_modules/caniuse-lite/dist/unpacker/region.js +var require_region = __commonJS({ + "node_modules/caniuse-lite/dist/unpacker/region.js"(exports2, module2) { + "use strict"; + var browsers = require_browsers2().browsers; + function unpackRegion(packed) { + return Object.keys(packed).reduce((list, browser) => { + let data = packed[browser]; + list[browsers[browser]] = Object.keys(data).reduce((memo, key) => { + let stats = data[key]; + if (key === "_") { + stats.split(" ").forEach((version) => memo[version] = null); + } else { + memo[key] = stats; + } + return memo; + }, {}); + return list; + }, {}); + } + module2.exports = unpackRegion; + module2.exports.default = unpackRegion; + } +}); + +// node_modules/browserslist/node.js +var require_node2 = __commonJS({ + "node_modules/browserslist/node.js"(exports2, module2) { + var feature = require_feature().default; + var region = require_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 * 1e3; + 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 void 0; + } + 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 * 1e3; + } + function normalizeStats(data, stats) { + if (!data) { + data = {}; + } + if (stats && "dataByBrowser" in stats) { + stats = stats.dataByBrowser; + } + if (typeof stats !== "object") + return void 0; + 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]; + if ("0" in browserUsage) { + var versions = data[browser].versions; + browserUsage[versions[versions.length - 1]] = browserUsage[0]; + delete browserUsage[0]; + } + } + } + module2.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 : void 0; + }); + } + 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(module2.exports.readConfig(file), opts); + } + } else if (opts.path) { + return pickEnv(module2.exports.findConfig(opts.path), opts); + } else { + return void 0; + } + }, + 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) { + 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 module2.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 module2.exports.readConfig(config); + } else if (isFile(rc)) { + return module2.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; + } + }; + } +}); + +// node_modules/browserslist/index.js +var require_browserslist = __commonJS({ + "node_modules/browserslist/index.js"(exports2, module2) { + var jsReleases = require_envs(); + var agents = require_agents2().agents; + var jsEOL = require_release_schedule(); + var path = require("path"); + var e2c = require_versions(); + var BrowserslistError = require_error(); + var parse = require_parse3(); + var env = require_node2(); + var YEAR = 365.259641 * 24 * 60 * 60 * 1e3; + var ANDROID_EVERGREEN_FIRST = 37; + 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")); + } + function semverFilterLoose(operator, range) { + range = range.split(".").map(parseSimpleInt); + if (typeof range[1] === "undefined") { + range[1] = "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; + }; + } + } + 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 / 1e3; + 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 mapVersions(data, map) { + data.versions = data.versions.map(function(i2) { + return map[i2] || i2; + }); + data.released = data.released.map(function(i2) { + return map[i2] || i2; + }); + var fixedDate = {}; + for (var i in data.releaseDate) { + fixedDate[map[i] || i] = data.releaseDate[i]; + } + data.releaseDate = fixedDate; + return data; + } + 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; + if (name === "op_mob") { + cloned = mapVersions(cloned, { "10.0-10.1": "10" }); + } + return cloned; + } + } + return browserslist.data[name]; + } + function normalizeAndroidVersions(androidVersions, chromeVersions) { + var firstEvergreen = ANDROID_EVERGREEN_FIRST; + var last = chromeVersions[chromeVersions.length - 1]; + return androidVersions.filter(function(version) { + return /^(?:[2-4]\.|[34]$)/.test(version); + }).concat(chromeVersions.slice(firstEvergreen - last - 1)); + } + function normalizeAndroidData(android, chrome) { + android.released = normalizeAndroidVersions(android.released, chrome.released); + android.versions = normalizeAndroidVersions(android.versions, chrome.versions); + 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." + ); + } + function filterAndroid(list, versions, context) { + if (context.mobileToDesktop) + return list; + var released = browserslist.data.android.released; + var last = released[released.length - 1]; + var diff = last - ANDROID_EVERGREEN_FIRST - versions; + if (diff > 0) { + return list.slice(-1); + } else { + return list.slice(diff - 1); + } + } + 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]) { + 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 (!process.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); + }; + browserslist.cache = {}; + browserslist.data = {}; + browserslist.usage = { + global: {}, + custom: null + }; + browserslist.defaults = ["> 0.5%", "last 2 versions", "Firefox ESR", "not dead"]; + 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" + }; + browserslist.desktopNames = { + and_chr: "chrome", + and_ff: "firefox", + ie_mob: "ie", + op_mob: "opera", + android: "chrome" + }; + 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 === void 0) { + 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)); + if (data.name === "android") { + list = filterAndroid(list, 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)); + if (data.name === "android") { + list = filterAndroid(list, 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)); + if (data.name === "android") { + list = filterAndroid(list, 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)); + if (data.name === "android") { + list = filterAndroid(list, 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: ["feature"], + regexp: /^supports\s+([\w-]+)$/, + select: function(context, node) { + env.loadFeature(browserslist.cache, node.feature); + var features = browserslist.cache[node.feature]; + return Object.keys(features).reduce(function(result, version) { + var flags = features[version]; + if (flags.indexOf("y") >= 0 || flags.indexOf("a") >= 0) { + result.push(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 102"]; + } + }, + 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(void 0, 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); + } + } + } + }; + (function() { + for (var name in agents) { + var browser = agents[name]; + browserslist.data[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.versionAliases.op_mob["59"] = "58"; + browserslist.nodeVersions = jsReleases.map(function(release) { + return release.version; + }); + })(); + module2.exports = browserslist; + } +}); + +// node_modules/caniuse-lite/data/features/aac.js +var require_aac = __commonJS({ + "node_modules/caniuse-lite/data/features/aac.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B", "132": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F", "16": "A B" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "2": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "132": "b" }, N: { "1": "A", "2": "B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "132": "4C" } }, B: 6, C: "AAC audio file format" }; + } +}); + +// node_modules/caniuse-lite/data/features/abortcontroller.js +var require_abortcontroller = __commonJS({ + "node_modules/caniuse-lite/data/features/abortcontroller.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G" }, C: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB 7B 8B" }, D: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB" }, E: { "1": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB", "130": "C nB" }, F: { "1": "QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB KC LC MC NC nB 3B OC oB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "AbortController & AbortSignal" }; + } +}); + +// node_modules/caniuse-lite/data/features/ac3-ec3.js +var require_ac3_ec3 = __commonJS({ + "node_modules/caniuse-lite/data/features/ac3-ec3.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O", "2": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC", "132": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D", "132": "A" }, K: { "2": "A B C c nB 3B", "132": "oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs" }; + } +}); + +// node_modules/caniuse-lite/data/features/accelerometer.js +var require_accelerometer = __commonJS({ + "node_modules/caniuse-lite/data/features/accelerometer.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB", "194": "VB rB WB sB XB YB c ZB aB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "Accelerometer" }; + } +}); + +// node_modules/caniuse-lite/data/features/addeventlistener.js +var require_addeventlistener = __commonJS({ + "node_modules/caniuse-lite/data/features/addeventlistener.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "130": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "257": "6B qB I r J 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "EventTarget.addEventListener()" }; + } +}); + +// node_modules/caniuse-lite/data/features/alternate-stylesheet.js +var require_alternate_stylesheet = __commonJS({ + "node_modules/caniuse-lite/data/features/alternate-stylesheet.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "E F A B", "2": "J D 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "F B C KC LC MC NC nB 3B OC oB", "16": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "16": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "16": "D A" }, K: { "2": "c", "16": "A B C nB 3B oB" }, L: { "16": "H" }, M: { "16": "b" }, N: { "16": "A B" }, O: { "16": "qC" }, P: { "16": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "16": "3C" }, S: { "1": "4C" } }, B: 1, C: "Alternate stylesheet" }; + } +}); + +// node_modules/caniuse-lite/data/features/ambient-light.js +var require_ambient_light = __commonJS({ + "node_modules/caniuse-lite/data/features/ambient-light.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K", "132": "L G M N O", "322": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B", "132": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB", "194": "WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB", "322": "VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB KC LC MC NC nB 3B OC oB", "322": "hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "132": "4C" } }, B: 4, C: "Ambient Light Sensor" }; + } +}); + +// node_modules/caniuse-lite/data/features/apng.js +var require_apng = __commonJS({ + "node_modules/caniuse-lite/data/features/apng.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B" }, D: { "1": "rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB" }, E: { "1": "E F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC EC" }, F: { "1": "B C JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "0 1 2 3 4 5 6 7 8 9 F G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 7, C: "Animated PNG (APNG)" }; + } +}); + +// node_modules/caniuse-lite/data/features/array-find-index.js +var require_array_find_index = __commonJS({ + "node_modules/caniuse-lite/data/features/array-find-index.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x 7B 8B" }, D: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB" }, E: { "1": "E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC" }, F: { "1": "5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D", "16": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Array.prototype.findIndex" }; + } +}); + +// node_modules/caniuse-lite/data/features/array-find.js +var require_array_find = __commonJS({ + "node_modules/caniuse-lite/data/features/array-find.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "16": "C K L" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x 7B 8B" }, D: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB" }, E: { "1": "E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC" }, F: { "1": "5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D", "16": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Array.prototype.find" }; + } +}); + +// node_modules/caniuse-lite/data/features/array-flat.js +var require_array_flat = __commonJS({ + "node_modules/caniuse-lite/data/features/array-flat.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB 7B 8B" }, D: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB" }, E: { "1": "C K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB nB" }, F: { "1": "TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB KC LC MC NC nB 3B OC oB" }, G: { "1": "aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "flat & flatMap array methods" }; + } +}); + +// node_modules/caniuse-lite/data/features/array-includes.js +var require_array_includes = __commonJS({ + "node_modules/caniuse-lite/data/features/array-includes.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K" }, C: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB 7B 8B" }, D: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Array.prototype.includes" }; + } +}); + +// node_modules/caniuse-lite/data/features/arrow-functions.js +var require_arrow_functions = __commonJS({ + "node_modules/caniuse-lite/data/features/arrow-functions.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B" }, D: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Arrow functions" }; + } +}); + +// node_modules/caniuse-lite/data/features/asmjs.js +var require_asmjs = __commonJS({ + "node_modules/caniuse-lite/data/features/asmjs.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O", "132": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "322": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B" }, D: { "2": "0 I r J D E F A B C K L G M N O s t u v w x y z", "132": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "132": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "132": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "132": "c" }, L: { "132": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "132": "qC" }, P: { "2": "I", "132": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "132": "xB" }, R: { "132": "3C" }, S: { "1": "4C" } }, B: 6, C: "asm.js" }; + } +}); + +// node_modules/caniuse-lite/data/features/async-clipboard.js +var require_async_clipboard = __commonJS({ + "node_modules/caniuse-lite/data/features/async-clipboard.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB 7B 8B", "132": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB", "66": "VB rB WB sB" }, E: { "1": "L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB" }, F: { "1": "MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC", "260": "gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "260": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "260": "c" }, L: { "1": "H" }, M: { "132": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC", "260": "vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Asynchronous Clipboard API" }; + } +}); + +// node_modules/caniuse-lite/data/features/async-functions.js +var require_async_functions = __commonJS({ + "node_modules/caniuse-lite/data/features/async-functions.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K", "194": "L" }, C: { "1": "PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B" }, D: { "1": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC", "514": "wB" }, F: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB KC LC MC NC nB 3B OC oB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC", "514": "XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "Async functions" }; + } +}); + +// node_modules/caniuse-lite/data/features/atob-btoa.js +var require_atob_btoa = __commonJS({ + "node_modules/caniuse-lite/data/features/atob-btoa.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a NC nB 3B OC oB", "2": "F KC LC", "16": "MC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "16": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Base64 encoding and decoding" }; + } +}); + +// node_modules/caniuse-lite/data/features/audio-api.js +var require_audio_api = __commonJS({ + "node_modules/caniuse-lite/data/features/audio-api.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x 7B 8B" }, D: { "1": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K", "33": "0 1 2 3 4 5 6 L G M N O s t u v w x y z" }, E: { "1": "G GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "33": "J D E F A B C K L DC EC FC wB nB oB xB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "G M N O s t u" }, G: { "1": "hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "33": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "Web Audio API" }; + } +}); + +// node_modules/caniuse-lite/data/features/audio.js +var require_audio = __commonJS({ + "node_modules/caniuse-lite/data/features/audio.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "132": "I r J D E F A B C K L G M N O s 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F", "4": "KC LC" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "2": "kC lC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Audio element" }; + } +}); + +// node_modules/caniuse-lite/data/features/audiotracks.js +var require_audiotracks = __commonJS({ + "node_modules/caniuse-lite/data/features/audiotracks.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O", "322": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB", "322": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC" }, F: { "2": "0 1 2 3 4 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "322": "5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "322": "H" }, M: { "2": "b" }, N: { "1": "A B" }, O: { "322": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "322": "xB" }, R: { "322": "3C" }, S: { "194": "4C" } }, B: 1, C: "Audio Tracks" }; + } +}); + +// node_modules/caniuse-lite/data/features/autofocus.js +var require_autofocus = __commonJS({ + "node_modules/caniuse-lite/data/features/autofocus.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "Autofocus attribute" }; + } +}); + +// node_modules/caniuse-lite/data/features/auxclick.js +var require_auxclick = __commonJS({ + "node_modules/caniuse-lite/data/features/auxclick.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 7B 8B", "129": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Auxclick" }; + } +}); + +// node_modules/caniuse-lite/data/features/av1.js +var require_av1 = __commonJS({ + "node_modules/caniuse-lite/data/features/av1.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N", "194": "O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB 7B 8B", "66": "SB TB UB VB rB WB sB XB YB c", "260": "ZB", "516": "aB" }, D: { "1": "eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB", "66": "bB cB dB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1090": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "AV1 video format" }; + } +}); + +// node_modules/caniuse-lite/data/features/avif.js +var require_avif = __commonJS({ + "node_modules/caniuse-lite/data/features/avif.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB 7B 8B", "194": "lB mB P Q R tB S T U V W X Y Z a d", "257": "e f g h i j k l m n o p q b H uB" }, D: { "1": "U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB", "516": "2B IC JC" }, F: { "1": "fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB KC LC MC NC nB 3B OC oB" }, G: { "1": "2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B", "257": "pB" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "AVIF image format" }; + } +}); + +// node_modules/caniuse-lite/data/features/background-attachment.js +var require_background_attachment = __commonJS({ + "node_modules/caniuse-lite/data/features/background-attachment.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "132": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "132": "6B qB I r J D E F A B C K L G M N O s t u v w x 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J D E F A B C CC DC EC FC wB nB oB zB 0B 1B pB 2B IC JC", "132": "I K BC vB xB", "2050": "L G GC HC yB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "132": "F KC LC" }, G: { "2": "vB PC 4B", "772": "E QC RC SC TC UC VC WC XC YC ZC aC bC", "2050": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC oC pC", "132": "nC 4B" }, J: { "260": "D A" }, K: { "1": "B C nB 3B oB", "2": "c", "132": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "2": "I", "1028": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS background-attachment" }; + } +}); + +// node_modules/caniuse-lite/data/features/background-clip-text.js +var require_background_clip_text = __commonJS({ + "node_modules/caniuse-lite/data/features/background-clip-text.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "G M N O", "33": "C K L P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 7B 8B" }, D: { "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "L G GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC vB", "33": "I r J D E F A B C K CC DC EC FC wB nB oB xB" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B QC", "33": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC" }, H: { "2": "jC" }, I: { "16": "qB kC lC mC", "33": "I H nC 4B oC pC" }, J: { "33": "D A" }, K: { "16": "A B C nB 3B oB", "33": "c" }, L: { "33": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "33": "qC" }, P: { "33": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "33": "xB" }, R: { "33": "3C" }, S: { "1": "4C" } }, B: 7, C: "Background-clip: text" }; + } +}); + +// node_modules/caniuse-lite/data/features/background-img-opts.js +var require_background_img_opts = __commonJS({ + "node_modules/caniuse-lite/data/features/background-img-opts.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B", "36": "8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "516": "I r J D E F A B C K L" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "772": "I r J BC vB CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC", "36": "LC" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "4": "vB PC 4B RC", "516": "QC" }, H: { "132": "jC" }, I: { "1": "H oC pC", "36": "kC", "516": "qB I nC 4B", "548": "lC mC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS3 Background-image options" }; + } +}); + +// node_modules/caniuse-lite/data/features/background-position-x-y.js +var require_background_position_x_y = __commonJS({ + "node_modules/caniuse-lite/data/features/background-position-x-y.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "background-position-x & background-position-y" }; + } +}); + +// node_modules/caniuse-lite/data/features/background-repeat-round-space.js +var require_background_repeat_round_space = __commonJS({ + "node_modules/caniuse-lite/data/features/background-repeat-round-space.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E 5B", "132": "F" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 7B 8B" }, D: { "1": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F G M N O KC LC" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS background-repeat round and space" }; + } +}); + +// node_modules/caniuse-lite/data/features/background-sync.js +var require_background_sync = __commonJS({ + "node_modules/caniuse-lite/data/features/background-sync.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b 7B 8B", "16": "H uB" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "Background Sync API" }; + } +}); + +// node_modules/caniuse-lite/data/features/battery-status.js +var require_battery_status = __commonJS({ + "node_modules/caniuse-lite/data/features/battery-status.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "GB HB IB JB KB LB MB NB OB", "2": "6B qB I r J D E F PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "132": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB", "164": "A B C K L G" }, D: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z", "66": "AB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Battery Status API" }; + } +}); + +// node_modules/caniuse-lite/data/features/beacon.js +var require_beacon = __commonJS({ + "node_modules/caniuse-lite/data/features/beacon.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K" }, C: { "1": "4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x y KC LC MC NC nB 3B OC oB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Beacon API" }; + } +}); + +// node_modules/caniuse-lite/data/features/beforeafterprint.js +var require_beforeafterprint = __commonJS({ + "node_modules/caniuse-lite/data/features/beforeafterprint.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B", "16": "5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B" }, D: { "1": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB" }, E: { "1": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB oB" }, F: { "1": "NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB KC LC MC NC nB 3B OC oB" }, G: { "1": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "16": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "16": "A B" }, O: { "1": "qC" }, P: { "2": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "16": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Printing Events" }; + } +}); + +// node_modules/caniuse-lite/data/features/bigint.js +var require_bigint = __commonJS({ + "node_modules/caniuse-lite/data/features/bigint.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c 7B 8B", "194": "ZB aB bB" }, D: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB" }, E: { "1": "L G GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB xB" }, F: { "1": "RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB KC LC MC NC nB 3B OC oB" }, G: { "1": "gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "BigInt" }; + } +}); + +// node_modules/caniuse-lite/data/features/blobbuilder.js +var require_blobbuilder = __commonJS({ + "node_modules/caniuse-lite/data/features/blobbuilder.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B", "36": "J D E F A B C" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D", "36": "E F A B C K L G M N O s" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B C KC LC MC NC nB 3B OC" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC" }, H: { "2": "jC" }, I: { "1": "H", "2": "kC lC mC", "36": "qB I nC 4B oC pC" }, J: { "1": "A", "2": "D" }, K: { "1": "c oB", "2": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Blob constructing" }; + } +}); + +// node_modules/caniuse-lite/data/features/bloburls.js +var require_bloburls = __commonJS({ + "node_modules/caniuse-lite/data/features/bloburls.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "129": "A B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "129": "C K L" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D", "33": "E F A B C K L G M N O s t u v" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "33": "J" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "33": "RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB kC lC mC", "33": "I nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Blob URLs" }; + } +}); + +// node_modules/caniuse-lite/data/features/border-image.js +var require_border_image = __commonJS({ + "node_modules/caniuse-lite/data/features/border-image.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "129": "C K" }, C: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "260": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB", "804": "I r J D E F A B C K L 7B 8B" }, D: { "1": "TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "260": "OB PB QB RB SB", "388": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "1412": "0 1 2 G M N O s t u v w x y z", "1956": "I r J D E F A B C K L" }, E: { "1": "zB 0B 1B pB 2B IC JC", "129": "A B C K L G FC wB nB oB xB GC HC yB", "1412": "J D E F DC EC", "1956": "I r BC vB CC" }, F: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F KC LC", "260": "BB CB DB EB FB", "388": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB", "1796": "MC NC", "1828": "B C nB 3B OC oB" }, G: { "1": "zB 0B 1B pB 2B", "129": "VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB", "1412": "E RC SC TC UC", "1956": "vB PC 4B QC" }, H: { "1828": "jC" }, I: { "1": "H", "388": "oC pC", "1956": "qB I kC lC mC nC 4B" }, J: { "1412": "A", "1924": "D" }, K: { "1": "c", "2": "A", "1828": "B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "260": "rC sC", "388": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "260": "4C" } }, B: 4, C: "CSS3 Border images" }; + } +}); + +// node_modules/caniuse-lite/data/features/border-radius.js +var require_border_radius = __commonJS({ + "node_modules/caniuse-lite/data/features/border-radius.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "257": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB", "289": "qB 7B 8B", "292": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "I" }, E: { "1": "r D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "33": "I BC vB", "129": "J CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "33": "vB" }, H: { "2": "jC" }, I: { "1": "qB I H lC mC nC 4B oC pC", "33": "kC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "257": "4C" } }, B: 4, C: "CSS3 Border-radius (rounded corners)" }; + } +}); + +// node_modules/caniuse-lite/data/features/broadcastchannel.js +var require_broadcastchannel = __commonJS({ + "node_modules/caniuse-lite/data/features/broadcastchannel.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB 7B 8B" }, D: { "1": "RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB" }, F: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB KC LC MC NC nB 3B OC oB" }, G: { "1": "zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "BroadcastChannel" }; + } +}); + +// node_modules/caniuse-lite/data/features/brotli.js +var require_brotli = __commonJS({ + "node_modules/caniuse-lite/data/features/brotli.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L" }, C: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB 7B 8B" }, D: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB", "194": "MB", "257": "NB" }, E: { "1": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB", "513": "B C nB oB" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "194": "9 AB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Brotli Accept-Encoding/Content-Encoding" }; + } +}); + +// node_modules/caniuse-lite/data/features/calc.js +var require_calc = __commonJS({ + "node_modules/caniuse-lite/data/features/calc.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "260": "F", "516": "A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "33": "I r J D E F A B C K L G" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O", "33": "s t u v w x y" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "33": "J" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "33": "RC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B", "132": "oC pC" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "calc() as CSS unit value" }; + } +}); + +// node_modules/caniuse-lite/data/features/canvas-blending.js +var require_canvas_blending = __commonJS({ + "node_modules/caniuse-lite/data/features/canvas-blending.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s 7B 8B" }, D: { "1": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M KC LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Canvas blend modes" }; + } +}); + +// node_modules/caniuse-lite/data/features/canvas-text.js +var require_canvas_text = __commonJS({ + "node_modules/caniuse-lite/data/features/canvas-text.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "5B", "8": "J D E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "8": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "8": "F KC LC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "8": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Text API for Canvas" }; + } +}); + +// node_modules/caniuse-lite/data/features/canvas.js +var require_canvas = __commonJS({ + "node_modules/caniuse-lite/data/features/canvas.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "5B", "8": "J D E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 8B", "132": "6B qB 7B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "132": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "260": "jC" }, I: { "1": "qB I H nC 4B oC pC", "132": "kC lC mC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Canvas (basic support)" }; + } +}); + +// node_modules/caniuse-lite/data/features/ch-unit.js +var require_ch_unit = __commonJS({ + "node_modules/caniuse-lite/data/features/ch-unit.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "132": "F A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "ch (character) unit" }; + } +}); + +// node_modules/caniuse-lite/data/features/chacha20-poly1305.js +var require_chacha20_poly1305 = __commonJS({ + "node_modules/caniuse-lite/data/features/chacha20-poly1305.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB 7B 8B" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 I r J D E F A B C K L G M N O s t u v w x y z", "129": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC", "16": "pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "ChaCha20-Poly1305 cipher suites for TLS" }; + } +}); + +// node_modules/caniuse-lite/data/features/channel-messaging.js +var require_channel_messaging = __commonJS({ + "node_modules/caniuse-lite/data/features/channel-messaging.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x y 7B 8B", "194": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a NC nB 3B OC oB", "2": "F KC LC", "16": "MC" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Channel messaging" }; + } +}); + +// node_modules/caniuse-lite/data/features/childnode-remove.js +var require_childnode_remove = __commonJS({ + "node_modules/caniuse-lite/data/features/childnode-remove.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "16": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v w" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "16": "J" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "ChildNode.remove()" }; + } +}); + +// node_modules/caniuse-lite/data/features/classlist.js +var require_classlist = __commonJS({ + "node_modules/caniuse-lite/data/features/classlist.js"(exports2, module2) { + module2.exports = { A: { A: { "8": "J D E F 5B", "1924": "A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "8": "6B qB 7B", "516": "x y", "772": "I r J D E F A B C K L G M N O s t u v w 8B" }, D: { "1": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "8": "I r J D", "516": "0 x y z", "772": "w", "900": "E F A B C K L G M N O s t u v" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "I r BC vB", "900": "J CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "8": "F B KC LC MC NC nB", "900": "C 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "8": "vB PC 4B", "900": "QC RC" }, H: { "900": "jC" }, I: { "1": "H oC pC", "8": "kC lC mC", "900": "qB I nC 4B" }, J: { "1": "A", "900": "D" }, K: { "1": "c", "8": "A B", "900": "C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "900": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "classList (DOMTokenList)" }; + } +}); + +// node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js +var require_client_hints_dpr_width_viewport = __commonJS({ + "node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "Client Hints: DPR, Width, Viewport-Width" }; + } +}); + +// node_modules/caniuse-lite/data/features/clipboard.js +var require_clipboard = __commonJS({ + "node_modules/caniuse-lite/data/features/clipboard.js"(exports2, module2) { + module2.exports = { A: { A: { "2436": "J D E F A B 5B" }, B: { "260": "N O", "2436": "C K L G M", "8196": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B", "772": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB", "4100": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "I r J D E F A B C", "2564": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB BB CB DB EB FB", "8196": "VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "10244": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB" }, E: { "1": "C K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC vB", "2308": "A B wB nB", "2820": "I r J D E F CC DC EC FC" }, F: { "2": "F B KC LC MC NC nB 3B OC", "16": "C", "516": "oB", "2564": "0 1 2 G M N O s t u v w x y z", "8196": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "10244": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB" }, G: { "1": "aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B", "2820": "E QC RC SC TC UC VC WC XC YC ZC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "260": "H", "2308": "oC pC" }, J: { "2": "D", "2308": "A" }, K: { "2": "A B C nB 3B", "16": "oB", "260": "c" }, L: { "8196": "H" }, M: { "1028": "b" }, N: { "2": "A B" }, O: { "8196": "qC" }, P: { "2052": "rC sC", "2308": "I", "8196": "tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "8196": "xB" }, R: { "8196": "3C" }, S: { "4100": "4C" } }, B: 5, C: "Synchronous Clipboard API" }; + } +}); + +// node_modules/caniuse-lite/data/features/colr-v1.js +var require_colr_v1 = __commonJS({ + "node_modules/caniuse-lite/data/features/colr-v1.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "j k l m n o p q b H", "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i" }, C: { "1": "H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i 7B 8B", "258": "j k l m n o p", "578": "q b" }, D: { "1": "j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y", "194": "Z a d e f g h i" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "16": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "16": "A B" }, O: { "2": "qC" }, P: { "1": "2C", "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "COLR/CPAL(v1) Font Formats" }; + } +}); + +// node_modules/caniuse-lite/data/features/colr.js +var require_colr = __commonJS({ + "node_modules/caniuse-lite/data/features/colr.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "257": "F A B" }, B: { "1": "C K L G M N O", "513": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB", "513": "fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "L G GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB", "129": "B C K nB oB xB" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB KC LC MC NC nB 3B OC oB", "513": "VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "16": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "16": "A B" }, O: { "1": "qC" }, P: { "1": "wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "COLR/CPAL(v0) Font Formats" }; + } +}); + +// node_modules/caniuse-lite/data/features/comparedocumentposition.js +var require_comparedocumentposition = __commonJS({ + "node_modules/caniuse-lite/data/features/comparedocumentposition.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "16": "6B qB 7B 8B" }, D: { "1": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L", "132": "0 1 2 G M N O s t u v w x y z" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r J BC vB", "132": "D E F DC EC FC", "260": "CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "16": "F B KC LC MC NC nB 3B", "132": "G M" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB", "132": "E PC 4B QC RC SC TC UC VC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "16": "kC lC", "132": "qB I mC nC 4B" }, J: { "132": "D A" }, K: { "1": "C c oB", "16": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Node.compareDocumentPosition()" }; + } +}); + +// node_modules/caniuse-lite/data/features/console-basic.js +var require_console_basic = __commonJS({ + "node_modules/caniuse-lite/data/features/console-basic.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D 5B", "132": "E F" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "2": "F KC LC MC NC" }, G: { "1": "vB PC 4B QC", "513": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "4097": "jC" }, I: { "1025": "qB I H kC lC mC nC 4B oC pC" }, J: { "258": "D A" }, K: { "2": "A", "258": "B C nB 3B oB", "1025": "c" }, L: { "1025": "H" }, M: { "2049": "b" }, N: { "258": "A B" }, O: { "258": "qC" }, P: { "1025": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1025": "3C" }, S: { "1": "4C" } }, B: 1, C: "Basic console logging functions" }; + } +}); + +// node_modules/caniuse-lite/data/features/console-time.js +var require_console_time = __commonJS({ + "node_modules/caniuse-lite/data/features/console-time.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "2": "F KC LC MC NC", "16": "B" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "c", "16": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "console.time and console.timeEnd" }; + } +}); + +// node_modules/caniuse-lite/data/features/const.js +var require_const = __commonJS({ + "node_modules/caniuse-lite/data/features/const.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "2052": "B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "132": "6B qB I r J D E F A B C 7B 8B", "260": "0 1 2 3 4 5 6 7 8 K L G M N O s t u v w x y z" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "260": "I r J D E F A B C K L G M N O s t", "772": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB", "1028": "EB FB GB HB IB JB KB LB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "260": "I r A BC vB wB", "772": "J D E F CC DC EC FC" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F KC", "132": "B LC MC NC nB 3B", "644": "C OC oB", "772": "0 G M N O s t u v w x y z", "1028": "1 2 3 4 5 6 7 8" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "260": "vB PC 4B WC XC", "772": "E QC RC SC TC UC VC" }, H: { "644": "jC" }, I: { "1": "H", "16": "kC lC", "260": "mC", "772": "qB I nC 4B oC pC" }, J: { "772": "D A" }, K: { "1": "c", "132": "A B nB 3B", "644": "C oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "1028": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "const" }; + } +}); + +// node_modules/caniuse-lite/data/features/constraint-validation.js +var require_constraint_validation = __commonJS({ + "node_modules/caniuse-lite/data/features/constraint-validation.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "900": "A B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "388": "L G M", "900": "C K" }, C: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "260": "MB NB", "388": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB", "900": "0 1 I r J D E F A B C K L G M N O s t u v w x y z" }, D: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L", "388": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB", "900": "G M N O s t u v w x" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r BC vB", "388": "E F EC FC", "900": "J D CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F B KC LC MC NC nB 3B", "388": "G M N O s t u v w x y z", "900": "C OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B", "388": "E SC TC UC VC", "900": "QC RC" }, H: { "2": "jC" }, I: { "1": "H", "16": "qB kC lC mC", "388": "oC pC", "900": "I nC 4B" }, J: { "16": "D", "388": "A" }, K: { "1": "c", "16": "A B nB 3B", "900": "C oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "900": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "388": "4C" } }, B: 1, C: "Constraint Validation API" }; + } +}); + +// node_modules/caniuse-lite/data/features/contenteditable.js +var require_contenteditable = __commonJS({ + "node_modules/caniuse-lite/data/features/contenteditable.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B", "4": "qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "D A" }, K: { "1": "c oB", "2": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "contenteditable attribute (basic support)" }; + } +}); + +// node_modules/caniuse-lite/data/features/contentsecuritypolicy.js +var require_contentsecuritypolicy = __commonJS({ + "node_modules/caniuse-lite/data/features/contentsecuritypolicy.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "132": "A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "129": "I r J D E F A B C K L G M N O s t u v" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K", "257": "L G M N O s t u v w x" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB", "257": "J DC", "260": "CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B", "257": "RC", "260": "QC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D", "257": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Content Security Policy 1.0" }; + } +}); + +// node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js +var require_contentsecuritypolicy2 = __commonJS({ + "node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L", "4100": "G M N O" }, C: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "132": "4 5 6 7", "260": "8", "516": "9 AB BB CB DB EB FB GB HB" }, D: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 I r J D E F A B C K L G M N O s t u v w x y z", "1028": "9 AB BB", "2052": "CB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v KC LC MC NC nB 3B OC oB", "1028": "w x y", "2052": "z" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "Content Security Policy Level 2" }; + } +}); + +// node_modules/caniuse-lite/data/features/cookie-store-api.js +var require_cookie_store_api = __commonJS({ + "node_modules/caniuse-lite/data/features/cookie-store-api.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O", "194": "P Q R S T U V" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB", "194": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB KC LC MC NC nB 3B OC oB", "194": "OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "Cookie Store API" }; + } +}); + +// node_modules/caniuse-lite/data/features/cors.js +var require_cors = __commonJS({ + "node_modules/caniuse-lite/data/features/cors.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D 5B", "132": "A", "260": "E F" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB", "1025": "sB XB YB c ZB aB bB cB dB eB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "I r J D E F A B C" }, E: { "2": "BC vB", "513": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "644": "I r CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC nB 3B OC" }, G: { "513": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "644": "vB PC 4B QC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "132": "qB I kC lC mC nC 4B" }, J: { "1": "A", "132": "D" }, K: { "1": "C c oB", "2": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "132": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Cross-Origin Resource Sharing" }; + } +}); + +// node_modules/caniuse-lite/data/features/createimagebitmap.js +var require_createimagebitmap = __commonJS({ + "node_modules/caniuse-lite/data/features/createimagebitmap.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB 7B 8B", "1028": "e f g h i j k l m n o p q b H uB", "3076": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d" }, D: { "1": "rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB", "132": "NB OB", "260": "PB QB", "516": "RB SB TB UB VB" }, E: { "2": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB GC", "4100": "G HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "132": "AB BB", "260": "CB DB", "516": "EB FB GB HB IB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC", "4100": "iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1028": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "16": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "3076": "4C" } }, B: 1, C: "createImageBitmap" }; + } +}); + +// node_modules/caniuse-lite/data/features/credential-management.js +var require_credential_management = __commonJS({ + "node_modules/caniuse-lite/data/features/credential-management.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB", "66": "LB MB NB", "129": "OB PB QB RB SB TB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB KC LC MC NC nB 3B OC oB" }, G: { "1": "gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Credential Management API" }; + } +}); + +// node_modules/caniuse-lite/data/features/cryptography.js +var require_cryptography = __commonJS({ + "node_modules/caniuse-lite/data/features/cryptography.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "5B", "8": "J D E F A", "164": "B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "513": "C K L G M N O" }, C: { "1": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "8": "0 1 2 3 4 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "66": "5 6" }, D: { "1": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "8": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "I r J D BC vB CC DC", "289": "E F A EC FC wB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "8": "F B C G M N O s t u v w KC LC MC NC nB 3B OC oB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "8": "vB PC 4B QC RC SC", "289": "E TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "8": "qB I kC lC mC nC 4B oC pC" }, J: { "8": "D A" }, K: { "1": "c", "8": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "8": "A", "164": "B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "Web Cryptography" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-all.js +var require_css_all = __commonJS({ + "node_modules/caniuse-lite/data/features/css-all.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w KC LC MC NC nB 3B OC oB" }, G: { "1": "VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC" }, H: { "2": "jC" }, I: { "1": "H pC", "2": "qB I kC lC mC nC 4B oC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS all property" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-animation.js +var require_css_animation = __commonJS({ + "node_modules/caniuse-lite/data/features/css-animation.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I 7B 8B", "33": "r J D E F A B C K L G" }, D: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB", "33": "J D E CC DC EC", "292": "I r" }, F: { "1": "3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC nB 3B OC", "33": "0 1 2 C G M N O s t u v w x y z" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "33": "E RC SC TC", "164": "vB PC 4B QC" }, H: { "2": "jC" }, I: { "1": "H", "33": "I nC 4B oC pC", "164": "qB kC lC mC" }, J: { "33": "D A" }, K: { "1": "c oB", "2": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "CSS Animation" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-any-link.js +var require_css_any_link = __commonJS({ + "node_modules/caniuse-lite/data/features/css-any-link.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "16": "6B", "33": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB 7B 8B" }, D: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r J BC vB CC", "33": "D E DC EC" }, F: { "1": "PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B QC", "33": "E RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "16": "qB I kC lC mC nC 4B", "33": "oC pC" }, J: { "16": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "vC wB wC xC yC zC 0C pB 1C 2C", "16": "I", "33": "rC sC tC uC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "33": "4C" } }, B: 5, C: "CSS :any-link selector" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-appearance.js +var require_css_appearance = __commonJS({ + "node_modules/caniuse-lite/data/features/css-appearance.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "T U V W X Y Z a d e f g h i j k l m n o p q b H", "33": "S", "164": "P Q R", "388": "C K L G M N O" }, C: { "1": "Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "164": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P", "676": "0 1 2 3 4 5 6 7 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "S", "164": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R" }, E: { "1": "zB 0B 1B pB 2B IC JC", "164": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB" }, F: { "1": "hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "eB fB gB", "164": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB" }, G: { "1": "zB 0B 1B pB 2B", "164": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, H: { "2": "jC" }, I: { "1": "H", "164": "qB I kC lC mC nC 4B oC pC" }, J: { "164": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A", "388": "B" }, O: { "164": "qC" }, P: { "164": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "164": "xB" }, R: { "1": "3C" }, S: { "164": "4C" } }, B: 5, C: "CSS Appearance" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-at-counter-style.js +var require_css_at_counter_style = __commonJS({ + "node_modules/caniuse-lite/data/features/css-at-counter-style.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z", "132": "a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "132": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z", "132": "a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB KC LC MC NC nB 3B OC oB", "132": "lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "132": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "132": "c" }, L: { "132": "H" }, M: { "132": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C", "132": "pB 1C 2C" }, Q: { "2": "xB" }, R: { "132": "3C" }, S: { "132": "4C" } }, B: 4, C: "CSS Counter Styles" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-autofill.js +var require_css_autofill = __commonJS({ + "node_modules/caniuse-lite/data/features/css-autofill.js"(exports2, module2) { + module2.exports = { A: { D: { "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, L: { "33": "H" }, B: { "2": "C K L G M N O", "33": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U 7B 8B" }, M: { "1": "b" }, A: { "2": "J D E F A B 5B" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, K: { "2": "A B C nB 3B oB", "33": "c" }, E: { "1": "G HC yB zB 0B 1B pB 2B IC", "2": "JC", "33": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB GC" }, G: { "1": "iC yB zB 0B 1B pB 2B", "33": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC" }, P: { "33": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, I: { "2": "qB I kC lC mC nC 4B", "33": "H oC pC" } }, B: 6, C: ":autofill CSS pseudo-class" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-backdrop-filter.js +var require_css_backdrop_filter = __commonJS({ + "node_modules/caniuse-lite/data/features/css-backdrop-filter.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M", "257": "N O" }, C: { "1": "o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB 7B 8B", "578": "eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n" }, D: { "1": "kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB", "194": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB" }, E: { "2": "I r J D E BC vB CC DC EC", "33": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "194": "7 8 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" }, G: { "2": "E vB PC 4B QC RC SC TC", "33": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "xC yC zC 0C pB 1C 2C", "2": "I", "194": "rC sC tC uC vC wB wC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS Backdrop Filter" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-background-offsets.js +var require_css_background_offsets = __commonJS({ + "node_modules/caniuse-lite/data/features/css-background-offsets.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v w x" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS background-position edge offsets" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-backgroundblendmode.js +var require_css_backgroundblendmode = __commonJS({ + "node_modules/caniuse-lite/data/features/css-backgroundblendmode.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "8 9 AB BB CB DB EB FB GB HB IB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 I r J D E F A B C K L G M N O s t u v w x y z", "260": "JB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC", "132": "E F A EC FC" }, F: { "1": "0 1 2 3 4 5 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u KC LC MC NC nB 3B OC oB", "260": "6" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC", "132": "E TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS background-blend-mode" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js +var require_css_boxdecorationbreak = __commonJS({ + "node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "164": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "2": "I r J D E F A B C K L G M N O s t u", "164": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J BC vB CC", "164": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F KC LC MC NC", "129": "B C nB 3B OC oB", "164": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "vB PC 4B QC RC", "164": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "132": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "164": "H oC pC" }, J: { "2": "D", "164": "A" }, K: { "2": "A", "129": "B C nB 3B oB", "164": "c" }, L: { "164": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "164": "qC" }, P: { "164": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "164": "xB" }, R: { "164": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS box-decoration-break" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-boxshadow.js +var require_css_boxshadow = __commonJS({ + "node_modules/caniuse-lite/data/features/css-boxshadow.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "33": "7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "I r J D E F" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "33": "r", "164": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "33": "PC 4B", "164": "vB" }, H: { "2": "jC" }, I: { "1": "I H nC 4B oC pC", "164": "qB kC lC mC" }, J: { "1": "A", "33": "D" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS3 Box-shadow" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-canvas.js +var require_css_canvas = __commonJS({ + "node_modules/caniuse-lite/data/features/css-canvas.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB" }, E: { "2": "BC vB", "33": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "8 9 F B 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 G M N O s t u v w x y z" }, G: { "33": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "H", "33": "qB I kC lC mC nC 4B oC pC" }, J: { "33": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "33": "I" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS Canvas Drawings" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-caret-color.js +var require_css_caret_color = __commonJS({ + "node_modules/caniuse-lite/data/features/css-caret-color.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 7B 8B" }, D: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB" }, F: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB KC LC MC NC nB 3B OC oB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 2, C: "CSS caret-color" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-cascade-layers.js +var require_css_cascade_layers = __commonJS({ + "node_modules/caniuse-lite/data/features/css-cascade-layers.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "k l m n o p q b H", "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g", "322": "h i j" }, C: { "1": "i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e 7B 8B", "194": "f g h" }, D: { "1": "k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g", "322": "h i j" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB" }, F: { "1": "V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U KC LC MC NC nB 3B OC oB" }, G: { "1": "zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "2C", "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS Cascade Layers" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-case-insensitive.js +var require_css_case_insensitive = __commonJS({ + "node_modules/caniuse-lite/data/features/css-case-insensitive.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB 7B 8B" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Case-insensitive CSS attribute selectors" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-clip-path.js +var require_css_clip_path = __commonJS({ + "node_modules/caniuse-lite/data/features/css-clip-path.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N", "260": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "3138": "O" }, C: { "1": "RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "132": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB 7B 8B", "644": "KB LB MB NB OB PB QB" }, D: { "2": "I r J D E F A B C K L G M N O s t u v w", "260": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "292": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB" }, E: { "2": "I r J BC vB CC DC", "260": "L G xB GC HC yB zB 0B 1B pB 2B IC JC", "292": "D E F A B C K EC FC wB nB oB" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "260": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "292": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB" }, G: { "2": "vB PC 4B QC RC", "260": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "292": "E SC TC UC VC WC XC YC ZC aC bC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "260": "H", "292": "oC pC" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "260": "c" }, L: { "260": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "260": "qC" }, P: { "292": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "260": "xB" }, R: { "260": "3C" }, S: { "644": "4C" } }, B: 4, C: "CSS clip-path property (for HTML)" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-color-adjust.js +var require_css_color_adjust = __commonJS({ + "node_modules/caniuse-lite/data/features/css-color-adjust.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "33": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 7B 8B" }, D: { "16": "I r J D E F A B C K L G M N O", "33": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r BC vB CC", "33": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "16": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "16": "qB I kC lC mC nC 4B oC pC", "33": "H" }, J: { "16": "D A" }, K: { "2": "A B C nB 3B oB", "33": "c" }, L: { "16": "H" }, M: { "1": "b" }, N: { "16": "A B" }, O: { "16": "qC" }, P: { "16": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "33": "xB" }, R: { "16": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS print-color-adjust" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-color-function.js +var require_css_color_function = __commonJS({ + "node_modules/caniuse-lite/data/features/css-color-function.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "322": "uB 9B AC" }, E: { "1": "G HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC", "132": "B C K L wB nB oB xB GC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC", "132": "XC YC ZC aC bC cC dC eC fC gC hC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS color() function" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-conic-gradients.js +var require_css_conic_gradients = __commonJS({ + "node_modules/caniuse-lite/data/features/css-conic-gradients.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB 7B 8B", "578": "jB kB lB mB P Q R tB" }, D: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB", "194": "rB WB sB XB YB c ZB aB bB cB" }, E: { "1": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB" }, F: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB KC LC MC NC nB 3B OC oB", "194": "JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, G: { "1": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Conical Gradients" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-container-queries.js +var require_css_container_queries = __commonJS({ + "node_modules/caniuse-lite/data/features/css-container-queries.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "b H", "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p", "516": "q" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a", "194": "e f g h i j k l m n o p", "450": "d", "516": "q" }, E: { "1": "pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB KC LC MC NC nB 3B OC oB", "194": "P Q R tB S T U V W X Y Z", "516": "a" }, G: { "1": "pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Container Queries (Size)" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-container-query-units.js +var require_css_container_query_units = __commonJS({ + "node_modules/caniuse-lite/data/features/css-container-query-units.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "q b H", "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d", "194": "m n o p", "450": "e f g h i j k l" }, E: { "1": "pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "1": "a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB KC LC MC NC nB 3B OC oB", "194": "P Q R tB S T U V W X Y Z" }, G: { "1": "pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Container Query Units" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-containment.js +var require_css_containment = __commonJS({ + "node_modules/caniuse-lite/data/features/css-containment.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB 7B 8B", "194": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB" }, D: { "1": "PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "66": "OB" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB" }, F: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB KC LC MC NC nB 3B OC oB", "66": "BB CB" }, G: { "1": "zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "194": "4C" } }, B: 2, C: "CSS Containment" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-content-visibility.js +var require_css_content_visibility = __commonJS({ + "node_modules/caniuse-lite/data/features/css-content-visibility.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O P Q R S T" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS content-visibility" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-counters.js +var require_css_counters = __commonJS({ + "node_modules/caniuse-lite/data/features/css-counters.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "E F A B", "2": "J D 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS Counters" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-crisp-edges.js +var require_css_crisp_edges = __commonJS({ + "node_modules/caniuse-lite/data/features/css-crisp-edges.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J 5B", "2340": "D E F A B" }, B: { "2": "C K L G M N O", "1025": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "e f g h i j k l m n o p q b H uB", "2": "6B qB 7B", "513": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d", "545": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB", "1025": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "164": "J", "4644": "D E F DC EC FC" }, F: { "2": "0 F B G M N O s t u v w x y z KC LC MC NC nB 3B", "545": "C OC oB", "1025": "1 2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B", "4260": "QC RC", "4644": "E SC TC UC VC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "1025": "H" }, J: { "2": "D", "4260": "A" }, K: { "2": "A B nB 3B", "545": "C oB", "1025": "c" }, L: { "1025": "H" }, M: { "1": "b" }, N: { "2340": "A B" }, O: { "1025": "qC" }, P: { "1025": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1025": "xB" }, R: { "1025": "3C" }, S: { "4097": "4C" } }, B: 4, C: "Crisp edges/pixelated images" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-cross-fade.js +var require_css_cross_fade = __commonJS({ + "node_modules/caniuse-lite/data/features/css-cross-fade.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "33": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "I r J D E F A B C K L G M", "33": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB", "33": "J D E F CC DC EC FC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B", "33": "E QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "33": "H oC pC" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "33": "c" }, L: { "33": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "33": "qC" }, P: { "33": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "33": "xB" }, R: { "33": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS Cross-Fade Function" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-default-pseudo.js +var require_css_default_pseudo = __commonJS({ + "node_modules/caniuse-lite/data/features/css-default-pseudo.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "16": "6B qB 7B 8B" }, D: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L", "132": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r BC vB", "132": "J D E F A CC DC EC FC" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F B KC LC MC NC nB 3B", "132": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB", "260": "C OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B QC RC", "132": "E SC TC UC VC WC" }, H: { "260": "jC" }, I: { "1": "H", "16": "qB kC lC mC", "132": "I nC 4B oC pC" }, J: { "16": "D", "132": "A" }, K: { "1": "c", "16": "A B C nB 3B", "260": "oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "132": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: ":default CSS pseudo-class" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-descendant-gtgt.js +var require_css_descendant_gtgt = __commonJS({ + "node_modules/caniuse-lite/data/features/css-descendant-gtgt.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "16": "P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "B", "2": "I r J D E F A C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Explicit descendant combinator >>" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-deviceadaptation.js +var require_css_deviceadaptation = __commonJS({ + "node_modules/caniuse-lite/data/features/css-deviceadaptation.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "164": "A B" }, B: { "66": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "164": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 I r J D E F A B C K L G M N O s t u v w x y z", "66": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB KC LC MC NC nB 3B OC oB", "66": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "292": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A c", "292": "B C nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "164": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "66": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Device Adaptation" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-dir-pseudo.js +var require_css_dir_pseudo = __commonJS({ + "node_modules/caniuse-lite/data/features/css-dir-pseudo.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p", "194": "q b H" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M 7B 8B", "33": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z", "194": "a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z KC LC MC NC nB 3B OC oB", "194": "a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "33": "4C" } }, B: 5, C: ":dir() CSS pseudo-class" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-display-contents.js +var require_css_display_contents = __commonJS({ + "node_modules/caniuse-lite/data/features/css-display-contents.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "132": "P Q R S T U V W X", "260": "Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "132": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB", "260": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB", "132": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X", "194": "VB rB WB sB XB YB c", "260": "Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B BC vB CC DC EC FC wB", "132": "C K L G nB oB xB GC HC yB zB 0B 1B", "516": "2B IC JC", "772": "pB" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB KC LC MC NC nB 3B OC oB", "132": "PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB", "260": "kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC", "132": "ZC aC bC cC dC eC", "260": "fC gC hC iC yB zB 0B 1B", "772": "pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "260": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "260": "c" }, L: { "260": "H" }, M: { "260": "b" }, N: { "2": "A B" }, O: { "132": "qC" }, P: { "2": "I rC sC tC uC", "132": "vC wB wC xC yC zC", "260": "0C pB 1C 2C" }, Q: { "132": "xB" }, R: { "260": "3C" }, S: { "132": "4C" } }, B: 4, C: "CSS display: contents" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-element-function.js +var require_css_element_function = __commonJS({ + "node_modules/caniuse-lite/data/features/css-element-function.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "164": "6B qB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "33": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "33": "4C" } }, B: 5, C: "CSS element() function" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-env-function.js +var require_css_env_function = __commonJS({ + "node_modules/caniuse-lite/data/features/css-env-function.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c 7B 8B" }, D: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB", "132": "B" }, F: { "1": "TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB KC LC MC NC nB 3B OC oB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC", "132": "YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS Environment Variables env()" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-exclusions.js +var require_css_exclusions = __commonJS({ + "node_modules/caniuse-lite/data/features/css-exclusions.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "33": "A B" }, B: { "2": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "33": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "33": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Exclusions Level 1" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-featurequeries.js +var require_css_featurequeries = __commonJS({ + "node_modules/caniuse-lite/data/features/css-featurequeries.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B" }, D: { "1": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B C KC LC MC NC nB 3B OC" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS Feature Queries" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-file-selector-button.js +var require_css_file_selector_button = __commonJS({ + "node_modules/caniuse-lite/data/features/css-file-selector-button.js"(exports2, module2) { + module2.exports = { A: { D: { "1": "Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X" }, L: { "1": "H" }, B: { "1": "Y Z a d e f g h i j k l m n o p q b H", "33": "C K L G M N O P Q R S T U V W X" }, C: { "1": "tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R 7B 8B" }, M: { "1": "b" }, A: { "2": "J D E F 5B", "33": "A B" }, F: { "1": "jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB" }, K: { "1": "c", "2": "A B C nB 3B oB" }, E: { "1": "G GC HC yB zB 0B 1B pB 2B IC", "2": "JC", "33": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB" }, G: { "1": "hC iC yB zB 0B 1B pB 2B", "33": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC" }, P: { "1": "0C pB 1C 2C", "33": "I rC sC tC uC vC wB wC xC yC zC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B", "33": "oC pC" } }, B: 6, C: "::file-selector-button CSS pseudo-element" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-filter-function.js +var require_css_filter_function = __commonJS({ + "node_modules/caniuse-lite/data/features/css-filter-function.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC", "33": "F" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC", "33": "UC VC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS filter() function" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-filters.js +var require_css_filters = __commonJS({ + "node_modules/caniuse-lite/data/features/css-filters.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "1028": "K L G M N O", "1346": "C" }, C: { "1": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B", "196": "7", "516": "0 1 2 3 4 5 6 I r J D E F A B C K L G M N O s t u v w x y z 8B" }, D: { "1": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N", "33": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "33": "J D E F DC EC" }, F: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB" }, G: { "1": "VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "33": "E RC SC TC UC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B", "33": "oC pC" }, J: { "2": "D", "33": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "33": "I rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "CSS Filter Effects" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-first-letter.js +var require_css_first_letter = __commonJS({ + "node_modules/caniuse-lite/data/features/css-first-letter.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "16": "5B", "516": "E", "1540": "J D" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "132": "qB", "260": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "r J D E", "132": "I" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "r BC", "132": "I vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "16": "F KC", "260": "B LC MC NC nB 3B" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "qB I H nC 4B oC pC", "16": "kC lC", "132": "mC" }, J: { "1": "D A" }, K: { "1": "C c oB", "260": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "::first-letter CSS pseudo-element selector" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-first-line.js +var require_css_first_line = __commonJS({ + "node_modules/caniuse-lite/data/features/css-first-line.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "132": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS first-line pseudo-element" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-fixed.js +var require_css_fixed = __commonJS({ + "node_modules/caniuse-lite/data/features/css-fixed.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "D E F A B", "2": "5B", "8": "J" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "1025": "FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B", "132": "QC RC SC" }, H: { "2": "jC" }, I: { "1": "qB H oC pC", "260": "kC lC mC", "513": "I nC 4B" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS position:fixed" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-focus-visible.js +var require_css_focus_visible = __commonJS({ + "node_modules/caniuse-lite/data/features/css-focus-visible.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O", "328": "P Q R S T U" }, C: { "1": "U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "161": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T" }, D: { "1": "V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB", "328": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB GC", "578": "G HC yB" }, F: { "1": "gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB KC LC MC NC nB 3B OC oB", "328": "aB bB cB dB eB fB" }, G: { "1": "zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC", "578": "iC yB" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "161": "4C" } }, B: 5, C: ":focus-visible CSS pseudo-class" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-focus-within.js +var require_css_focus_within = __commonJS({ + "node_modules/caniuse-lite/data/features/css-focus-within.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B" }, D: { "1": "WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB", "194": "rB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB KC LC MC NC nB 3B OC oB", "194": "JB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: ":focus-within CSS pseudo-class" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-font-palette.js +var require_css_font_palette = __commonJS({ + "node_modules/caniuse-lite/data/features/css-font-palette.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "q b H", "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB" }, F: { "1": "W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V KC LC MC NC nB 3B OC oB" }, G: { "1": "zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS font-palette" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-font-rendering-controls.js +var require_css_font_rendering_controls = __commonJS({ + "node_modules/caniuse-lite/data/features/css-font-rendering-controls.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB 7B 8B", "194": "JB KB LB MB NB OB PB QB RB SB TB UB" }, D: { "1": "WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB", "66": "MB NB OB PB QB RB SB TB UB VB rB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB" }, F: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "66": "9 AB BB CB DB EB FB GB HB IB JB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "66": "rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "194": "4C" } }, B: 5, C: "CSS font-display" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-font-stretch.js +var require_css_font_stretch = __commonJS({ + "node_modules/caniuse-lite/data/features/css-font-stretch.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E 7B 8B" }, D: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB" }, F: { "1": "8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS font-stretch" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-gencontent.js +var require_css_gencontent = __commonJS({ + "node_modules/caniuse-lite/data/features/css-gencontent.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D 5B", "132": "E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS Generated content for pseudo-elements" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-gradients.js +var require_css_gradients = __commonJS({ + "node_modules/caniuse-lite/data/features/css-gradients.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B", "260": "0 1 2 3 4 5 6 7 8 M N O s t u v w x y z", "292": "I r J D E F A B C K L G 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "A B C K L G M N O s t u v w x y", "548": "I r J D E F" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "BC vB", "260": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB", "292": "J CC", "804": "I r" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC", "33": "C OC", "164": "nB 3B" }, G: { "1": "zB 0B 1B pB 2B", "260": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB", "292": "QC RC", "804": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "H oC pC", "33": "I nC 4B", "548": "qB kC lC mC" }, J: { "1": "A", "548": "D" }, K: { "1": "c oB", "2": "A B", "33": "C", "164": "nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS Gradients" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-grid-animation.js +var require_css_grid_animation = __commonJS({ + "node_modules/caniuse-lite/data/features/css-grid-animation.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS Grid animation" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-grid.js +var require_css_grid = __commonJS({ + "node_modules/caniuse-lite/data/features/css-grid.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "8": "F", "292": "A B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "292": "C K L G" }, C: { "1": "RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O 7B 8B", "8": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB", "584": "DB EB FB GB HB IB JB KB LB MB NB OB", "1025": "PB QB" }, D: { "1": "VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v w x", "8": "0 1 y z", "200": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB", "1025": "UB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "8": "J D E F A DC EC FC" }, F: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "200": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "8": "E RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC", "8": "4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "292": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "rC", "8": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS Grid Layout (level 1)" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-hanging-punctuation.js +var require_css_hanging_punctuation = __commonJS({ + "node_modules/caniuse-lite/data/features/css-hanging-punctuation.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS hanging-punctuation" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-has.js +var require_css_has = __commonJS({ + "node_modules/caniuse-lite/data/features/css-has.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "q b H", "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n 7B 8B", "322": "o p q b H uB" }, D: { "1": "q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l", "194": "m n o p" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB" }, F: { "1": "a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z KC LC MC NC nB 3B OC oB" }, G: { "1": "zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: ":has() CSS relational pseudo-class" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-hyphens.js +var require_css_hyphens = __commonJS({ + "node_modules/caniuse-lite/data/features/css-hyphens.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "33": "A B" }, B: { "1": "q b H", "33": "C K L G M N O", "132": "P Q R S T U V W", "260": "X Y Z a d e f g h i j k l m n o p" }, C: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B", "33": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB" }, D: { "1": "X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB", "132": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W" }, E: { "2": "I r BC vB", "33": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB KC LC MC NC nB 3B OC oB", "132": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z" }, G: { "2": "vB PC", "33": "E 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "4": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "132": "rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS Hyphenation" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-image-orientation.js +var require_css_image_orientation = __commonJS({ + "node_modules/caniuse-lite/data/features/css-image-orientation.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O P Q", "257": "R S T U V W X" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x y 7B 8B" }, D: { "1": "Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q", "257": "R S T U V W X" }, E: { "1": "L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB" }, F: { "1": "lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB KC LC MC NC nB 3B OC oB", "257": "cB dB eB fB gB hB iB jB kB" }, G: { "1": "gC hC iC yB zB 0B 1B pB 2B", "132": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC", "257": "yC zC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS3 image-orientation" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-image-set.js +var require_css_image_set = __commonJS({ + "node_modules/caniuse-lite/data/features/css-image-set.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "164": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U 7B 8B", "66": "V W", "257": "Y Z a d e f g h i j k l m n o p q b H uB", "772": "X" }, D: { "2": "I r J D E F A B C K L G M N O s t", "164": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r BC vB CC", "132": "A B C K wB nB oB xB", "164": "J D E F DC EC FC", "516": "L G GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "164": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "vB PC 4B QC", "132": "WC XC YC ZC aC bC cC dC eC fC", "164": "E RC SC TC UC VC", "516": "gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "164": "H oC pC" }, J: { "2": "D", "164": "A" }, K: { "2": "A B C nB 3B oB", "164": "c" }, L: { "164": "H" }, M: { "257": "b" }, N: { "2": "A B" }, O: { "164": "qC" }, P: { "164": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "164": "xB" }, R: { "164": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS image-set" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-in-out-of-range.js +var require_css_in_out_of_range = __commonJS({ + "node_modules/caniuse-lite/data/features/css-in-out-of-range.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C", "260": "K L G M N O" }, C: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "516": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB" }, D: { "1": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I", "16": "r J D E F A B C K L", "260": "PB", "772": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "16": "r", "772": "J D E F A CC DC EC FC" }, F: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F KC", "260": "B C CB LC MC NC nB 3B OC oB", "772": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B", "772": "E QC RC SC TC UC VC WC" }, H: { "132": "jC" }, I: { "1": "H", "2": "qB kC lC mC", "260": "I nC 4B oC pC" }, J: { "2": "D", "260": "A" }, K: { "1": "c", "260": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "260": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "516": "4C" } }, B: 5, C: ":in-range and :out-of-range CSS pseudo-classes" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js +var require_css_indeterminate_pseudo = __commonJS({ + "node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "132": "A B", "388": "F" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "132": "C K L G M N O" }, C: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "16": "6B qB 7B 8B", "132": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "388": "I r" }, D: { "1": "CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L", "132": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r J BC vB", "132": "D E F A DC EC FC", "388": "CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F B KC LC MC NC nB 3B", "132": "G M N O s t u v w x y", "516": "C OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B QC RC", "132": "E SC TC UC VC WC" }, H: { "516": "jC" }, I: { "1": "H", "16": "qB kC lC mC pC", "132": "oC", "388": "I nC 4B" }, J: { "16": "D", "132": "A" }, K: { "1": "c", "16": "A B C nB 3B", "516": "oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "132": "4C" } }, B: 5, C: ":indeterminate CSS pseudo-class" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-initial-letter.js +var require_css_initial_letter = __commonJS({ + "node_modules/caniuse-lite/data/features/css-initial-letter.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E BC vB CC DC EC", "4": "F", "164": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC", "164": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Initial Letter" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-initial-value.js +var require_css_initial_value = __commonJS({ + "node_modules/caniuse-lite/data/features/css-initial-value.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "33": "I r J D E F A B C K L G M N O 7B 8B", "164": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS initial value" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-lch-lab.js +var require_css_lch_lab = __commonJS({ + "node_modules/caniuse-lite/data/features/css-lch-lab.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "G HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB GC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "LCH and Lab color values" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-letter-spacing.js +var require_css_letter_spacing = __commonJS({ + "node_modules/caniuse-lite/data/features/css-letter-spacing.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "16": "5B", "132": "J D E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "0 1 2 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC", "132": "I r J vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F KC", "132": "B C G M LC MC NC nB 3B OC oB" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "2": "jC" }, I: { "1": "H oC pC", "16": "kC lC", "132": "qB I mC nC 4B" }, J: { "132": "D A" }, K: { "1": "c", "132": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "letter-spacing CSS property" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-line-clamp.js +var require_css_line_clamp = __commonJS({ + "node_modules/caniuse-lite/data/features/css-line-clamp.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M", "33": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "129": "N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB 7B 8B", "33": "cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "16": "I r J D E F A B C K", "33": "0 1 2 3 4 5 6 7 8 9 L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I BC vB", "33": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "vB PC 4B", "33": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "16": "kC lC", "33": "qB I H mC nC 4B oC pC" }, J: { "33": "D A" }, K: { "2": "A B C nB 3B oB", "33": "c" }, L: { "33": "H" }, M: { "33": "b" }, N: { "2": "A B" }, O: { "33": "qC" }, P: { "33": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "33": "xB" }, R: { "33": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS line-clamp" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-logical-props.js +var require_css_logical_props = __commonJS({ + "node_modules/caniuse-lite/data/features/css-logical-props.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O", "1028": "W X", "1540": "P Q R S T U V" }, C: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B", "164": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB 7B 8B", "1540": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB" }, D: { "1": "Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "292": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB", "1028": "W X", "1540": "dB eB fB gB hB iB jB kB lB mB P Q R S T U V" }, E: { "1": "G HC yB zB 0B 1B pB 2B IC JC", "292": "I r J D E F A B C BC vB CC DC EC FC wB nB", "1028": "GC", "1540": "K L oB xB" }, F: { "1": "kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "292": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB", "1028": "iB jB", "1540": "TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB" }, G: { "1": "iC yB zB 0B 1B pB 2B", "292": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC", "1028": "hC", "1540": "bC cC dC eC fC gC" }, H: { "2": "jC" }, I: { "1": "H", "292": "qB I kC lC mC nC 4B oC pC" }, J: { "292": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "292": "qC" }, P: { "1": "0C pB 1C 2C", "292": "I rC sC tC uC vC", "1540": "wB wC xC yC zC" }, Q: { "1540": "xB" }, R: { "1": "3C" }, S: { "1540": "4C" } }, B: 5, C: "CSS Logical Properties" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-marker-pseudo.js +var require_css_marker_pseudo = __commonJS({ + "node_modules/caniuse-lite/data/features/css-marker-pseudo.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O P Q R S T U" }, C: { "1": "cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB 7B 8B" }, D: { "1": "V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U" }, E: { "1": "JC", "2": "I r J D E F A B BC vB CC DC EC FC wB", "129": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC" }, F: { "1": "gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB KC LC MC NC nB 3B OC oB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS ::marker pseudo-element" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-masks.js +var require_css_masks = __commonJS({ + "node_modules/caniuse-lite/data/features/css-masks.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M", "164": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "3138": "N", "12292": "O" }, C: { "1": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "260": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 7B 8B" }, D: { "164": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "BC vB", "164": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "164": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "zB 0B 1B pB 2B", "164": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, H: { "2": "jC" }, I: { "164": "H oC pC", "676": "qB I kC lC mC nC 4B" }, J: { "164": "D A" }, K: { "2": "A B C nB 3B oB", "164": "c" }, L: { "164": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "164": "qC" }, P: { "164": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "164": "xB" }, R: { "164": "3C" }, S: { "260": "4C" } }, B: 4, C: "CSS Masks" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-matches-pseudo.js +var require_css_matches_pseudo = __commonJS({ + "node_modules/caniuse-lite/data/features/css-matches-pseudo.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O", "1220": "P Q R S T U V W" }, C: { "1": "mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "16": "6B qB 7B 8B", "548": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB" }, D: { "1": "X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L", "164": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c", "196": "ZB aB bB", "1220": "cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W" }, E: { "1": "L G GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "16": "r", "164": "J D E CC DC EC", "260": "F A B C K FC wB nB oB xB" }, F: { "1": "jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "164": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB", "196": "PB QB RB", "1220": "SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB" }, G: { "1": "gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B QC RC", "164": "E SC TC", "260": "UC VC WC XC YC ZC aC bC cC dC eC fC" }, H: { "2": "jC" }, I: { "1": "H", "16": "qB kC lC mC", "164": "I nC 4B oC pC" }, J: { "16": "D", "164": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "164": "qC" }, P: { "1": "0C pB 1C 2C", "164": "I rC sC tC uC vC wB wC xC yC zC" }, Q: { "1220": "xB" }, R: { "1": "3C" }, S: { "548": "4C" } }, B: 5, C: ":is() CSS pseudo-class" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-math-functions.js +var require_css_math_functions = __commonJS({ + "node_modules/caniuse-lite/data/features/css-math-functions.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB 7B 8B" }, D: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB" }, E: { "1": "L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB", "132": "C K nB oB" }, F: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB KC LC MC NC nB 3B OC oB" }, G: { "1": "fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC", "132": "ZC aC bC cC dC eC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS math functions min(), max() and clamp()" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-media-interaction.js +var require_css_media_interaction = __commonJS({ + "node_modules/caniuse-lite/data/features/css-media-interaction.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB 7B 8B" }, D: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "1 2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "Media Queries: interaction media features" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-media-range-syntax.js +var require_css_media_range_syntax = __commonJS({ + "node_modules/caniuse-lite/data/features/css-media-range-syntax.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "p q b H", "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o" }, C: { "1": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB 7B 8B" }, D: { "1": "p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "Media Queries: Range Syntax" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-media-resolution.js +var require_css_media_resolution = __commonJS({ + "node_modules/caniuse-lite/data/features/css-media-resolution.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "132": "F A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "1028": "C K L G M N O" }, C: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "260": "I r J D E F A B C K L G 7B 8B", "1028": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB" }, D: { "1": "cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "548": "0 1 I r J D E F A B C K L G M N O s t u v w x y z", "1028": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB" }, E: { "1": "pB 2B IC JC", "2": "BC vB", "548": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "1": "SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F", "548": "B C KC LC MC NC nB 3B OC", "1028": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB" }, G: { "1": "pB 2B", "16": "vB", "548": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "132": "jC" }, I: { "1": "H", "16": "kC lC", "548": "qB I mC nC 4B", "1028": "oC pC" }, J: { "548": "D A" }, K: { "1": "c oB", "548": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "wB wC xC yC zC 0C pB 1C 2C", "1028": "I rC sC tC uC vC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Media Queries: resolution feature" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-media-scripting.js +var require_css_media_scripting = __commonJS({ + "node_modules/caniuse-lite/data/features/css-media-scripting.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "Media Queries: scripting media feature" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-mediaqueries.js +var require_css_mediaqueries = __commonJS({ + "node_modules/caniuse-lite/data/features/css-mediaqueries.js"(exports2, module2) { + module2.exports = { A: { A: { "8": "J D E 5B", "129": "F A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "129": "I r J D E F A B C K L G M N O s t u v w x y" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "129": "I r J CC", "388": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "129": "vB PC 4B QC RC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "129": "qB I kC lC mC nC 4B" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "129": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS3 Media Queries" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-mixblendmode.js +var require_css_mixblendmode = __commonJS({ + "node_modules/caniuse-lite/data/features/css-mixblendmode.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 I r J D E F A B C K L G M N O s t u v w x y z", "194": "2 3 4 5 6 7 8 9 AB BB CB DB" }, E: { "2": "I r J D BC vB CC DC", "260": "E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "2": "vB PC 4B QC RC SC", "260": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Blending of HTML/SVG elements" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-motion-paths.js +var require_css_motion_paths = __commonJS({ + "node_modules/caniuse-lite/data/features/css-motion-paths.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB 7B 8B" }, D: { "1": "JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB", "194": "GB HB IB" }, E: { "1": "pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "1": "6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "194": "3 4 5" }, G: { "1": "pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Motion Path" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-namespaces.js +var require_css_namespaces = __commonJS({ + "node_modules/caniuse-lite/data/features/css-namespaces.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS namespaces" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-nesting.js +var require_css_nesting = __commonJS({ + "node_modules/caniuse-lite/data/features/css-nesting.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "194": "9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Nesting" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-not-sel-list.js +var require_css_not_sel_list = __commonJS({ + "node_modules/caniuse-lite/data/features/css-not-sel-list.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O Q R S T U V W", "16": "P" }, C: { "1": "T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S 7B 8B" }, D: { "1": "X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC zC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "selector list argument of :not()" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-nth-child-of.js +var require_css_nth_child_of = __commonJS({ + "node_modules/caniuse-lite/data/features/css-nth-child-of.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "selector list argument of :nth-child and :nth-last-child CSS pseudo-classes" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-opacity.js +var require_css_opacity = __commonJS({ + "node_modules/caniuse-lite/data/features/css-opacity.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "4": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS3 Opacity" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-optional-pseudo.js +var require_css_optional_pseudo = __commonJS({ + "node_modules/caniuse-lite/data/features/css-optional-pseudo.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F KC", "132": "B C LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "132": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "c", "132": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: ":optional CSS pseudo-class" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-overflow-anchor.js +var require_css_overflow_anchor = __commonJS({ + "node_modules/caniuse-lite/data/features/css-overflow-anchor.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB 7B 8B" }, D: { "1": "TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS overflow-anchor (Scroll Anchoring)" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-overflow-overlay.js +var require_css_overflow_overlay = __commonJS({ + "node_modules/caniuse-lite/data/features/css-overflow-overlay.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "I r J D E F A B CC DC EC FC wB nB", "16": "BC vB", "130": "C K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC", "16": "vB", "130": "aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "16": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS overflow: overlay" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-overflow.js +var require_css_overflow = __commonJS({ + "node_modules/caniuse-lite/data/features/css-overflow.js"(exports2, module2) { + module2.exports = { A: { A: { "388": "J D E F A B 5B" }, B: { "1": "Z a d e f g h i j k l m n o p q b H", "260": "P Q R S T U V W X Y", "388": "C K L G M N O" }, C: { "1": "R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "260": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q", "388": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB 7B 8B" }, D: { "1": "Z a d e f g h i j k l m n o p q b H uB 9B AC", "260": "cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y", "388": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB" }, E: { "1": "pB 2B IC JC", "260": "L G xB GC HC yB zB 0B 1B", "388": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB" }, F: { "1": "kB lB mB P Q R tB S T U V W X Y Z a", "260": "SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB", "388": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB KC LC MC NC nB 3B OC oB" }, G: { "1": "pB 2B", "260": "fC gC hC iC yB zB 0B 1B", "388": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC" }, H: { "388": "jC" }, I: { "1": "H", "388": "qB I kC lC mC nC 4B oC pC" }, J: { "388": "D A" }, K: { "1": "c", "388": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "388": "A B" }, O: { "388": "qC" }, P: { "1": "0C pB 1C 2C", "388": "I rC sC tC uC vC wB wC xC yC zC" }, Q: { "388": "xB" }, R: { "1": "3C" }, S: { "388": "4C" } }, B: 5, C: "CSS overflow property" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-overscroll-behavior.js +var require_css_overscroll_behavior = __commonJS({ + "node_modules/caniuse-lite/data/features/css-overscroll-behavior.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "132": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "132": "C K L G M N", "516": "O" }, C: { "1": "rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB 7B 8B" }, D: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB", "260": "YB c" }, E: { "1": "pB 2B IC JC", "2": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB", "1090": "G GC HC yB zB 0B 1B" }, F: { "1": "PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB KC LC MC NC nB 3B OC oB", "260": "NB OB" }, G: { "1": "pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC", "1090": "hC iC yB zB 0B 1B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS overscroll-behavior" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-page-break.js +var require_css_page_break = __commonJS({ + "node_modules/caniuse-lite/data/features/css-page-break.js"(exports2, module2) { + module2.exports = { A: { A: { "388": "A B", "900": "J D E F 5B" }, B: { "388": "C K L G M N O", "900": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "772": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "900": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c 7B 8B" }, D: { "900": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "772": "A", "900": "I r J D E F B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "16": "F KC", "129": "B C LC MC NC nB 3B OC oB", "900": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "900": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "129": "jC" }, I: { "900": "qB I H kC lC mC nC 4B oC pC" }, J: { "900": "D A" }, K: { "129": "A B C nB 3B oB", "900": "c" }, L: { "900": "H" }, M: { "772": "b" }, N: { "388": "A B" }, O: { "900": "qC" }, P: { "900": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "900": "xB" }, R: { "900": "3C" }, S: { "900": "4C" } }, B: 2, C: "CSS page-break properties" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-paged-media.js +var require_css_paged_media = __commonJS({ + "node_modules/caniuse-lite/data/features/css-paged-media.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D 5B", "132": "E F A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "132": "C K L G M N O" }, C: { "2": "6B qB I r J D E F A B C K L G M N O 7B 8B", "132": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "132": "F B C KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "16": "jC" }, I: { "16": "qB I H kC lC mC nC 4B oC pC" }, J: { "16": "D A" }, K: { "16": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "132": "b" }, N: { "258": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "132": "4C" } }, B: 5, C: "CSS Paged Media (@page)" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-paint-api.js +var require_css_paint_api = __commonJS({ + "node_modules/caniuse-lite/data/features/css-paint-api.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c" }, E: { "2": "I r J D E F A B C BC vB CC DC EC FC wB nB", "194": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS Paint API" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-placeholder-shown.js +var require_css_placeholder_shown = __commonJS({ + "node_modules/caniuse-lite/data/features/css-placeholder-shown.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "292": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "164": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB" }, D: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "164": "4C" } }, B: 5, C: ":placeholder-shown CSS pseudo-class" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-placeholder.js +var require_css_placeholder = __commonJS({ + "node_modules/caniuse-lite/data/features/css-placeholder.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "36": "C K L G M N O" }, C: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O 7B 8B", "33": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB" }, D: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "36": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z 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 G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "36": "r J D E F A CC DC EC FC" }, F: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "36": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC", "36": "E 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "36": "qB I kC lC mC nC 4B oC pC" }, J: { "36": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "36": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "36": "I rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "33": "4C" } }, B: 5, C: "::placeholder CSS pseudo-element" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-print-color-adjust.js +var require_css_print_color_adjust = __commonJS({ + "node_modules/caniuse-lite/data/features/css-print-color-adjust.js"(exports2, module2) { + module2.exports = { A: { D: { "2": "I r J D E F A B C K L G M", "33": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, L: { "33": "H" }, B: { "2": "C K L G M N O", "33": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 7B 8B", "33": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h" }, M: { "1": "b" }, A: { "2": "J D E F A B 5B" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, K: { "2": "A B C nB 3B oB", "33": "c" }, E: { "1": "zB 0B 1B pB 2B IC", "2": "I r BC vB CC JC", "33": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB" }, G: { "1": "zB 0B 1B pB 2B", "2": "vB PC 4B QC", "33": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, P: { "33": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, I: { "2": "qB I kC lC mC nC 4B", "33": "H oC pC" } }, B: 6, C: "print-color-adjust property" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-read-only-write.js +var require_css_read_only_write = __commonJS({ + "node_modules/caniuse-lite/data/features/css-read-only-write.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C" }, C: { "1": "mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "16": "6B", "33": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB 7B 8B" }, D: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L", "132": "0 1 2 3 4 5 6 7 8 G M N O s t u v w x y z" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC vB", "132": "I r J D E CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F B KC LC MC NC nB", "132": "C G M N O s t u v 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC", "132": "E 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "16": "kC lC", "132": "qB I mC nC 4B oC pC" }, J: { "1": "A", "132": "D" }, K: { "1": "c", "2": "A B nB", "132": "C 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "33": "4C" } }, B: 1, C: "CSS :read-only and :read-write selectors" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-rebeccapurple.js +var require_css_rebeccapurple = __commonJS({ + "node_modules/caniuse-lite/data/features/css-rebeccapurple.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "132": "B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC", "16": "DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x KC LC MC NC nB 3B OC oB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Rebeccapurple color" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-reflections.js +var require_css_reflections = __commonJS({ + "node_modules/caniuse-lite/data/features/css-reflections.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "33": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "BC vB", "33": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "33": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "33": "qB I H kC lC mC nC 4B oC pC" }, J: { "33": "D A" }, K: { "2": "A B C nB 3B oB", "33": "c" }, L: { "33": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "33": "qC" }, P: { "33": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "33": "xB" }, R: { "33": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS Reflections" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-regions.js +var require_css_regions = __commonJS({ + "node_modules/caniuse-lite/data/features/css-regions.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "420": "A B" }, B: { "2": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "420": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "8 9 I r J D E F A B C K L AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "36": "G M N O", "66": "0 1 2 3 4 5 6 7 s t u v w x y z" }, E: { "2": "I r J C K L G BC vB CC nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "33": "D E F A B DC EC FC wB" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "vB PC 4B QC RC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "33": "E SC TC UC VC WC XC YC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "420": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Regions" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-repeating-gradients.js +var require_css_repeating_gradients = __commonJS({ + "node_modules/caniuse-lite/data/features/css-repeating-gradients.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B", "33": "I r J D E F A B C K L G 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F", "33": "A B C K L G M N O s t u v w x y" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB", "33": "J CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC", "33": "C OC", "36": "nB 3B" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B", "33": "QC RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB kC lC mC", "33": "I nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c oB", "2": "A B", "33": "C", "36": "nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS Repeating Gradients" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-resize.js +var require_css_resize = __commonJS({ + "node_modules/caniuse-lite/data/features/css-resize.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "33": "I" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC", "132": "oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 2, C: "CSS resize property" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-revert-value.js +var require_css_revert_value = __commonJS({ + "node_modules/caniuse-lite/data/features/css-revert-value.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O P Q R S" }, C: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB 7B 8B" }, D: { "1": "T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC" }, F: { "1": "hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB KC LC MC NC nB 3B OC oB" }, G: { "1": "VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS revert value" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-rrggbbaa.js +var require_css_rrggbbaa = __commonJS({ + "node_modules/caniuse-lite/data/features/css-rrggbbaa.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 7B 8B" }, D: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB", "194": "PB QB RB SB TB UB VB rB WB sB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB KC LC MC NC nB 3B OC oB", "194": "CB DB EB FB GB HB IB JB KB LB MB NB OB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "194": "rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "#rrggbbaa hex color notation" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-scroll-behavior.js +var require_css_scroll_behavior = __commonJS({ + "node_modules/caniuse-lite/data/features/css-scroll-behavior.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "129": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB", "129": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "450": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB xB", "578": "L G GC HC yB" }, F: { "2": "0 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "129": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "450": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB" }, G: { "1": "zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC", "578": "hC iC yB" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "129": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC" }, Q: { "129": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Scroll-behavior" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-scroll-timeline.js +var require_css_scroll_timeline = __commonJS({ + "node_modules/caniuse-lite/data/features/css-scroll-timeline.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y", "194": "Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T", "194": "X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "322": "U V W" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB KC LC MC NC nB 3B OC oB", "194": "jB kB lB mB P Q R tB S T U V W X Y Z a", "322": "hB iB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS @scroll-timeline" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-scrollbar.js +var require_css_scrollbar = __commonJS({ + "node_modules/caniuse-lite/data/features/css-scrollbar.js"(exports2, module2) { + module2.exports = { A: { A: { "132": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "292": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB 7B 8B", "3074": "YB", "4100": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "292": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "16": "I r BC vB", "292": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "292": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B QC RC", "292": "SC", "804": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC" }, H: { "2": "jC" }, I: { "16": "kC lC", "292": "qB I H mC nC 4B oC pC" }, J: { "292": "D A" }, K: { "2": "A B C nB 3B oB", "292": "c" }, L: { "292": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "292": "qC" }, P: { "292": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "292": "xB" }, R: { "292": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS scrollbar styling" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-sel2.js +var require_css_sel2 = __commonJS({ + "node_modules/caniuse-lite/data/features/css-sel2.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "D E F A B", "2": "5B", "8": "J" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS 2.1 selectors" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-sel3.js +var require_css_sel3 = __commonJS({ + "node_modules/caniuse-lite/data/features/css-sel3.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "5B", "8": "J", "132": "D E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS3 selectors" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-selection.js +var require_css_selection = __commonJS({ + "node_modules/caniuse-lite/data/features/css-selection.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "33": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "C c 3B oB", "16": "A B nB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "33": "4C" } }, B: 5, C: "::selection CSS pseudo-element" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-shapes.js +var require_css_shapes = __commonJS({ + "node_modules/caniuse-lite/data/features/css-shapes.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB 7B 8B", "322": "OB PB QB RB SB TB UB VB rB WB sB" }, D: { "1": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 I r J D E F A B C K L G M N O s t u v w x y z", "194": "7 8 9" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC", "33": "E F A EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC", "33": "E TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS Shapes Level 1" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-snappoints.js +var require_css_snappoints = __commonJS({ + "node_modules/caniuse-lite/data/features/css-snappoints.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "6308": "A", "6436": "B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "6436": "C K L G M N O" }, C: { "1": "cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB 7B 8B", "2052": "CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB" }, D: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB", "8258": "aB bB cB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC", "3108": "F A FC wB" }, F: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB KC LC MC NC nB 3B OC oB", "8258": "RB SB TB UB VB WB XB YB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC", "3108": "UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2052": "4C" } }, B: 4, C: "CSS Scroll Snap" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-sticky.js +var require_css_sticky = __commonJS({ + "node_modules/caniuse-lite/data/features/css-sticky.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "a d e f g h i j k l m n o p q b H", "2": "C K L G", "1028": "P Q R S T U V W X Y Z", "4100": "M N O" }, C: { "1": "rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x y 7B 8B", "194": "0 1 2 3 4 z", "516": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB" }, D: { "1": "a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB", "322": "0 1 2 3 4 5 6 7 8 9 w x y z PB QB RB SB", "1028": "TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z" }, E: { "1": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC", "33": "E F A B C EC FC wB nB oB", "2084": "D DC" }, F: { "1": "mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB KC LC MC NC nB 3B OC oB", "322": "CB DB EB", "1028": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB" }, G: { "1": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "33": "E TC UC VC WC XC YC ZC aC bC", "2084": "RC SC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1028": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC" }, Q: { "1028": "xB" }, R: { "1": "3C" }, S: { "516": "4C" } }, B: 5, C: "CSS position:sticky" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-subgrid.js +var require_css_subgrid = __commonJS({ + "node_modules/caniuse-lite/data/features/css-subgrid.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS Subgrid" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-supports-api.js +var require_css_supports_api = __commonJS({ + "node_modules/caniuse-lite/data/features/css-supports-api.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K L G M N O" }, C: { "1": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s 7B 8B", "66": "t u", "260": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB" }, D: { "1": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 I r J D E F A B C K L G M N O s t u v w x y z", "260": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC", "132": "oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "132": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B", "132": "oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS.supports() API" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-table.js +var require_css_table = __commonJS({ + "node_modules/caniuse-lite/data/features/css-table.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "E F A B", "2": "J D 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "132": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS Table display" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-text-align-last.js +var require_css_text_align_last = __commonJS({ + "node_modules/caniuse-lite/data/features/css-text-align-last.js"(exports2, module2) { + module2.exports = { A: { A: { "132": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "4": "C K L G M N O" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B 7B 8B", "33": "0 1 2 3 4 5 6 7 8 9 C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB" }, D: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 I r J D E F A B C K L G M N O s t u v w x y z", "322": "8 9 AB BB CB DB EB FB GB HB IB JB" }, E: { "1": "pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "1": "7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u KC LC MC NC nB 3B OC oB", "578": "0 1 2 3 4 5 6 v w x y z" }, G: { "1": "pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "33": "4C" } }, B: 4, C: "CSS3 text-align-last" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-text-indent.js +var require_css_text_indent = __commonJS({ + "node_modules/caniuse-lite/data/features/css-text-indent.js"(exports2, module2) { + module2.exports = { A: { A: { "132": "J D E F A B 5B" }, B: { "132": "C K L G M N O", "388": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "132": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "132": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB", "388": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "pB 2B IC JC", "132": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "132": "F B C G M N O s t u v w x KC LC MC NC nB 3B OC oB", "388": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "pB 2B", "132": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "132": "jC" }, I: { "132": "qB I kC lC mC nC 4B oC pC", "388": "H" }, J: { "132": "D A" }, K: { "132": "A B C nB 3B oB", "388": "c" }, L: { "388": "H" }, M: { "132": "b" }, N: { "132": "A B" }, O: { "388": "qC" }, P: { "132": "I", "388": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "388": "xB" }, R: { "388": "3C" }, S: { "132": "4C" } }, B: 4, C: "CSS text-indent" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-text-justify.js +var require_css_text_justify = __commonJS({ + "node_modules/caniuse-lite/data/features/css-text-justify.js"(exports2, module2) { + module2.exports = { A: { A: { "16": "J D 5B", "132": "E F A B" }, B: { "132": "C K L G M N O", "322": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB 7B 8B", "1025": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "1602": "RB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB", "322": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "322": "3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "322": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "322": "c" }, L: { "322": "H" }, M: { "1025": "b" }, N: { "132": "A B" }, O: { "322": "qC" }, P: { "2": "I", "322": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "322": "xB" }, R: { "322": "3C" }, S: { "2": "4C" } }, B: 4, C: "CSS text-justify" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-text-orientation.js +var require_css_text_orientation = __commonJS({ + "node_modules/caniuse-lite/data/features/css-text-orientation.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB 7B 8B", "194": "BB CB DB" }, D: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB" }, E: { "1": "L G GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC", "16": "A", "33": "B C K wB nB oB xB" }, F: { "1": "8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS text-orientation" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-text-spacing.js +var require_css_text_spacing = __commonJS({ + "node_modules/caniuse-lite/data/features/css-text-spacing.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D 5B", "161": "E F A B" }, B: { "2": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "161": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "16": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS Text 4 text-spacing" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-textshadow.js +var require_css_textshadow = __commonJS({ + "node_modules/caniuse-lite/data/features/css-textshadow.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "129": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "129": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "260": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "4": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "A", "4": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "129": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS3 Text-shadow" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-touch-action.js +var require_css_touch_action = __commonJS({ + "node_modules/caniuse-lite/data/features/css-touch-action.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F 5B", "289": "A" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB", "1025": "PB QB RB SB TB" }, D: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v KC LC MC NC nB 3B OC oB" }, G: { "1": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC", "516": "VC WC XC YC ZC aC bC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "289": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "194": "4C" } }, B: 2, C: "CSS touch-action property" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-transitions.js +var require_css_transitions = __commonJS({ + "node_modules/caniuse-lite/data/features/css-transitions.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "33": "r J D E F A B C K L G", "164": "I" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "I r J D E F A B C K L G M N O s t u v w x y" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "33": "J CC", "164": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F KC LC", "33": "C", "164": "B MC NC nB 3B OC" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "33": "RC", "164": "vB PC 4B QC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "33": "qB I kC lC mC nC 4B" }, J: { "1": "A", "33": "D" }, K: { "1": "c oB", "33": "C", "164": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "CSS3 Transitions" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-unicode-bidi.js +var require_css_unicode_bidi = __commonJS({ + "node_modules/caniuse-lite/data/features/css-unicode-bidi.js"(exports2, module2) { + module2.exports = { A: { A: { "132": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "132": "C K L G M N O" }, C: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "33": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB", "132": "6B qB I r J D E F 7B 8B", "292": "A B C K L G M" }, D: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "I r J D E F A B C K L G M", "548": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB" }, E: { "132": "I r J D E BC vB CC DC EC", "548": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "132": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "132": "E vB PC 4B QC RC SC TC", "548": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "16": "jC" }, I: { "1": "H", "16": "qB I kC lC mC nC 4B oC pC" }, J: { "16": "D A" }, K: { "1": "c", "16": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "16": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "33": "4C" } }, B: 4, C: "CSS unicode-bidi property" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-unset-value.js +var require_css_unset_value = __commonJS({ + "node_modules/caniuse-lite/data/features/css-unset-value.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC" }, F: { "1": "1 2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS unset value" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-variables.js +var require_css_variables = __commonJS({ + "node_modules/caniuse-lite/data/features/css-variables.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L", "260": "G" }, C: { "1": "4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB", "194": "LB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC", "260": "FC" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "194": "8" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC", "260": "VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS Variables (Custom Properties)" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-when-else.js +var require_css_when_else = __commonJS({ + "node_modules/caniuse-lite/data/features/css-when-else.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "CSS @when / @else conditional rules" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-widows-orphans.js +var require_css_widows_orphans = __commonJS({ + "node_modules/caniuse-lite/data/features/css-widows-orphans.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D 5B", "129": "E F" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v w x" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "129": "F B KC LC MC NC nB 3B OC" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c oB", "2": "A B C nB 3B" }, L: { "1": "H" }, M: { "2": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 2, C: "CSS widows & orphans" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-width-stretch.js +var require_css_width_stretch = __commonJS({ + "node_modules/caniuse-lite/data/features/css-width-stretch.js"(exports2, module2) { + module2.exports = { A: { D: { "2": "I r J D E F A B C K L G M N O s t u", "33": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, L: { "33": "H" }, B: { "2": "C K L G M N O", "33": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B", "33": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, M: { "33": "b" }, A: { "2": "J D E F A B 5B" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, K: { "2": "A B C nB 3B oB", "33": "c" }, E: { "2": "I r J BC vB CC DC JC", "33": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC" }, G: { "2": "vB PC 4B QC RC", "33": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, P: { "2": "I", "33": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, I: { "2": "qB I kC lC mC nC 4B", "33": "H oC pC" } }, B: 6, C: "width: stretch property" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-writing-mode.js +var require_css_writing_mode = __commonJS({ + "node_modules/caniuse-lite/data/features/css-writing-mode.js"(exports2, module2) { + module2.exports = { A: { A: { "132": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "322": "9 AB BB CB DB" }, D: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J", "16": "D", "33": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "16": "r", "33": "J D E F A CC DC EC FC wB" }, F: { "1": "8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 G M N O s t u v w x y z" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B", "33": "E QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "kC lC mC", "33": "qB I nC 4B oC pC" }, J: { "33": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "36": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "33": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS writing-mode property" }; + } +}); + +// node_modules/caniuse-lite/data/features/css-zoom.js +var require_css_zoom = __commonJS({ + "node_modules/caniuse-lite/data/features/css-zoom.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D 5B", "129": "E F A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB" }, H: { "2": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "129": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS zoom" }; + } +}); + +// node_modules/caniuse-lite/data/features/css3-attr.js +var require_css3_attr = __commonJS({ + "node_modules/caniuse-lite/data/features/css3-attr.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS3 attr() function for all properties" }; + } +}); + +// node_modules/caniuse-lite/data/features/css3-boxsizing.js +var require_css3_boxsizing = __commonJS({ + "node_modules/caniuse-lite/data/features/css3-boxsizing.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "E F A B", "8": "J D 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "33": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "I r J D E F" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "33": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "33": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "I H nC 4B oC pC", "33": "qB kC lC mC" }, J: { "1": "A", "33": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "CSS3 Box-sizing" }; + } +}); + +// node_modules/caniuse-lite/data/features/css3-colors.js +var require_css3_colors = __commonJS({ + "node_modules/caniuse-lite/data/features/css3-colors.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "4": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a LC MC NC nB 3B OC oB", "2": "F", "4": "KC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS3 Colors" }; + } +}); + +// node_modules/caniuse-lite/data/features/css3-cursors-grab.js +var require_css3_cursors_grab = __commonJS({ + "node_modules/caniuse-lite/data/features/css3-cursors-grab.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "33": "6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "33": "I r J D E F A BC vB CC DC EC FC wB" }, F: { "1": "C SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F B KC LC MC NC nB 3B", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "33": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 2, C: "CSS grab & grabbing cursors" }; + } +}); + +// node_modules/caniuse-lite/data/features/css3-cursors-newer.js +var require_css3_cursors_newer = __commonJS({ + "node_modules/caniuse-lite/data/features/css3-cursors-newer.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "33": "6B qB I r J D E F A B C K L G M N O s t u v w 7B 8B" }, D: { "1": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "33": "I r J D E BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F B KC LC MC NC nB 3B", "33": "G M N O s t u v w" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "33": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 2, C: "CSS3 Cursors: zoom-in & zoom-out" }; + } +}); + +// node_modules/caniuse-lite/data/features/css3-cursors.js +var require_css3_cursors = __commonJS({ + "node_modules/caniuse-lite/data/features/css3-cursors.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "132": "J D E 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "4": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "4": "I" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "4": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "260": "F B C KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D", "16": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 2, C: "CSS3 Cursors (original values)" }; + } +}); + +// node_modules/caniuse-lite/data/features/css3-tabsize.js +var require_css3_tabsize = __commonJS({ + "node_modules/caniuse-lite/data/features/css3-tabsize.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "33": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z", "164": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB" }, D: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t", "132": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB" }, E: { "1": "L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC", "132": "D E F A B C K DC EC FC wB nB oB" }, F: { "1": "2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F KC LC MC", "132": "0 1 G M N O s t u v w x y z", "164": "B C NC nB 3B OC oB" }, G: { "1": "fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC", "132": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC" }, H: { "164": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B", "132": "oC pC" }, J: { "132": "D A" }, K: { "1": "c", "2": "A", "164": "B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "164": "4C" } }, B: 4, C: "CSS3 tab-size" }; + } +}); + +// node_modules/caniuse-lite/data/features/currentcolor.js +var require_currentcolor = __commonJS({ + "node_modules/caniuse-lite/data/features/currentcolor.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS currentColor value" }; + } +}); + +// node_modules/caniuse-lite/data/features/custom-elements.js +var require_custom_elements = __commonJS({ + "node_modules/caniuse-lite/data/features/custom-elements.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "8": "A B" }, B: { "1": "P", "2": "Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "8": "C K L G M N O" }, C: { "2": "6B qB I r J D E F A B C K L G M N O s t u v rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "66": "0 1 2 w x y z", "72": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB" }, D: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P", "2": "I r J D E F A B C K L G M N O s t u v w x y z Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "66": "0 1 2 3 4 5" }, E: { "2": "I r BC vB CC", "8": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB", "2": "F B C bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "66": "G M N O s" }, G: { "2": "vB PC 4B QC RC", "8": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "pC", "2": "qB I H kC lC mC nC 4B oC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC", "2": "yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "2": "3C" }, S: { "72": "4C" } }, B: 7, C: "Custom Elements (deprecated V0 spec)" }; + } +}); + +// node_modules/caniuse-lite/data/features/custom-elementsv1.js +var require_custom_elementsv1 = __commonJS({ + "node_modules/caniuse-lite/data/features/custom-elementsv1.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "8": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "8": "C K L G M N O" }, C: { "1": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "8": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB", "456": "NB OB PB QB RB SB TB UB VB", "712": "rB WB sB XB" }, D: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB", "8": "PB QB", "132": "RB SB TB UB VB rB WB sB XB YB c ZB aB" }, E: { "2": "I r J D BC vB CC DC EC", "8": "E F A FC", "132": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB KC LC MC NC nB 3B OC oB", "132": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC", "132": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "132": "rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "8": "4C" } }, B: 1, C: "Custom Elements (V1)" }; + } +}); + +// node_modules/caniuse-lite/data/features/customevent.js +var require_customevent = __commonJS({ + "node_modules/caniuse-lite/data/features/customevent.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "132": "F A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B", "132": "J D E F A" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I", "16": "r J D E K L", "388": "F A B C" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "16": "r J", "388": "CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F KC LC MC NC", "132": "B nB 3B" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "PC", "16": "vB 4B", "388": "QC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "kC lC mC", "388": "qB I nC 4B" }, J: { "1": "A", "388": "D" }, K: { "1": "C c oB", "2": "A", "132": "B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "CustomEvent" }; + } +}); + +// node_modules/caniuse-lite/data/features/datalist.js +var require_datalist = __commonJS({ + "node_modules/caniuse-lite/data/features/datalist.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "5B", "8": "J D E F", "260": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K L G", "1284": "M N O" }, C: { "8": "6B qB 7B 8B", "516": "n o p q b H uB", "4612": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m" }, D: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "8": "I r J D E F A B C K L G M N O s", "132": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB" }, E: { "1": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "I r J D E F A B C BC vB CC DC EC FC wB nB" }, F: { "1": "F B C c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "132": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, G: { "8": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC", "2049": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H pC", "8": "qB I kC lC mC nC 4B oC" }, J: { "1": "A", "8": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "516": "b" }, N: { "8": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "Datalist element" }; + } +}); + +// node_modules/caniuse-lite/data/features/dataset.js +var require_dataset = __commonJS({ + "node_modules/caniuse-lite/data/features/dataset.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "4": "J D E F A 5B" }, B: { "1": "C K L G M", "129": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "4": "6B qB I r 7B 8B", "129": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "IB JB KB LB MB NB OB PB QB RB", "4": "I r J", "129": "0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "4": "I r BC vB", "129": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "5 6 7 8 9 C AB BB CB DB EB nB 3B OC oB", "4": "F B KC LC MC NC", "129": "0 1 2 3 4 G M N O s t u v w x y z FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "4": "vB PC 4B", "129": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "4": "jC" }, I: { "4": "kC lC mC", "129": "qB I H nC 4B oC pC" }, J: { "129": "D A" }, K: { "1": "C nB 3B oB", "4": "A B", "129": "c" }, L: { "129": "H" }, M: { "129": "b" }, N: { "1": "B", "4": "A" }, O: { "129": "qC" }, P: { "129": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "129": "xB" }, R: { "129": "3C" }, S: { "1": "4C" } }, B: 1, C: "dataset & data-* attributes" }; + } +}); + +// node_modules/caniuse-lite/data/features/datauri.js +var require_datauri = __commonJS({ + "node_modules/caniuse-lite/data/features/datauri.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D 5B", "132": "E", "260": "F A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K G M N O", "772": "L" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "260": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Data URIs" }; + } +}); + +// node_modules/caniuse-lite/data/features/date-tolocaledatestring.js +var require_date_tolocaledatestring = __commonJS({ + "node_modules/caniuse-lite/data/features/date-tolocaledatestring.js"(exports2, module2) { + module2.exports = { A: { A: { "16": "5B", "132": "J D E F A B" }, B: { "1": "O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "132": "C K L G M N" }, C: { "1": "TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "132": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "260": "PB QB RB SB", "772": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB" }, D: { "1": "eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "I r J D E F A B C K L G M N O s t u v w", "260": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB", "772": "0 1 2 3 4 5 6 7 8 9 x y z AB" }, E: { "1": "C K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r BC vB", "132": "J D E F A CC DC EC FC", "260": "B wB nB" }, F: { "1": "UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F B C KC LC MC NC nB 3B OC", "132": "oB", "260": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB", "772": "G M N O s t u v w x" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B QC", "132": "E RC SC TC UC VC WC" }, H: { "132": "jC" }, I: { "1": "H", "16": "qB kC lC mC", "132": "I nC 4B", "772": "oC pC" }, J: { "132": "D A" }, K: { "1": "c", "16": "A B C nB 3B", "132": "oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "vC wB wC xC yC zC 0C pB 1C 2C", "260": "I rC sC tC uC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "132": "4C" } }, B: 6, C: "Date.prototype.toLocaleDateString" }; + } +}); + +// node_modules/caniuse-lite/data/features/declarative-shadow-dom.js +var require_declarative_shadow_dom = __commonJS({ + "node_modules/caniuse-lite/data/features/declarative-shadow-dom.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "Z a d e f g h i j k l m n o p q b H", "2": "C K L G 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 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T", "66": "U V W X Y" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC", "16": "JC" }, F: { "1": "lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC zC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "Declarative Shadow DOM" }; + } +}); + +// node_modules/caniuse-lite/data/features/decorators.js +var require_decorators = __commonJS({ + "node_modules/caniuse-lite/data/features/decorators.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Decorators" }; + } +}); + +// node_modules/caniuse-lite/data/features/details.js +var require_details = __commonJS({ + "node_modules/caniuse-lite/data/features/details.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "F A B 5B", "8": "J D E" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B", "8": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB 7B 8B", "194": "KB LB" }, D: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "8": "I r J D E F A B", "257": "0 1 2 3 4 5 6 7 8 s t u v w x y z", "769": "C K L G M N O" }, E: { "1": "C K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "I r BC vB CC", "257": "J D E F A DC EC FC", "1025": "B wB nB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "C nB 3B OC oB", "8": "F B KC LC MC NC" }, G: { "1": "E RC SC TC UC VC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "8": "vB PC 4B QC", "1025": "WC XC YC" }, H: { "8": "jC" }, I: { "1": "I H nC 4B oC pC", "8": "qB kC lC mC" }, J: { "1": "A", "8": "D" }, K: { "1": "c", "8": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Details & Summary elements" }; + } +}); + +// node_modules/caniuse-lite/data/features/deviceorientation.js +var require_deviceorientation = __commonJS({ + "node_modules/caniuse-lite/data/features/deviceorientation.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "132": "B" }, B: { "1": "C K L G M N O", "4": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB 7B", "4": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "8": "I r 8B" }, D: { "2": "I r J", "4": "0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "4": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "vB PC", "4": "E 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "kC lC mC", "4": "qB I H nC 4B oC pC" }, J: { "2": "D", "4": "A" }, K: { "1": "C oB", "2": "A B nB 3B", "4": "c" }, L: { "4": "H" }, M: { "4": "b" }, N: { "1": "B", "2": "A" }, O: { "4": "qC" }, P: { "4": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "4": "xB" }, R: { "4": "3C" }, S: { "4": "4C" } }, B: 4, C: "DeviceOrientation & DeviceMotion events" }; + } +}); + +// node_modules/caniuse-lite/data/features/devicepixelratio.js +var require_devicepixelratio = __commonJS({ + "node_modules/caniuse-lite/data/features/devicepixelratio.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F B KC LC MC NC nB 3B" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "C c oB", "2": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Window.devicePixelRatio" }; + } +}); + +// node_modules/caniuse-lite/data/features/dialog.js +var require_dialog = __commonJS({ + "node_modules/caniuse-lite/data/features/dialog.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 7B 8B", "194": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P", "1218": "Q R tB S T U V W X Y Z a d e f g h i" }, D: { "1": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 I r J D E F A B C K L G M N O s t u v w x y z", "322": "5 6 7 8 9" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O KC LC MC NC nB 3B OC oB", "578": "s t u v w" }, G: { "1": "zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "Dialog element" }; + } +}); + +// node_modules/caniuse-lite/data/features/dispatchevent.js +var require_dispatchevent = __commonJS({ + "node_modules/caniuse-lite/data/features/dispatchevent.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "16": "5B", "129": "F A", "130": "J D E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "16": "F" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "1": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "129": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "EventTarget.dispatchEvent" }; + } +}); + +// node_modules/caniuse-lite/data/features/dnssec.js +var require_dnssec = __commonJS({ + "node_modules/caniuse-lite/data/features/dnssec.js"(exports2, module2) { + module2.exports = { A: { A: { "132": "J D E F A B 5B" }, B: { "132": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "132": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "132": "4 5 6 7 8 9 I r AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "388": "0 1 2 3 J D E F A B C K L G M N O s t u v w x y z" }, E: { "132": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "132": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "132": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "132": "jC" }, I: { "132": "qB I H kC lC mC nC 4B oC pC" }, J: { "132": "D A" }, K: { "132": "A B C c nB 3B oB" }, L: { "132": "H" }, M: { "132": "b" }, N: { "132": "A B" }, O: { "132": "qC" }, P: { "132": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "132": "xB" }, R: { "132": "3C" }, S: { "132": "4C" } }, B: 6, C: "DNSSEC and DANE" }; + } +}); + +// node_modules/caniuse-lite/data/features/do-not-track.js +var require_do_not_track = __commonJS({ + "node_modules/caniuse-lite/data/features/do-not-track.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "164": "F A", "260": "B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K L G M" }, C: { "1": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E 7B 8B", "516": "0 1 2 3 4 F A B C K L G M N O s t u v w x y z" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v" }, E: { "1": "J A B C CC FC wB nB", "2": "I r K L G BC vB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "1028": "D E F DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC nB 3B OC" }, G: { "1": "UC VC WC XC YC ZC aC", "2": "vB PC 4B QC RC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "1028": "E SC TC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "16": "D", "1028": "A" }, K: { "1": "c oB", "16": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "164": "A", "260": "B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 7, C: "Do Not Track API" }; + } +}); + +// node_modules/caniuse-lite/data/features/document-currentscript.js +var require_document_currentscript = __commonJS({ + "node_modules/caniuse-lite/data/features/document-currentscript.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "E F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G KC LC MC NC nB 3B OC oB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "document.currentScript" }; + } +}); + +// node_modules/caniuse-lite/data/features/document-evaluate-xpath.js +var require_document_evaluate_xpath = __commonJS({ + "node_modules/caniuse-lite/data/features/document-evaluate-xpath.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "16": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "16": "F" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 7, C: "document.evaluate & XPath" }; + } +}); + +// node_modules/caniuse-lite/data/features/document-execcommand.js +var require_document_execcommand = __commonJS({ + "node_modules/caniuse-lite/data/features/document-execcommand.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a LC MC NC nB 3B OC oB", "16": "F KC" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC", "16": "4B QC RC" }, H: { "2": "jC" }, I: { "1": "H nC 4B oC pC", "2": "qB I kC lC mC" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 7, C: "Document.execCommand()" }; + } +}); + +// node_modules/caniuse-lite/data/features/document-policy.js +var require_document_policy = __commonJS({ + "node_modules/caniuse-lite/data/features/document-policy.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T", "132": "U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T", "132": "U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB KC LC MC NC nB 3B OC oB", "132": "fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "132": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "132": "c" }, L: { "132": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "132": "3C" }, S: { "2": "4C" } }, B: 7, C: "Document Policy" }; + } +}); + +// node_modules/caniuse-lite/data/features/document-scrollingelement.js +var require_document_scrollingelement = __commonJS({ + "node_modules/caniuse-lite/data/features/document-scrollingelement.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "16": "C K" }, C: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 7B 8B" }, D: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "document.scrollingElement" }; + } +}); + +// node_modules/caniuse-lite/data/features/documenthead.js +var require_documenthead = __commonJS({ + "node_modules/caniuse-lite/data/features/documenthead.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "16": "r" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "2": "F KC LC MC NC" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "1": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "document.head" }; + } +}); + +// node_modules/caniuse-lite/data/features/dom-manip-convenience.js +var require_dom_manip_convenience = __commonJS({ + "node_modules/caniuse-lite/data/features/dom-manip-convenience.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 7B 8B" }, D: { "1": "RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB", "194": "PB QB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB KC LC MC NC nB 3B OC oB", "194": "DB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "DOM manipulation convenience methods" }; + } +}); + +// node_modules/caniuse-lite/data/features/dom-range.js +var require_dom_range = __commonJS({ + "node_modules/caniuse-lite/data/features/dom-range.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "5B", "8": "J D E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Document Object Model Range" }; + } +}); + +// node_modules/caniuse-lite/data/features/domcontentloaded.js +var require_domcontentloaded = __commonJS({ + "node_modules/caniuse-lite/data/features/domcontentloaded.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "DOMContentLoaded" }; + } +}); + +// node_modules/caniuse-lite/data/features/dommatrix.js +var require_dommatrix = __commonJS({ + "node_modules/caniuse-lite/data/features/dommatrix.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "132": "A B" }, B: { "132": "C K L G M N O", "1028": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "1028": "dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2564": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB", "3076": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB" }, D: { "16": "I r J D", "132": "0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB", "388": "E", "1028": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "16": "I BC vB", "132": "r J D E F A CC DC EC FC wB", "1028": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "132": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB", "1028": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "16": "vB PC 4B", "132": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "132": "I nC 4B oC pC", "292": "qB kC lC mC", "1028": "H" }, J: { "16": "D", "132": "A" }, K: { "2": "A B C nB 3B oB", "1028": "c" }, L: { "1028": "H" }, M: { "1028": "b" }, N: { "132": "A B" }, O: { "1028": "qC" }, P: { "132": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1028": "xB" }, R: { "1028": "3C" }, S: { "2564": "4C" } }, B: 4, C: "DOMMatrix" }; + } +}); + +// node_modules/caniuse-lite/data/features/download.js +var require_download = __commonJS({ + "node_modules/caniuse-lite/data/features/download.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Download attribute" }; + } +}); + +// node_modules/caniuse-lite/data/features/dragndrop.js +var require_dragndrop = __commonJS({ + "node_modules/caniuse-lite/data/features/dragndrop.js"(exports2, module2) { + module2.exports = { A: { A: { "644": "J D E F 5B", "772": "A B" }, B: { "1": "O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K L G M N" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "8": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "8": "F B KC LC MC NC nB 3B OC" }, G: { "1": "iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "1025": "H" }, J: { "2": "D A" }, K: { "1": "oB", "8": "A B C nB 3B", "1025": "c" }, L: { "1025": "H" }, M: { "2": "b" }, N: { "1": "A B" }, O: { "1025": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 1, C: "Drag and Drop" }; + } +}); + +// node_modules/caniuse-lite/data/features/element-closest.js +var require_element_closest = __commonJS({ + "node_modules/caniuse-lite/data/features/element-closest.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L" }, C: { "1": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "1 2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Element.closest()" }; + } +}); + +// node_modules/caniuse-lite/data/features/element-from-point.js +var require_element_from_point = __commonJS({ + "node_modules/caniuse-lite/data/features/element-from-point.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B", "16": "5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "16": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "16": "F KC LC MC NC" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "1": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "C c oB", "16": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "document.elementFromPoint()" }; + } +}); + +// node_modules/caniuse-lite/data/features/element-scroll-methods.js +var require_element_scroll_methods = __commonJS({ + "node_modules/caniuse-lite/data/features/element-scroll-methods.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB" }, E: { "1": "L G GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC", "132": "A B C K wB nB oB xB" }, F: { "1": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB KC LC MC NC nB 3B OC oB" }, G: { "1": "hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC", "132": "WC XC YC ZC aC bC cC dC eC fC gC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Scroll methods on elements (scroll, scrollTo, scrollBy)" }; + } +}); + +// node_modules/caniuse-lite/data/features/eme.js +var require_eme = __commonJS({ + "node_modules/caniuse-lite/data/features/eme.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "164": "B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB 7B 8B" }, D: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 I r J D E F A B C K L G M N O s t u v w x y z", "132": "8 9 AB BB CB DB EB" }, E: { "1": "C K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC DC", "164": "D E F A B EC FC wB nB" }, F: { "1": "2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u KC LC MC NC nB 3B OC oB", "132": "0 1 v w x y z" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "Encrypted Media Extensions" }; + } +}); + +// node_modules/caniuse-lite/data/features/eot.js +var require_eot = __commonJS({ + "node_modules/caniuse-lite/data/features/eot.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B", "2": "5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "EOT - Embedded OpenType fonts" }; + } +}); + +// node_modules/caniuse-lite/data/features/es5.js +var require_es5 = __commonJS({ + "node_modules/caniuse-lite/data/features/es5.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D 5B", "260": "F", "1026": "E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "4": "6B qB 7B 8B", "132": "I r J D E F A B C K L G M N O s t" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "4": "I r J D E F A B C K L G M N O", "132": "s t u v" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "4": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "4": "F B C KC LC MC NC nB 3B OC", "132": "oB" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "4": "vB PC 4B QC" }, H: { "132": "jC" }, I: { "1": "H oC pC", "4": "qB kC lC mC", "132": "nC 4B", "900": "I" }, J: { "1": "A", "4": "D" }, K: { "1": "c", "4": "A B C nB 3B", "132": "oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "ECMAScript 5" }; + } +}); + +// node_modules/caniuse-lite/data/features/es6-class.js +var require_es6_class = __commonJS({ + "node_modules/caniuse-lite/data/features/es6-class.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C" }, C: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB 7B 8B" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB", "132": "FB GB HB IB JB KB LB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "132": "2 3 4 5 6 7 8" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "ES6 classes" }; + } +}); + +// node_modules/caniuse-lite/data/features/es6-generators.js +var require_es6_generators = __commonJS({ + "node_modules/caniuse-lite/data/features/es6-generators.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x y 7B 8B" }, D: { "1": "CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x y KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "ES6 Generators" }; + } +}); + +// node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js +var require_es6_module_dynamic_import = __commonJS({ + "node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB 7B 8B", "194": "aB" }, D: { "1": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB" }, F: { "1": "NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB KC LC MC NC nB 3B OC oB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "JavaScript modules: dynamic import()" }; + } +}); + +// node_modules/caniuse-lite/data/features/es6-module.js +var require_es6_module = __commonJS({ + "node_modules/caniuse-lite/data/features/es6-module.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L", "4097": "M N O", "4290": "G" }, C: { "1": "WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB 7B 8B", "322": "RB SB TB UB VB rB" }, D: { "1": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB", "194": "WB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC", "3076": "wB" }, F: { "1": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KC LC MC NC nB 3B OC oB", "194": "KB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC", "3076": "XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "JavaScript modules via script tag" }; + } +}); + +// node_modules/caniuse-lite/data/features/es6-number.js +var require_es6_number = __commonJS({ + "node_modules/caniuse-lite/data/features/es6-number.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G 7B 8B", "132": "M N O s t u v w x", "260": "0 1 2 3 y z", "516": "4" }, D: { "1": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O", "1028": "0 1 2 3 4 5 6 s t u v w x y z" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "1028": "G M N O s t" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC", "1028": "nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "ES6 Number" }; + } +}); + +// node_modules/caniuse-lite/data/features/es6-string-includes.js +var require_es6_string_includes = __commonJS({ + "node_modules/caniuse-lite/data/features/es6-string-includes.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB 7B 8B" }, D: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "1 2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "String.prototype.includes" }; + } +}); + +// node_modules/caniuse-lite/data/features/es6.js +var require_es6 = __commonJS({ + "node_modules/caniuse-lite/data/features/es6.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "388": "B" }, B: { "257": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K L", "769": "G M N O" }, C: { "2": "6B qB I r 7B 8B", "4": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB", "257": "RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "I r J D E F A B C K L G M N O s t", "4": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "257": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC", "4": "E F EC FC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "4": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB", "257": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC", "4": "E SC TC UC VC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "4": "oC pC", "257": "H" }, J: { "2": "D", "4": "A" }, K: { "2": "A B C nB 3B oB", "257": "c" }, L: { "257": "H" }, M: { "257": "b" }, N: { "2": "A", "388": "B" }, O: { "257": "qC" }, P: { "4": "I", "257": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "257": "xB" }, R: { "257": "3C" }, S: { "4": "4C" } }, B: 6, C: "ECMAScript 2015 (ES6)" }; + } +}); + +// node_modules/caniuse-lite/data/features/eventsource.js +var require_eventsource = __commonJS({ + "node_modules/caniuse-lite/data/features/eventsource.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "4": "F KC LC MC NC" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "D A" }, K: { "1": "C c nB 3B oB", "4": "A B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Server-sent events" }; + } +}); + +// node_modules/caniuse-lite/data/features/extended-system-fonts.js +var require_extended_system_fonts = __commonJS({ + "node_modules/caniuse-lite/data/features/extended-system-fonts.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "ui-serif, ui-sans-serif, ui-monospace and ui-rounded values for font-family" }; + } +}); + +// node_modules/caniuse-lite/data/features/feature-policy.js +var require_feature_policy = __commonJS({ + "node_modules/caniuse-lite/data/features/feature-policy.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W", "2": "C K L G M N O", "1025": "X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB 7B 8B", "260": "iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "iB jB kB lB mB P Q R S T U V W", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB", "132": "WB sB XB YB c ZB aB bB cB dB eB fB gB hB", "1025": "X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B BC vB CC DC EC FC wB", "772": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KC LC MC NC nB 3B OC oB", "132": "KB LB MB NB OB PB QB RB SB TB UB VB WB", "1025": "jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC", "772": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1025": "H" }, M: { "260": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC", "132": "uC vC wB" }, Q: { "132": "xB" }, R: { "1025": "3C" }, S: { "2": "4C" } }, B: 7, C: "Feature Policy" }; + } +}); + +// node_modules/caniuse-lite/data/features/fetch.js +var require_fetch = __commonJS({ + "node_modules/caniuse-lite/data/features/fetch.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K" }, C: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "1025": "CB", "1218": "7 8 9 AB BB" }, D: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB", "260": "DB", "772": "EB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "260": "0", "772": "1" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Fetch" }; + } +}); + +// node_modules/caniuse-lite/data/features/fieldset-disabled.js +var require_fieldset_disabled = __commonJS({ + "node_modules/caniuse-lite/data/features/fieldset-disabled.js"(exports2, module2) { + module2.exports = { A: { A: { "16": "5B", "132": "E F", "388": "J D A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G", "16": "M N O s" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a LC MC NC nB 3B OC oB", "16": "F KC" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC" }, H: { "388": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A", "260": "B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "disabled attribute of the fieldset element" }; + } +}); + +// node_modules/caniuse-lite/data/features/fileapi.js +var require_fileapi = __commonJS({ + "node_modules/caniuse-lite/data/features/fileapi.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "260": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K L G M N O" }, C: { "1": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B", "260": "0 I r J D E F A B C K L G M N O s t u v w x y z 8B" }, D: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r", "260": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB", "388": "J D E F A B C" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB", "260": "J D E F DC EC FC", "388": "CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B KC LC MC NC", "260": "C G M N O s t u v w x nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "260": "E RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H pC", "2": "kC lC mC", "260": "oC", "388": "qB I nC 4B" }, J: { "260": "A", "388": "D" }, K: { "1": "c", "2": "A B", "260": "C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A", "260": "B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "File API" }; + } +}); + +// node_modules/caniuse-lite/data/features/filereader.js +var require_filereader = __commonJS({ + "node_modules/caniuse-lite/data/features/filereader.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "132": "A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 8B", "2": "6B qB 7B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "2": "F B KC LC MC NC" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC" }, H: { "2": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "A", "2": "D" }, K: { "1": "C c nB 3B oB", "2": "A B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "FileReader API" }; + } +}); + +// node_modules/caniuse-lite/data/features/filereadersync.js +var require_filereadersync = __commonJS({ + "node_modules/caniuse-lite/data/features/filereadersync.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F KC LC", "16": "B MC NC nB 3B" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "C c 3B oB", "2": "A", "16": "B nB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "FileReaderSync" }; + } +}); + +// node_modules/caniuse-lite/data/features/filesystem.js +var require_filesystem = __commonJS({ + "node_modules/caniuse-lite/data/features/filesystem.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "33": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "I r J D", "33": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "36": "E F A B C" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D", "33": "A" }, K: { "2": "A B C c nB 3B oB" }, L: { "33": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "33": "qC" }, P: { "2": "I", "33": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "33": "3C" }, S: { "2": "4C" } }, B: 7, C: "Filesystem & FileWriter API" }; + } +}); + +// node_modules/caniuse-lite/data/features/flac.js +var require_flac = __commonJS({ + "node_modules/caniuse-lite/data/features/flac.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G" }, C: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB 7B 8B" }, D: { "1": "TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB", "16": "HB IB JB", "388": "KB LB MB NB OB PB QB RB SB" }, E: { "1": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB", "516": "B C nB oB" }, F: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB KC LC MC NC nB 3B OC oB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "kC lC mC", "16": "qB I nC 4B oC pC" }, J: { "1": "A", "2": "D" }, K: { "1": "c oB", "16": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "129": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "FLAC audio format" }; + } +}); + +// node_modules/caniuse-lite/data/features/flexbox-gap.js +var require_flexbox_gap = __commonJS({ + "node_modules/caniuse-lite/data/features/flexbox-gap.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O P Q R S" }, C: { "1": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB 7B 8B" }, D: { "1": "T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S" }, E: { "1": "G GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB" }, F: { "1": "eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB KC LC MC NC nB 3B OC oB" }, G: { "1": "hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "gap property for Flexbox" }; + } +}); + +// node_modules/caniuse-lite/data/features/flexbox.js +var require_flexbox = __commonJS({ + "node_modules/caniuse-lite/data/features/flexbox.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "1028": "B", "1316": "A" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "164": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B", "516": "0 v w x y z" }, D: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "0 1 u v w x y z", "164": "I r J D E F A B C K L G M N O s t" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "33": "D E DC EC", "164": "I r J BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B C KC LC MC NC nB 3B OC", "33": "G M" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "33": "E SC TC", "164": "vB PC 4B QC RC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "164": "qB I kC lC mC nC 4B" }, J: { "1": "A", "164": "D" }, K: { "1": "c oB", "2": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "292": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS Flexible Box Layout Module" }; + } +}); + +// node_modules/caniuse-lite/data/features/flow-root.js +var require_flow_root = __commonJS({ + "node_modules/caniuse-lite/data/features/flow-root.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 7B 8B" }, D: { "1": "VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB" }, E: { "1": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB oB" }, F: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB KC LC MC NC nB 3B OC oB" }, G: { "1": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "display: flow-root" }; + } +}); + +// node_modules/caniuse-lite/data/features/focusin-focusout-events.js +var require_focusin_focusout_events = __commonJS({ + "node_modules/caniuse-lite/data/features/focusin-focusout-events.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B", "2": "5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F KC LC MC NC", "16": "B nB 3B" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "I H nC 4B oC pC", "2": "kC lC mC", "16": "qB" }, J: { "1": "D A" }, K: { "1": "C c oB", "2": "A", "16": "B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "focusin & focusout events" }; + } +}); + +// node_modules/caniuse-lite/data/features/font-family-system-ui.js +var require_font_family_system_ui = __commonJS({ + "node_modules/caniuse-lite/data/features/font-family-system-ui.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB 7B 8B", "132": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, D: { "1": "TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB", "260": "QB RB SB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC", "16": "F", "132": "A FC wB" }, F: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB KC LC MC NC nB 3B OC oB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC", "132": "UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "132": "4C" } }, B: 5, C: "system-ui value for font-family" }; + } +}); + +// node_modules/caniuse-lite/data/features/font-feature.js +var require_font_feature = __commonJS({ + "node_modules/caniuse-lite/data/features/font-feature.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "33": "0 1 2 3 4 5 6 G M N O s t u v w x y z", "164": "I r J D E F A B C K L" }, D: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G", "33": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB", "292": "M N O s t" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "D E F BC vB DC EC", "4": "I r J CC" }, F: { "1": "8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 G M N O s t u v w x y z" }, G: { "1": "VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E SC TC UC", "4": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B", "33": "oC pC" }, J: { "2": "D", "33": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "33": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS font-feature-settings" }; + } +}); + +// node_modules/caniuse-lite/data/features/font-kerning.js +var require_font_kerning = __commonJS({ + "node_modules/caniuse-lite/data/features/font-kerning.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w 7B 8B", "194": "0 1 2 3 4 5 6 x y z" }, D: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 I r J D E F A B C K L G M N O s t u v w x y z", "33": "2 3 4 5" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC DC", "33": "D E F EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G KC LC MC NC nB 3B OC oB", "33": "M N O s" }, G: { "1": "aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC", "33": "E TC UC VC WC XC YC ZC" }, H: { "2": "jC" }, I: { "1": "H pC", "2": "qB I kC lC mC nC 4B", "33": "oC" }, J: { "2": "D", "33": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS3 font-kerning" }; + } +}); + +// node_modules/caniuse-lite/data/features/font-loading.js +var require_font_loading = __commonJS({ + "node_modules/caniuse-lite/data/features/font-loading.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "8 9 AB BB CB DB" }, D: { "1": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "CSS Font Loading" }; + } +}); + +// node_modules/caniuse-lite/data/features/font-size-adjust.js +var require_font_size_adjust = __commonJS({ + "node_modules/caniuse-lite/data/features/font-size-adjust.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "194": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB", "194": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "194": "3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "194": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 2, C: "CSS font-size-adjust" }; + } +}); + +// node_modules/caniuse-lite/data/features/font-smooth.js +var require_font_smooth = __commonJS({ + "node_modules/caniuse-lite/data/features/font-smooth.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "676": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB I r J D E F A B C K L G M N O s t u v w x 7B 8B", "804": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "I", "676": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "BC vB", "676": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "676": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "804": "4C" } }, B: 7, C: "CSS font-smooth" }; + } +}); + +// node_modules/caniuse-lite/data/features/font-unicode-range.js +var require_font_unicode_range = __commonJS({ + "node_modules/caniuse-lite/data/features/font-unicode-range.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "4": "F A B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "4": "C K L G M" }, C: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "9 AB BB CB DB EB FB GB" }, D: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "4": "0 1 2 3 4 5 6 7 8 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "4": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "4": "G M N O s t u v" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "4": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "4": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D", "4": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "4": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "4": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Font unicode-range subsetting" }; + } +}); + +// node_modules/caniuse-lite/data/features/font-variant-alternates.js +var require_font_variant_alternates = __commonJS({ + "node_modules/caniuse-lite/data/features/font-variant-alternates.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "130": "A B" }, B: { "130": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "130": "I r J D E F A B C K L G M N O s t u v w", "322": "0 1 2 3 4 5 6 x y z" }, D: { "2": "I r J D E F A B C K L G", "130": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "D E F BC vB DC EC", "130": "I r J CC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "130": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB SC TC UC", "130": "PC 4B QC RC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "130": "H oC pC" }, J: { "2": "D", "130": "A" }, K: { "2": "A B C nB 3B oB", "130": "c" }, L: { "130": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "130": "qC" }, P: { "130": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "130": "xB" }, R: { "130": "3C" }, S: { "1": "4C" } }, B: 5, C: "CSS font-variant-alternates" }; + } +}); + +// node_modules/caniuse-lite/data/features/font-variant-numeric.js +var require_font_variant_numeric = __commonJS({ + "node_modules/caniuse-lite/data/features/font-variant-numeric.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB KC LC MC NC nB 3B OC oB" }, G: { "1": "VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D", "16": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS font-variant-numeric" }; + } +}); + +// node_modules/caniuse-lite/data/features/fontface.js +var require_fontface = __commonJS({ + "node_modules/caniuse-lite/data/features/fontface.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "132": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a LC MC NC nB 3B OC oB", "2": "F KC" }, G: { "1": "E 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "260": "vB PC" }, H: { "2": "jC" }, I: { "1": "I H nC 4B oC pC", "2": "kC", "4": "qB lC mC" }, J: { "1": "A", "4": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "@font-face Web fonts" }; + } +}); + +// node_modules/caniuse-lite/data/features/form-attribute.js +var require_form_attribute = __commonJS({ + "node_modules/caniuse-lite/data/features/form-attribute.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "16": "r" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Form attribute" }; + } +}); + +// node_modules/caniuse-lite/data/features/form-submit-attributes.js +var require_form_submit_attributes = __commonJS({ + "node_modules/caniuse-lite/data/features/form-submit-attributes.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a NC nB 3B OC oB", "2": "F KC", "16": "LC MC" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "I H nC 4B oC pC", "2": "kC lC mC", "16": "qB" }, J: { "1": "A", "2": "D" }, K: { "1": "B C c nB 3B oB", "16": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Attributes for form submission" }; + } +}); + +// node_modules/caniuse-lite/data/features/form-validation.js +var require_form_validation = __commonJS({ + "node_modules/caniuse-lite/data/features/form-validation.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "132": "r J D E F A CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a LC MC NC nB 3B OC oB", "2": "F KC" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB", "132": "E PC 4B QC RC SC TC UC VC WC" }, H: { "516": "jC" }, I: { "1": "H pC", "2": "qB kC lC mC", "132": "I nC 4B oC" }, J: { "1": "A", "132": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "260": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "132": "4C" } }, B: 1, C: "Form validation" }; + } +}); + +// node_modules/caniuse-lite/data/features/forms.js +var require_forms = __commonJS({ + "node_modules/caniuse-lite/data/features/forms.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "5B", "4": "A B", "8": "J D E F" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "4": "C K L G" }, C: { "4": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "8": "6B qB 7B 8B" }, D: { "1": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "4": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB" }, E: { "4": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "BC vB" }, F: { "1": "F B C PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "4": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB" }, G: { "2": "vB", "4": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B", "4": "oC pC" }, J: { "2": "D", "4": "A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "4": "b" }, N: { "4": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "4": "I rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "4": "4C" } }, B: 1, C: "HTML5 form features" }; + } +}); + +// node_modules/caniuse-lite/data/features/fullscreen.js +var require_fullscreen = __commonJS({ + "node_modules/caniuse-lite/data/features/fullscreen.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "548": "B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "516": "C K L G M N O" }, C: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F 7B 8B", "676": "0 1 2 3 4 5 6 7 8 9 A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB", "1700": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB" }, D: { "1": "fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L", "676": "G M N O s", "804": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB" }, E: { "2": "I r BC vB", "548": "zB 0B 1B pB 2B IC JC", "676": "CC", "804": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB" }, F: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B C KC LC MC NC nB 3B OC", "804": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC", "2052": "aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D", "292": "A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A", "548": "B" }, O: { "1": "qC" }, P: { "1": "wB wC xC yC zC 0C pB 1C 2C", "804": "I rC sC tC uC vC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Full Screen API" }; + } +}); + +// node_modules/caniuse-lite/data/features/gamepad.js +var require_gamepad = __commonJS({ + "node_modules/caniuse-lite/data/features/gamepad.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t", "33": "u v w x" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Gamepad API" }; + } +}); + +// node_modules/caniuse-lite/data/features/geolocation.js +var require_geolocation = __commonJS({ + "node_modules/caniuse-lite/data/features/geolocation.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "5B", "8": "J D E" }, B: { "1": "C K L G M N O", "129": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB 7B 8B", "8": "6B qB", "129": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB", "4": "I", "129": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J D E F B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "I BC vB", "129": "A" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C M N O s t u v w x y z AB BB NC nB 3B OC oB", "2": "F G KC", "8": "LC MC", "129": "CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC", "129": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I kC lC mC nC 4B oC pC", "129": "H" }, J: { "1": "D A" }, K: { "1": "B C nB 3B oB", "8": "A", "129": "c" }, L: { "129": "H" }, M: { "129": "b" }, N: { "1": "A B" }, O: { "129": "qC" }, P: { "1": "I", "129": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "129": "xB" }, R: { "129": "3C" }, S: { "1": "4C" } }, B: 2, C: "Geolocation" }; + } +}); + +// node_modules/caniuse-lite/data/features/getboundingclientrect.js +var require_getboundingclientrect = __commonJS({ + "node_modules/caniuse-lite/data/features/getboundingclientrect.js"(exports2, module2) { + module2.exports = { A: { A: { "644": "J D 5B", "2049": "F A B", "2692": "E" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2049": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B", "260": "I r J D E F A B", "1156": "qB", "1284": "7B", "1796": "8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a NC nB 3B OC oB", "16": "F KC", "132": "LC MC" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "1": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "132": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2049": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Element.getBoundingClientRect()" }; + } +}); + +// node_modules/caniuse-lite/data/features/getcomputedstyle.js +var require_getcomputedstyle = __commonJS({ + "node_modules/caniuse-lite/data/features/getcomputedstyle.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B", "132": "qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "260": "I r J D E F A" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "260": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a NC nB 3B OC oB", "260": "F KC LC MC" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "260": "vB PC 4B" }, H: { "260": "jC" }, I: { "1": "I H nC 4B oC pC", "260": "qB kC lC mC" }, J: { "1": "A", "260": "D" }, K: { "1": "B C c nB 3B oB", "260": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "getComputedStyle" }; + } +}); + +// node_modules/caniuse-lite/data/features/getelementsbyclassname.js +var require_getelementsbyclassname = __commonJS({ + "node_modules/caniuse-lite/data/features/getelementsbyclassname.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "5B", "8": "J D E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "8": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "getElementsByClassName" }; + } +}); + +// node_modules/caniuse-lite/data/features/getrandomvalues.js +var require_getrandomvalues = __commonJS({ + "node_modules/caniuse-lite/data/features/getrandomvalues.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "33": "B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A", "33": "B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "crypto.getRandomValues()" }; + } +}); + +// node_modules/caniuse-lite/data/features/gyroscope.js +var require_gyroscope = __commonJS({ + "node_modules/caniuse-lite/data/features/gyroscope.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB", "194": "VB rB WB sB XB YB c ZB aB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "Gyroscope" }; + } +}); + +// node_modules/caniuse-lite/data/features/hardwareconcurrency.js +var require_hardwareconcurrency = __commonJS({ + "node_modules/caniuse-lite/data/features/hardwareconcurrency.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L" }, C: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 7B 8B" }, D: { "1": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "2": "I r J D BC vB CC DC EC", "129": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "194": "E F A FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w KC LC MC NC nB 3B OC oB" }, G: { "2": "vB PC 4B QC RC SC", "129": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "194": "E TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "navigator.hardwareConcurrency" }; + } +}); + +// node_modules/caniuse-lite/data/features/hashchange.js +var require_hashchange = __commonJS({ + "node_modules/caniuse-lite/data/features/hashchange.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "E F A B", "8": "J D 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 8B", "8": "6B qB 7B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "8": "I" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a NC nB 3B OC oB", "8": "F KC LC MC" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB" }, H: { "2": "jC" }, I: { "1": "qB I H lC mC nC 4B oC pC", "2": "kC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "8": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Hashchange event" }; + } +}); + +// node_modules/caniuse-lite/data/features/heif.js +var require_heif = __commonJS({ + "node_modules/caniuse-lite/data/features/heif.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A BC vB CC DC EC FC wB", "130": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC", "130": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "HEIF/ISO Base Media File Format" }; + } +}); + +// node_modules/caniuse-lite/data/features/hevc.js +var require_hevc = __commonJS({ + "node_modules/caniuse-lite/data/features/hevc.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "132": "B" }, B: { "132": "C K L G M N O", "1028": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b", "2052": "H uB 9B AC" }, E: { "1": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB", "516": "B C nB oB" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "258": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "258": "c" }, L: { "258": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I", "258": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "HEVC/H.265 video format" }; + } +}); + +// node_modules/caniuse-lite/data/features/hidden.js +var require_hidden = __commonJS({ + "node_modules/caniuse-lite/data/features/hidden.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "2": "F B KC LC MC NC" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "I H nC 4B oC pC", "2": "qB kC lC mC" }, J: { "1": "A", "2": "D" }, K: { "1": "C c nB 3B oB", "2": "A B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "hidden attribute" }; + } +}); + +// node_modules/caniuse-lite/data/features/high-resolution-time.js +var require_high_resolution_time = __commonJS({ + "node_modules/caniuse-lite/data/features/high-resolution-time.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s", "33": "t u v w" }, E: { "1": "E F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "High Resolution Time API" }; + } +}); + +// node_modules/caniuse-lite/data/features/history.js +var require_history = __commonJS({ + "node_modules/caniuse-lite/data/features/history.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "4": "r CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a 3B OC oB", "2": "F B KC LC MC NC nB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC", "4": "4B" }, H: { "2": "jC" }, I: { "1": "H lC mC 4B oC pC", "2": "qB I kC nC" }, J: { "1": "D A" }, K: { "1": "C c nB 3B oB", "2": "A B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Session history management" }; + } +}); + +// node_modules/caniuse-lite/data/features/html-media-capture.js +var require_html_media_capture = __commonJS({ + "node_modules/caniuse-lite/data/features/html-media-capture.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "vB PC 4B QC", "129": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC", "257": "lC mC" }, J: { "1": "A", "16": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "516": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "16": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 2, C: "HTML Media Capture" }; + } +}); + +// node_modules/caniuse-lite/data/features/html5semantic.js +var require_html5semantic = __commonJS({ + "node_modules/caniuse-lite/data/features/html5semantic.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "5B", "8": "J D E", "260": "F A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B", "132": "qB 7B 8B", "260": "I r J D E F A B C K L G M N O s t" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "I r", "260": "J D E F A B C K L G M N O s t u v w x y" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "132": "I BC vB", "260": "r J CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "132": "F B KC LC MC NC", "260": "C nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "132": "vB", "260": "PC 4B QC RC" }, H: { "132": "jC" }, I: { "1": "H oC pC", "132": "kC", "260": "qB I lC mC nC 4B" }, J: { "260": "D A" }, K: { "1": "c", "132": "A", "260": "B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "260": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "HTML5 semantic elements" }; + } +}); + +// node_modules/caniuse-lite/data/features/http-live-streaming.js +var require_http_live_streaming = __commonJS({ + "node_modules/caniuse-lite/data/features/http-live-streaming.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O", "2": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "HTTP Live Streaming (HLS)" }; + } +}); + +// node_modules/caniuse-lite/data/features/http2.js +var require_http2 = __commonJS({ + "node_modules/caniuse-lite/data/features/http2.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "132": "B" }, B: { "1": "C K L G M N O", "513": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB", "2": "0 1 2 3 4 5 6 7 8 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "513": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "EB FB GB HB IB JB KB LB MB NB", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB", "513": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC", "260": "F A FC wB" }, F: { "1": "1 2 3 4 5 6 7 8 9 AB", "2": "0 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "513": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "513": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "513": "c" }, L: { "513": "H" }, M: { "513": "b" }, N: { "2": "A B" }, O: { "513": "qC" }, P: { "1": "I", "513": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "513": "xB" }, R: { "513": "3C" }, S: { "1": "4C" } }, B: 6, C: "HTTP/2 protocol" }; + } +}); + +// node_modules/caniuse-lite/data/features/http3.js +var require_http3 = __commonJS({ + "node_modules/caniuse-lite/data/features/http3.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O", "322": "P Q R S T", "578": "U V" }, C: { "1": "X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB 7B 8B", "194": "gB hB iB jB kB lB mB P Q R tB S T U V W" }, D: { "1": "W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB", "322": "P Q R S T", "578": "U V" }, E: { "2": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB xB", "1090": "L G GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB KC LC MC NC nB 3B OC oB", "578": "hB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC", "66": "gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "HTTP/3 protocol" }; + } +}); + +// node_modules/caniuse-lite/data/features/iframe-sandbox.js +var require_iframe_sandbox = __commonJS({ + "node_modules/caniuse-lite/data/features/iframe-sandbox.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M 7B 8B", "4": "0 N O s t u v w x y z" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC" }, H: { "2": "jC" }, I: { "1": "qB I H lC mC nC 4B oC pC", "2": "kC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "sandbox attribute for iframes" }; + } +}); + +// node_modules/caniuse-lite/data/features/iframe-seamless.js +var require_iframe_seamless = __commonJS({ + "node_modules/caniuse-lite/data/features/iframe-seamless.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "66": "t u v w x y z" }, E: { "2": "I r J E F A B C K L G BC vB CC DC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "130": "D EC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "130": "SC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "seamless attribute for iframes" }; + } +}); + +// node_modules/caniuse-lite/data/features/iframe-srcdoc.js +var require_iframe_srcdoc = __commonJS({ + "node_modules/caniuse-lite/data/features/iframe-srcdoc.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "5B", "8": "J D E F A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "8": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B", "8": "qB I r J D E F A B C K L G M N O s t u v w x 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K", "8": "L G M N O s" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB", "8": "I r CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B KC LC MC NC", "8": "C nB 3B OC oB" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB", "8": "PC 4B QC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "8": "qB I kC lC mC nC 4B" }, J: { "1": "A", "8": "D" }, K: { "1": "c", "2": "A B", "8": "C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "8": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "srcdoc attribute for iframes" }; + } +}); + +// node_modules/caniuse-lite/data/features/imagecapture.js +var require_imagecapture = __commonJS({ + "node_modules/caniuse-lite/data/features/imagecapture.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB", "322": "QB RB SB TB UB VB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB KC LC MC NC nB 3B OC oB", "322": "DB EB FB GB HB IB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "194": "4C" } }, B: 5, C: "ImageCapture API" }; + } +}); + +// node_modules/caniuse-lite/data/features/ime.js +var require_ime = __commonJS({ + "node_modules/caniuse-lite/data/features/ime.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "161": "B" }, B: { "2": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "161": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A", "161": "B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Input Method Editor API" }; + } +}); + +// node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js +var require_img_naturalwidth_naturalheight = __commonJS({ + "node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "naturalWidth & naturalHeight image properties" }; + } +}); + +// node_modules/caniuse-lite/data/features/import-maps.js +var require_import_maps = __commonJS({ + "node_modules/caniuse-lite/data/features/import-maps.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O", "194": "P Q R S T U V W X" }, C: { "1": "uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m 7B 8B", "322": "n o p q b H" }, D: { "1": "Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB", "194": "iB jB kB lB mB P Q R S T U V W X" }, E: { "1": "JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC" }, F: { "1": "kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB KC LC MC NC nB 3B OC oB", "194": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC zC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "Import maps" }; + } +}); + +// node_modules/caniuse-lite/data/features/imports.js +var require_imports = __commonJS({ + "node_modules/caniuse-lite/data/features/imports.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "8": "A B" }, B: { "1": "P", "2": "Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "8": "C K L G M N O" }, C: { "2": "0 1 2 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "8": "3 4 TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "72": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB" }, D: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P", "2": "0 1 2 I r J D E F A B C K L G M N O s t u v w x y z Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "66": "3 4 5 6 7", "72": "8" }, E: { "2": "I r BC vB CC", "8": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB", "2": "F B C G M bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "66": "N O s t u", "72": "v" }, G: { "2": "vB PC 4B QC RC", "8": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "8": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC", "2": "yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "2": "3C" }, S: { "1": "4C" } }, B: 5, C: "HTML Imports" }; + } +}); + +// node_modules/caniuse-lite/data/features/indeterminate-checkbox.js +var require_indeterminate_checkbox = __commonJS({ + "node_modules/caniuse-lite/data/features/indeterminate-checkbox.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B", "16": "5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 8B", "2": "6B qB", "16": "7B" }, D: { "1": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F B KC LC MC NC nB 3B" }, G: { "1": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "indeterminate checkbox" }; + } +}); + +// node_modules/caniuse-lite/data/features/indexeddb.js +var require_indexeddb = __commonJS({ + "node_modules/caniuse-lite/data/features/indexeddb.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "132": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "132": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "33": "A B C K L G", "36": "I r J D E F" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "A", "8": "I r J D E F", "33": "w", "36": "B C K L G M N O s t u v" }, E: { "1": "A B C K L G wB nB oB xB HC yB zB 0B 1B pB 2B IC JC", "8": "I r J D BC vB CC DC", "260": "E F EC FC", "516": "GC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F KC LC", "8": "B C MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC iC yB zB 0B 1B pB 2B", "8": "vB PC 4B QC RC SC", "260": "E TC UC VC", "516": "hC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "8": "qB I kC lC mC nC 4B" }, J: { "1": "A", "8": "D" }, K: { "1": "c", "2": "A", "8": "B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "IndexedDB" }; + } +}); + +// node_modules/caniuse-lite/data/features/indexeddb2.js +var require_indexeddb2 = __commonJS({ + "node_modules/caniuse-lite/data/features/indexeddb2.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB 7B 8B", "132": "HB IB JB", "260": "KB LB MB NB" }, D: { "1": "VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB", "132": "LB MB NB OB", "260": "PB QB RB SB TB UB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "132": "8 9 AB BB", "260": "CB DB EB FB GB HB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC", "16": "WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "260": "rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "260": "4C" } }, B: 2, C: "IndexedDB 2.0" }; + } +}); + +// node_modules/caniuse-lite/data/features/inline-block.js +var require_inline_block = __commonJS({ + "node_modules/caniuse-lite/data/features/inline-block.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "E F A B", "4": "5B", "132": "J D" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "36": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS inline-block" }; + } +}); + +// node_modules/caniuse-lite/data/features/innertext.js +var require_innertext = __commonJS({ + "node_modules/caniuse-lite/data/features/innertext.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B", "16": "5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "16": "F" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "1": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "HTMLElement.innerText" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js +var require_input_autocomplete_onoff = __commonJS({ + "node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A 5B", "132": "B" }, B: { "132": "C K L G M N O", "260": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "516": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "N O s t u v w x y z", "2": "I r J D E F A B C K L G M", "132": "0 1 2 3 4 5 6 7 8 9 AB BB CB DB", "260": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "J CC DC", "2": "I r BC vB", "2052": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "vB PC 4B", "1025": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1025": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2052": "A B" }, O: { "1025": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "260": "xB" }, R: { "1": "3C" }, S: { "516": "4C" } }, B: 1, C: "autocomplete attribute: on & off values" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-color.js +var require_input_color = __commonJS({ + "node_modules/caniuse-lite/data/features/input-color.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K" }, C: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s" }, E: { "1": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "2": "F G M KC LC MC NC" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC", "129": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "Color input type" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-datetime.js +var require_input_datetime = __commonJS({ + "node_modules/caniuse-lite/data/features/input-datetime.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "132": "C" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 7B 8B", "1090": "QB RB SB TB", "2052": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d", "4100": "e f g h i j k l m n o p q b H uB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s", "2052": "t u v w x" }, E: { "2": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB", "4100": "G GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "vB PC 4B", "260": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB kC lC mC", "514": "I nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "4100": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2052": "4C" } }, B: 1, C: "Date and time input types" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-email-tel-url.js +var require_input_email_tel_url = __commonJS({ + "node_modules/caniuse-lite/data/features/input-email-tel-url.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H nC 4B oC pC", "132": "kC lC mC" }, J: { "1": "A", "132": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Email, telephone & URL input types" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-event.js +var require_input_event = __commonJS({ + "node_modules/caniuse-lite/data/features/input-event.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "2561": "A B", "2692": "F" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2561": "C K L G M N O" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "16": "6B", "1537": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 8B", "1796": "qB 7B" }, D: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L", "1025": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB", "1537": "0 1 2 3 4 5 6 7 G M N O s t u v w x y z" }, E: { "1": "L G xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r J BC vB", "1025": "D E F A B C DC EC FC wB nB", "1537": "CC", "4097": "K oB" }, F: { "1": "PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "16": "F B C KC LC MC NC nB 3B", "260": "OC", "1025": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB", "1537": "G M N O s t u" }, G: { "1": "dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B", "1025": "E TC UC VC WC XC YC ZC aC", "1537": "QC RC SC", "4097": "bC cC" }, H: { "2": "jC" }, I: { "16": "kC lC", "1025": "H pC", "1537": "qB I mC nC 4B oC" }, J: { "1025": "A", "1537": "D" }, K: { "1": "A B C nB 3B oB", "1025": "c" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2561": "A B" }, O: { "1": "qC" }, P: { "1025": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1537": "4C" } }, B: 1, C: "input event" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-file-accept.js +var require_input_file_accept = __commonJS({ + "node_modules/caniuse-lite/data/features/input-file-accept.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "132": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I", "16": "r J D E u v w x y", "132": "F A B C K L G M N O s t" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "132": "J D E F A B DC EC FC wB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "2": "RC SC", "132": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "514": "vB PC 4B QC" }, H: { "2": "jC" }, I: { "2": "kC lC mC", "260": "qB I nC 4B", "514": "H oC pC" }, J: { "132": "A", "260": "D" }, K: { "2": "A B C nB 3B oB", "514": "c" }, L: { "260": "H" }, M: { "2": "b" }, N: { "514": "A", "1028": "B" }, O: { "2": "qC" }, P: { "260": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "260": "xB" }, R: { "260": "3C" }, S: { "1": "4C" } }, B: 1, C: "accept attribute for file input" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-file-directory.js +var require_input_file_directory = __commonJS({ + "node_modules/caniuse-lite/data/features/input-file-directory.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K" }, C: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB 7B 8B" }, D: { "1": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Directory selection from file input" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-file-multiple.js +var require_input_file_multiple = __commonJS({ + "node_modules/caniuse-lite/data/features/input-file-multiple.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 8B", "2": "6B qB 7B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a NC nB 3B OC oB", "2": "F KC LC MC" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC" }, H: { "130": "jC" }, I: { "130": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "130": "A B C c nB 3B oB" }, L: { "132": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "130": "qC" }, P: { "130": "I", "132": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "132": "xB" }, R: { "132": "3C" }, S: { "2": "4C" } }, B: 1, C: "Multiple file selection" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-inputmode.js +var require_input_inputmode = __commonJS({ + "node_modules/caniuse-lite/data/features/input-inputmode.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M 7B 8B", "4": "N O s t", "194": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f" }, D: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB", "66": "TB UB VB rB WB sB XB YB c ZB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB KC LC MC NC nB 3B OC oB", "66": "GB HB IB JB KB LB MB NB OB PB" }, G: { "1": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "194": "4C" } }, B: 1, C: "inputmode attribute" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-minlength.js +var require_input_minlength = __commonJS({ + "node_modules/caniuse-lite/data/features/input-minlength.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M" }, C: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB 7B 8B" }, D: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "Minimum length attribute for input fields" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-number.js +var require_input_number = __commonJS({ + "node_modules/caniuse-lite/data/features/input-number.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "129": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "129": "C K", "1025": "L G M N O" }, C: { "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "513": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "388": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB kC lC mC", "388": "I H nC 4B oC pC" }, J: { "2": "D", "388": "A" }, K: { "1": "A B C nB 3B oB", "388": "c" }, L: { "388": "H" }, M: { "641": "b" }, N: { "388": "A B" }, O: { "388": "qC" }, P: { "388": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "388": "xB" }, R: { "388": "3C" }, S: { "513": "4C" } }, B: 1, C: "Number input type" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-pattern.js +var require_input_pattern = __commonJS({ + "node_modules/caniuse-lite/data/features/input-pattern.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "16": "r", "388": "J D E F A CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B", "388": "E QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H pC", "2": "qB I kC lC mC nC 4B oC" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Pattern attribute for input fields" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-placeholder.js +var require_input_placeholder = __commonJS({ + "node_modules/caniuse-lite/data/features/input-placeholder.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "132": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a 3B OC oB", "2": "F KC LC MC NC", "132": "B nB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB H kC lC mC 4B oC pC", "4": "I nC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "input placeholder attribute" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-range.js +var require_input_range = __commonJS({ + "node_modules/caniuse-lite/data/features/input-range.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "H 4B oC pC", "4": "qB I kC lC mC nC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Range input type" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-search.js +var require_input_search = __commonJS({ + "node_modules/caniuse-lite/data/features/input-search.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "129": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "129": "C K L G M N O" }, C: { "2": "6B qB 7B 8B", "129": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L u v w x y", "129": "G M N O s t" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F KC LC MC NC", "16": "B nB 3B" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B" }, H: { "129": "jC" }, I: { "1": "H oC pC", "16": "kC lC", "129": "qB I mC nC 4B" }, J: { "1": "D", "129": "A" }, K: { "1": "C c", "2": "A", "16": "B nB 3B", "129": "oB" }, L: { "1": "H" }, M: { "129": "b" }, N: { "129": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "129": "4C" } }, B: 1, C: "Search input type" }; + } +}); + +// node_modules/caniuse-lite/data/features/input-selection.js +var require_input_selection = __commonJS({ + "node_modules/caniuse-lite/data/features/input-selection.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a NC nB 3B OC oB", "16": "F KC LC MC" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "2": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Selection controls for input & textarea" }; + } +}); + +// node_modules/caniuse-lite/data/features/insert-adjacent.js +var require_insert_adjacent = __commonJS({ + "node_modules/caniuse-lite/data/features/insert-adjacent.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B", "16": "5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "16": "F" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Element.insertAdjacentElement() & Element.insertAdjacentText()" }; + } +}); + +// node_modules/caniuse-lite/data/features/insertadjacenthtml.js +var require_insertadjacenthtml = __commonJS({ + "node_modules/caniuse-lite/data/features/insertadjacenthtml.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "16": "5B", "132": "J D E F" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a LC MC NC nB 3B OC oB", "16": "F KC" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "1": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Element.insertAdjacentHTML()" }; + } +}); + +// node_modules/caniuse-lite/data/features/internationalization.js +var require_internationalization = __commonJS({ + "node_modules/caniuse-lite/data/features/internationalization.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v w" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "Internationalization API" }; + } +}); + +// node_modules/caniuse-lite/data/features/intersectionobserver-v2.js +var require_intersectionobserver_v2 = __commonJS({ + "node_modules/caniuse-lite/data/features/intersectionobserver-v2.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "IntersectionObserver V2" }; + } +}); + +// node_modules/caniuse-lite/data/features/intersectionobserver.js +var require_intersectionobserver = __commonJS({ + "node_modules/caniuse-lite/data/features/intersectionobserver.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "M N O", "2": "C K L", "516": "G", "1025": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B", "194": "PB QB RB" }, D: { "1": "VB rB WB sB XB YB c", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "516": "OB PB QB RB SB TB UB", "1025": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB" }, F: { "1": "IB JB KB 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 F B C G M N O s t u v w x y z AB KC LC MC NC nB 3B OC oB", "516": "BB CB DB EB FB GB HB", "1025": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "1025": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "1025": "c" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "516": "rC sC" }, Q: { "1025": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "IntersectionObserver" }; + } +}); + +// node_modules/caniuse-lite/data/features/intl-pluralrules.js +var require_intl_pluralrules = __commonJS({ + "node_modules/caniuse-lite/data/features/intl-pluralrules.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N", "130": "O" }, C: { "1": "VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB 7B 8B" }, D: { "1": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB" }, E: { "1": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB oB" }, F: { "1": "NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB KC LC MC NC nB 3B OC oB" }, G: { "1": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "Intl.PluralRules API" }; + } +}); + +// node_modules/caniuse-lite/data/features/intrinsic-width.js +var require_intrinsic_width = __commonJS({ + "node_modules/caniuse-lite/data/features/intrinsic-width.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "1025": "f g h i j k l m n o p q b H", "1537": "P Q R S T U V W X Y Z a d e" }, C: { "2": "6B", "932": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB 7B 8B", "2308": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "I r J D E F A B C K L G M N O s t u", "545": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB", "1025": "f g h i j k l m n o p q b H uB 9B AC", "1537": "JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e" }, E: { "1": "pB 2B IC JC", "2": "I r J BC vB CC", "516": "B C K L G nB oB xB GC HC yB zB 0B 1B", "548": "F A FC wB", "676": "D E DC EC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "513": "7", "545": "0 1 2 3 4 5 G M N O s t u v w x y z", "1537": "6 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "pB 2B", "2": "vB PC 4B QC RC", "516": "gC hC iC yB zB 0B 1B", "548": "UC VC WC XC YC ZC aC bC cC dC eC fC", "676": "E SC TC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "545": "oC pC", "1025": "H" }, J: { "2": "D", "545": "A" }, K: { "2": "A B C nB 3B oB", "1025": "c" }, L: { "1025": "H" }, M: { "2308": "b" }, N: { "2": "A B" }, O: { "1537": "qC" }, P: { "545": "I", "1025": "1C 2C", "1537": "rC sC tC uC vC wB wC xC yC zC 0C pB" }, Q: { "1537": "xB" }, R: { "1537": "3C" }, S: { "932": "4C" } }, B: 5, C: "Intrinsic & Extrinsic Sizing" }; + } +}); + +// node_modules/caniuse-lite/data/features/jpeg2000.js +var require_jpeg2000 = __commonJS({ + "node_modules/caniuse-lite/data/features/jpeg2000.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "129": "r CC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "JPEG 2000 image format" }; + } +}); + +// node_modules/caniuse-lite/data/features/jpegxl.js +var require_jpegxl = __commonJS({ + "node_modules/caniuse-lite/data/features/jpegxl.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z", "578": "a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y 7B 8B", "322": "Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z AC", "194": "a d e f g h i j k l m n o p q b H uB 9B" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB KC LC MC NC nB 3B OC oB", "194": "lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "JPEG XL image format" }; + } +}); + +// node_modules/caniuse-lite/data/features/jpegxr.js +var require_jpegxr = __commonJS({ + "node_modules/caniuse-lite/data/features/jpegxr.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O", "2": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "1": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "JPEG XR image format" }; + } +}); + +// node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js +var require_js_regexp_lookbehind = __commonJS({ + "node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB 7B 8B" }, D: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "Lookbehind in JS regular expressions" }; + } +}); + +// node_modules/caniuse-lite/data/features/json.js +var require_json = __commonJS({ + "node_modules/caniuse-lite/data/features/json.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D 5B", "129": "E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "JSON parsing" }; + } +}); + +// node_modules/caniuse-lite/data/features/justify-content-space-evenly.js +var require_justify_content_space_evenly = __commonJS({ + "node_modules/caniuse-lite/data/features/justify-content-space-evenly.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G", "132": "M N O" }, C: { "1": "PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B" }, D: { "1": "WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB", "132": "UB VB rB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC", "132": "wB" }, F: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB KC LC MC NC nB 3B OC oB", "132": "HB IB JB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC", "132": "XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC", "132": "tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "132": "4C" } }, B: 5, C: "CSS justify-content: space-evenly" }; + } +}); + +// node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js +var require_kerning_pairs_ligatures = __commonJS({ + "node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "kC lC mC", "132": "qB I nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 7, C: "High-quality kerning pairs & ligatures" }; + } +}); + +// node_modules/caniuse-lite/data/features/keyboardevent-charcode.js +var require_keyboardevent_charcode = __commonJS({ + "node_modules/caniuse-lite/data/features/keyboardevent-charcode.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "16": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC nB 3B OC", "16": "C" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "c oB", "2": "A B nB 3B", "16": "C" }, L: { "1": "H" }, M: { "130": "b" }, N: { "130": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 7, C: "KeyboardEvent.charCode" }; + } +}); + +// node_modules/caniuse-lite/data/features/keyboardevent-code.js +var require_keyboardevent_code = __commonJS({ + "node_modules/caniuse-lite/data/features/keyboardevent-code.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB 7B 8B" }, D: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB", "194": "FB GB HB IB JB KB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "194": "2 3 4 5 6 7" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "194": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I", "194": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "194": "3C" }, S: { "1": "4C" } }, B: 5, C: "KeyboardEvent.code" }; + } +}); + +// node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js +var require_keyboardevent_getmodifierstate = __commonJS({ + "node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L 7B 8B" }, D: { "1": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B G M KC LC MC NC nB 3B OC", "16": "C" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c oB", "2": "A B nB 3B", "16": "C" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "KeyboardEvent.getModifierState()" }; + } +}); + +// node_modules/caniuse-lite/data/features/keyboardevent-key.js +var require_keyboardevent_key = __commonJS({ + "node_modules/caniuse-lite/data/features/keyboardevent-key.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "260": "F A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K L G M N O" }, C: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v 7B 8B", "132": "0 1 w x y z" }, D: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "0 1 2 3 4 5 6 7 8 9 F B G M N O s t u v w x y z AB KC LC MC NC nB 3B OC", "16": "C" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "1": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c oB", "2": "A B nB 3B", "16": "C" }, L: { "1": "H" }, M: { "1": "b" }, N: { "260": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "KeyboardEvent.key" }; + } +}); + +// node_modules/caniuse-lite/data/features/keyboardevent-location.js +var require_keyboardevent_location = __commonJS({ + "node_modules/caniuse-lite/data/features/keyboardevent-location.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L 7B 8B" }, D: { "1": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "0 1 2 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "J BC vB", "132": "I r CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC nB 3B OC", "16": "C", "132": "G M" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B", "132": "QC RC SC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "16": "kC lC", "132": "qB I mC nC 4B" }, J: { "132": "D A" }, K: { "1": "c oB", "2": "A B nB 3B", "16": "C" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "KeyboardEvent.location" }; + } +}); + +// node_modules/caniuse-lite/data/features/keyboardevent-which.js +var require_keyboardevent_which = __commonJS({ + "node_modules/caniuse-lite/data/features/keyboardevent-which.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "16": "r" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a LC MC NC nB 3B OC oB", "16": "F KC" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B", "16": "kC lC", "132": "oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "132": "H" }, M: { "132": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "2": "I", "132": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "132": "3C" }, S: { "1": "4C" } }, B: 7, C: "KeyboardEvent.which" }; + } +}); + +// node_modules/caniuse-lite/data/features/lazyload.js +var require_lazyload = __commonJS({ + "node_modules/caniuse-lite/data/features/lazyload.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "C K L G M N O", "2": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "1": "B", "2": "A" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Resource Hints: Lazyload" }; + } +}); + +// node_modules/caniuse-lite/data/features/let.js +var require_let = __commonJS({ + "node_modules/caniuse-lite/data/features/let.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "2052": "B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "194": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB 7B 8B" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O", "322": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB", "516": "EB FB GB HB IB JB KB LB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC", "1028": "A wB" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "322": "0 G M N O s t u v w x y z", "516": "1 2 3 4 5 6 7 8" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC", "1028": "WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "516": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "let" }; + } +}); + +// node_modules/caniuse-lite/data/features/link-icon-png.js +var require_link_icon_png = __commonJS({ + "node_modules/caniuse-lite/data/features/link-icon-png.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "130": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC" }, H: { "130": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D", "130": "A" }, K: { "1": "c", "130": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "130": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "PNG favicons" }; + } +}); + +// node_modules/caniuse-lite/data/features/link-icon-svg.js +var require_link_icon_svg = __commonJS({ + "node_modules/caniuse-lite/data/features/link-icon-svg.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P", "1537": "Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB 7B 8B", "260": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB", "513": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P", "1537": "Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "HB IB JB KB LB MB NB OB PB QB", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB RB SB TB UB VB WB XB YB c ZB aB KC LC MC NC nB 3B OC oB", "1537": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "130": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC" }, H: { "130": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D", "130": "A" }, K: { "2": "c", "130": "A B C nB 3B oB" }, L: { "1537": "H" }, M: { "2": "b" }, N: { "130": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC", "1537": "yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "1537": "3C" }, S: { "513": "4C" } }, B: 1, C: "SVG favicons" }; + } +}); + +// node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js +var require_link_rel_dns_prefetch = __commonJS({ + "node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E 5B", "132": "F" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB", "260": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "16": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "16": "qB I H kC lC mC nC 4B oC pC" }, J: { "16": "D A" }, K: { "16": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "16": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Resource Hints: dns-prefetch" }; + } +}); + +// node_modules/caniuse-lite/data/features/link-rel-modulepreload.js +var require_link_rel_modulepreload = __commonJS({ + "node_modules/caniuse-lite/data/features/link-rel-modulepreload.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "Resource Hints: modulepreload" }; + } +}); + +// node_modules/caniuse-lite/data/features/link-rel-preconnect.js +var require_link_rel_preconnect = __commonJS({ + "node_modules/caniuse-lite/data/features/link-rel-preconnect.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L", "260": "G M N O" }, C: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "129": "CB" }, D: { "1": "JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB" }, F: { "1": "6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "16": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Resource Hints: preconnect" }; + } +}); + +// node_modules/caniuse-lite/data/features/link-rel-prefetch.js +var require_link_rel_prefetch = __commonJS({ + "node_modules/caniuse-lite/data/features/link-rel-prefetch.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D" }, E: { "2": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB", "194": "L G xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC", "194": "fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "I H oC pC", "2": "qB kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Resource Hints: prefetch" }; + } +}); + +// node_modules/caniuse-lite/data/features/link-rel-preload.js +var require_link_rel_preload = __commonJS({ + "node_modules/caniuse-lite/data/features/link-rel-preload.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M", "1028": "N O" }, C: { "1": "U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB 7B 8B", "132": "TB", "578": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T" }, D: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB", "322": "B" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC", "322": "YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "Resource Hints: preload" }; + } +}); + +// node_modules/caniuse-lite/data/features/link-rel-prerender.js +var require_link_rel_prerender = __commonJS({ + "node_modules/caniuse-lite/data/features/link-rel-prerender.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Resource Hints: prerender" }; + } +}); + +// node_modules/caniuse-lite/data/features/loading-lazy-attr.js +var require_loading_lazy_attr = __commonJS({ + "node_modules/caniuse-lite/data/features/loading-lazy-attr.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB 7B 8B", "132": "jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB", "66": "jB kB" }, E: { "1": "JC", "2": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB", "322": "L G xB GC HC yB", "580": "zB 0B 1B pB 2B IC" }, F: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB KC LC MC NC nB 3B OC oB", "66": "XB YB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC", "322": "fC gC hC iC yB", "580": "zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "132": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "Lazy loading via attribute for images & iframes" }; + } +}); + +// node_modules/caniuse-lite/data/features/localecompare.js +var require_localecompare = __commonJS({ + "node_modules/caniuse-lite/data/features/localecompare.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "16": "5B", "132": "J D E F A" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "132": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "I r J D E F A B C K L G M N O s t u v w" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "132": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F B C KC LC MC NC nB 3B OC", "132": "oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "132": "E vB PC 4B QC RC SC TC UC VC" }, H: { "132": "jC" }, I: { "1": "H oC pC", "132": "qB I kC lC mC nC 4B" }, J: { "132": "D A" }, K: { "1": "c", "16": "A B C nB 3B", "132": "oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "132": "A" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "132": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "4": "4C" } }, B: 6, C: "localeCompare()" }; + } +}); + +// node_modules/caniuse-lite/data/features/magnetometer.js +var require_magnetometer = __commonJS({ + "node_modules/caniuse-lite/data/features/magnetometer.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB", "194": "VB rB WB sB XB YB c ZB aB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "194": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "Magnetometer" }; + } +}); + +// node_modules/caniuse-lite/data/features/matchesselector.js +var require_matchesselector = __commonJS({ + "node_modules/caniuse-lite/data/features/matchesselector.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "36": "F A B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "36": "C K L" }, C: { "1": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B", "36": "0 1 2 3 4 5 6 I r J D E F A B C K L G M N O s t u v w x y z 8B" }, D: { "1": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "36": "0 1 2 3 4 5 6 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "36": "r J D CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B KC LC MC NC nB", "36": "C G M N O s t 3B OC oB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB", "36": "PC 4B QC RC SC" }, H: { "2": "jC" }, I: { "1": "H", "2": "kC", "36": "qB I lC mC nC 4B oC pC" }, J: { "36": "D A" }, K: { "1": "c", "2": "A B", "36": "C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "36": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "36": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "matches() DOM method" }; + } +}); + +// node_modules/caniuse-lite/data/features/matchmedia.js +var require_matchmedia = __commonJS({ + "node_modules/caniuse-lite/data/features/matchmedia.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B C KC LC MC NC nB 3B OC" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "A", "2": "D" }, K: { "1": "c oB", "2": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "matchMedia" }; + } +}); + +// node_modules/caniuse-lite/data/features/mathml.js +var require_mathml = __commonJS({ + "node_modules/caniuse-lite/data/features/mathml.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "F A B 5B", "8": "J D E" }, B: { "2": "C K L G M N O", "8": "P Q R S T U V W X Y Z a d e f g h", "584": "i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "129": "6B qB 7B 8B" }, D: { "1": "x", "8": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h", "584": "i j k l m n o p q b H uB 9B AC" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "260": "I r J D E F BC vB CC DC EC FC" }, F: { "2": "F", "8": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB", "584": "S T U V W X Y Z a", "2052": "B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "8": "vB PC 4B" }, H: { "8": "jC" }, I: { "8": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "A", "8": "D" }, K: { "8": "A B C c nB 3B oB" }, L: { "8": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "8": "qC" }, P: { "8": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "8": "xB" }, R: { "8": "3C" }, S: { "1": "4C" } }, B: 2, C: "MathML" }; + } +}); + +// node_modules/caniuse-lite/data/features/maxlength.js +var require_maxlength = __commonJS({ + "node_modules/caniuse-lite/data/features/maxlength.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "16": "5B", "900": "J D E F" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "1025": "C K L G M N O" }, C: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "900": "6B qB 7B 8B", "1025": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "r BC", "900": "I vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F", "132": "B C KC LC MC NC nB 3B OC oB" }, G: { "1": "PC 4B QC RC SC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB", "2052": "E TC" }, H: { "132": "jC" }, I: { "1": "qB I mC nC 4B oC pC", "16": "kC lC", "4097": "H" }, J: { "1": "D A" }, K: { "132": "A B C nB 3B oB", "4097": "c" }, L: { "4097": "H" }, M: { "4097": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "4097": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1025": "4C" } }, B: 1, C: "maxlength attribute for input and textarea elements" }; + } +}); + +// node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js +var require_mdn_css_unicode_bidi_isolate_override = __commonJS({ + "node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js"(exports2, module2) { + module2.exports = { A: { D: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB" }, L: { "1": "H" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M 7B 8B", "33": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB" }, M: { "1": "b" }, A: { "2": "J D E F A B 5B" }, F: { "1": "8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, K: { "1": "c", "2": "A B C nB 3B oB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC", "2": "I r J BC vB CC DC JC", "33": "D E F A EC FC wB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC", "33": "E SC TC UC VC WC XC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" } }, B: 6, C: "isolate-override from unicode-bidi" }; + } +}); + +// node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js +var require_mdn_css_unicode_bidi_isolate = __commonJS({ + "node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js"(exports2, module2) { + module2.exports = { A: { D: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G", "33": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB" }, L: { "1": "H" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F 7B 8B", "33": "0 1 2 3 4 5 6 7 8 9 A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB" }, M: { "1": "b" }, A: { "2": "J D E F A B 5B" }, F: { "1": "8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 G M N O s t u v w x y z" }, K: { "1": "c", "2": "A B C nB 3B oB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC", "2": "I r BC vB CC JC", "33": "J D E F A DC EC FC wB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "33": "E RC SC TC UC VC WC XC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" } }, B: 6, C: "isolate from unicode-bidi" }; + } +}); + +// node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js +var require_mdn_css_unicode_bidi_plaintext = __commonJS({ + "node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js"(exports2, module2) { + module2.exports = { A: { D: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB" }, L: { "1": "H" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F 7B 8B", "33": "0 1 2 3 4 5 6 7 8 9 A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB" }, M: { "1": "b" }, A: { "2": "J D E F A B 5B" }, F: { "1": "8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, K: { "1": "c", "2": "A B C nB 3B oB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC", "2": "I r BC vB CC JC", "33": "J D E F A DC EC FC wB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "33": "E RC SC TC UC VC WC XC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" } }, B: 6, C: "plaintext from unicode-bidi" }; + } +}); + +// node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js +var require_mdn_text_decoration_color = __commonJS({ + "node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js"(exports2, module2) { + module2.exports = { A: { D: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB" }, L: { "1": "H" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B", "33": "0 1 2 3 4 5 6 7 8 J D E F A B C K L G M N O s t u v w x y z" }, M: { "1": "b" }, A: { "2": "J D E F A B 5B" }, F: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB KC LC MC NC nB 3B OC oB" }, K: { "1": "c", "2": "A B C nB 3B oB" }, E: { "1": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC", "2": "I r J D BC vB CC DC EC JC", "33": "E F A B C FC wB nB" }, G: { "1": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC", "33": "E TC UC VC WC XC YC ZC aC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" } }, B: 6, C: "text-decoration-color property" }; + } +}); + +// node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js +var require_mdn_text_decoration_line = __commonJS({ + "node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js"(exports2, module2) { + module2.exports = { A: { D: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB" }, L: { "1": "H" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B", "33": "0 1 2 3 4 5 6 7 8 J D E F A B C K L G M N O s t u v w x y z" }, M: { "1": "b" }, A: { "2": "J D E F A B 5B" }, F: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB KC LC MC NC nB 3B OC oB" }, K: { "1": "c", "2": "A B C nB 3B oB" }, E: { "1": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC", "2": "I r J D BC vB CC DC EC JC", "33": "E F A B C FC wB nB" }, G: { "1": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC", "33": "E TC UC VC WC XC YC ZC aC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" } }, B: 6, C: "text-decoration-line property" }; + } +}); + +// node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js +var require_mdn_text_decoration_shorthand = __commonJS({ + "node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js"(exports2, module2) { + module2.exports = { A: { D: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB" }, L: { "1": "H" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B" }, M: { "1": "b" }, A: { "2": "J D E F A B 5B" }, F: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB KC LC MC NC nB 3B OC oB" }, K: { "1": "c", "2": "A B C nB 3B oB" }, E: { "2": "I r J D BC vB CC DC EC JC", "33": "E F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC" }, G: { "2": "vB PC 4B QC RC SC", "33": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" } }, B: 6, C: "text-decoration shorthand property" }; + } +}); + +// node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js +var require_mdn_text_decoration_style = __commonJS({ + "node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js"(exports2, module2) { + module2.exports = { A: { D: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB" }, L: { "1": "H" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B", "33": "0 1 2 3 4 5 6 7 8 J D E F A B C K L G M N O s t u v w x y z" }, M: { "1": "b" }, A: { "2": "J D E F A B 5B" }, F: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB KC LC MC NC nB 3B OC oB" }, K: { "1": "c", "2": "A B C nB 3B oB" }, E: { "1": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC", "2": "I r J D BC vB CC DC EC JC", "33": "E F A B C FC wB nB" }, G: { "1": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC", "33": "E TC UC VC WC XC YC ZC aC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" } }, B: 6, C: "text-decoration-style property" }; + } +}); + +// node_modules/caniuse-lite/data/features/media-fragments.js +var require_media_fragments = __commonJS({ + "node_modules/caniuse-lite/data/features/media-fragments.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "132": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "132": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "I r J D E F A B C K L G M N", "132": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r BC vB CC", "132": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "132": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "vB PC 4B QC RC SC", "132": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "132": "H oC pC" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "132": "c" }, L: { "132": "H" }, M: { "132": "b" }, N: { "132": "A B" }, O: { "132": "qC" }, P: { "2": "I rC", "132": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "132": "xB" }, R: { "132": "3C" }, S: { "132": "4C" } }, B: 2, C: "Media Fragments" }; + } +}); + +// node_modules/caniuse-lite/data/features/mediacapture-fromelement.js +var require_mediacapture_fromelement = __commonJS({ + "node_modules/caniuse-lite/data/features/mediacapture-fromelement.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB 7B 8B", "260": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "324": "OB PB QB RB SB TB UB VB rB WB sB" }, E: { "2": "I r J D E F A BC vB CC DC EC FC wB", "132": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "324": "9 AB BB CB DB EB FB GB HB IB JB KB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "260": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "132": "rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "260": "4C" } }, B: 5, C: "Media Capture from DOM Elements API" }; + } +}); + +// node_modules/caniuse-lite/data/features/mediarecorder.js +var require_mediarecorder = __commonJS({ + "node_modules/caniuse-lite/data/features/mediarecorder.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB", "194": "KB LB" }, E: { "1": "G GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB", "322": "K L oB xB" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "194": "7 8" }, G: { "1": "hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC", "578": "aC bC cC dC eC fC gC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "MediaRecorder API" }; + } +}); + +// node_modules/caniuse-lite/data/features/mediasource.js +var require_mediasource = __commonJS({ + "node_modules/caniuse-lite/data/features/mediasource.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "132": "B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x 7B 8B", "66": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB" }, D: { "1": "4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M", "33": "0 1 2 3 w x y z", "66": "N O s t u v" }, E: { "1": "E F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC", "260": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H pC", "2": "qB I kC lC mC nC 4B oC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "Media Source Extensions" }; + } +}); + +// node_modules/caniuse-lite/data/features/menu.js +var require_menu = __commonJS({ + "node_modules/caniuse-lite/data/features/menu.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB I r J D 7B 8B", "132": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T", "450": "U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "66": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 F B C G M N O s t u v w x y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "66": "8 9 AB BB CB DB EB FB GB HB IB JB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "450": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Context menu item (menuitem element)" }; + } +}); + +// node_modules/caniuse-lite/data/features/meta-theme-color.js +var require_meta_theme_color = __commonJS({ + "node_modules/caniuse-lite/data/features/meta-theme-color.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB", "132": "hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "258": "CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB" }, E: { "1": "G HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB GC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "513": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "16": "rC" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 1, C: "theme-color Meta Tag" }; + } +}); + +// node_modules/caniuse-lite/data/features/meter.js +var require_meter = __commonJS({ + "node_modules/caniuse-lite/data/features/meter.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "2": "F KC LC MC NC" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "meter element" }; + } +}); + +// node_modules/caniuse-lite/data/features/midi.js +var require_midi = __commonJS({ + "node_modules/caniuse-lite/data/features/midi.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Web MIDI API" }; + } +}); + +// node_modules/caniuse-lite/data/features/minmaxwh.js +var require_minmaxwh = __commonJS({ + "node_modules/caniuse-lite/data/features/minmaxwh.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "8": "J 5B", "129": "D", "257": "E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS min/max-width/height" }; + } +}); + +// node_modules/caniuse-lite/data/features/mp3.js +var require_mp3 = __commonJS({ + "node_modules/caniuse-lite/data/features/mp3.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "132": "I r J D E F A B C K L G M N O s t u 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "2": "kC lC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "MP3 audio format" }; + } +}); + +// node_modules/caniuse-lite/data/features/mpeg-dash.js +var require_mpeg_dash = __commonJS({ + "node_modules/caniuse-lite/data/features/mpeg-dash.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O", "2": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "386": "u v" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "Dynamic Adaptive Streaming over HTTP (MPEG-DASH)" }; + } +}); + +// node_modules/caniuse-lite/data/features/mpeg4.js +var require_mpeg4 = __commonJS({ + "node_modules/caniuse-lite/data/features/mpeg4.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t 7B 8B", "4": "0 1 2 3 4 5 6 7 u v w x y z" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H oC pC", "4": "qB I kC lC nC 4B", "132": "mC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "260": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "MPEG-4/H.264 video format" }; + } +}); + +// node_modules/caniuse-lite/data/features/multibackgrounds.js +var require_multibackgrounds = __commonJS({ + "node_modules/caniuse-lite/data/features/multibackgrounds.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 8B", "2": "6B qB 7B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS3 Multiple backgrounds" }; + } +}); + +// node_modules/caniuse-lite/data/features/multicolumn.js +var require_multicolumn = __commonJS({ + "node_modules/caniuse-lite/data/features/multicolumn.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O", "516": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "132": "PB QB RB SB TB UB VB rB WB sB XB YB c", "164": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B", "516": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "1028": "d e f g h i j k l m n o p q b H uB" }, D: { "420": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB", "516": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "132": "F FC", "164": "D E EC", "420": "I r J BC vB CC DC" }, F: { "1": "C nB 3B OC oB", "2": "F B KC LC MC NC", "420": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z", "516": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "132": "UC VC", "164": "E SC TC", "420": "vB PC 4B QC RC" }, H: { "1": "jC" }, I: { "420": "qB I kC lC mC nC 4B oC pC", "516": "H" }, J: { "420": "D A" }, K: { "1": "C nB 3B oB", "2": "A B", "516": "c" }, L: { "516": "H" }, M: { "1028": "b" }, N: { "1": "A B" }, O: { "516": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "420": "I" }, Q: { "516": "xB" }, R: { "516": "3C" }, S: { "164": "4C" } }, B: 4, C: "CSS3 Multiple column layout" }; + } +}); + +// node_modules/caniuse-lite/data/features/mutation-events.js +var require_mutation_events = __commonJS({ + "node_modules/caniuse-lite/data/features/mutation-events.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "260": "F A B" }, B: { "132": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K L G M N O" }, C: { "2": "6B qB I r 7B 8B", "260": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "16": "I r J D E F A B C K L", "132": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "16": "BC vB", "132": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "C OC oB", "2": "F KC LC MC NC", "16": "B nB 3B", "132": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "16": "vB PC", "132": "E 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "16": "kC lC", "132": "qB I H mC nC 4B oC pC" }, J: { "132": "D A" }, K: { "1": "C oB", "2": "A", "16": "B nB 3B", "132": "c" }, L: { "132": "H" }, M: { "260": "b" }, N: { "260": "A B" }, O: { "132": "qC" }, P: { "132": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "132": "xB" }, R: { "132": "3C" }, S: { "260": "4C" } }, B: 5, C: "Mutation events" }; + } +}); + +// node_modules/caniuse-lite/data/features/mutationobserver.js +var require_mutationobserver = __commonJS({ + "node_modules/caniuse-lite/data/features/mutationobserver.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E 5B", "8": "F A" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N", "33": "O s t u v w x y z" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "33": "J" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "33": "RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB kC lC mC", "8": "I nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "8": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Mutation Observer" }; + } +}); + +// node_modules/caniuse-lite/data/features/namevalue-storage.js +var require_namevalue_storage = __commonJS({ + "node_modules/caniuse-lite/data/features/namevalue-storage.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "E F A B", "2": "5B", "8": "J D" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "4": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Web Storage - name/value pairs" }; + } +}); + +// node_modules/caniuse-lite/data/features/native-filesystem-api.js +var require_native_filesystem_api = __commonJS({ + "node_modules/caniuse-lite/data/features/native-filesystem-api.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "194": "P Q R S T U", "260": "V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB", "194": "iB jB kB lB mB P Q R S T U", "260": "V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC", "516": "yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB KC LC MC NC nB 3B OC oB", "194": "XB YB c ZB aB bB cB dB eB fB", "260": "gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC", "516": "yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "File System Access API" }; + } +}); + +// node_modules/caniuse-lite/data/features/nav-timing.js +var require_nav_timing = __commonJS({ + "node_modules/caniuse-lite/data/features/nav-timing.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r", "33": "J D E F A B C" }, E: { "1": "E F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "I H nC 4B oC pC", "2": "qB kC lC mC" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "Navigation Timing API" }; + } +}); + +// node_modules/caniuse-lite/data/features/netinfo.js +var require_netinfo = __commonJS({ + "node_modules/caniuse-lite/data/features/netinfo.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "1028": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB", "1028": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB KC LC MC NC nB 3B OC oB", "1028": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "kC oC pC", "132": "qB I lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "132": "I", "516": "rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "260": "4C" } }, B: 7, C: "Network Information API" }; + } +}); + +// node_modules/caniuse-lite/data/features/notifications.js +var require_notifications = __commonJS({ + "node_modules/caniuse-lite/data/features/notifications.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I", "36": "r J D E F A B C K L G M N O s t u" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "36": "H oC pC" }, J: { "1": "A", "2": "D" }, K: { "2": "A B C nB 3B oB", "36": "c" }, L: { "513": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "36": "I", "258": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "258": "3C" }, S: { "1": "4C" } }, B: 1, C: "Web Notifications" }; + } +}); + +// node_modules/caniuse-lite/data/features/object-entries.js +var require_object_entries = __commonJS({ + "node_modules/caniuse-lite/data/features/object-entries.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K" }, C: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB 7B 8B" }, D: { "1": "RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D", "16": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Object.entries" }; + } +}); + +// node_modules/caniuse-lite/data/features/object-fit.js +var require_object_fit = __commonJS({ + "node_modules/caniuse-lite/data/features/object-fit.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G", "260": "M N O" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC", "132": "E F EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F G M N O KC LC MC", "33": "B C NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC", "132": "E TC UC VC" }, H: { "33": "jC" }, I: { "1": "H pC", "2": "qB I kC lC mC nC 4B oC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A", "33": "B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS3 object-fit/object-position" }; + } +}); + +// node_modules/caniuse-lite/data/features/object-observe.js +var require_object_observe = __commonJS({ + "node_modules/caniuse-lite/data/features/object-observe.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB", "2": "0 1 2 3 4 5 6 7 8 I r J D E F A B C K L G M N O s t u v w x y z NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z", "2": "F B C G M N O s t u v AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "I", "2": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Object.observe data binding" }; + } +}); + +// node_modules/caniuse-lite/data/features/object-values.js +var require_object_values = __commonJS({ + "node_modules/caniuse-lite/data/features/object-values.js"(exports2, module2) { + module2.exports = { A: { A: { "8": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K" }, C: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "8": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB 7B 8B" }, D: { "1": "RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "8": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "8": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "8": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "8": "jC" }, I: { "1": "H", "8": "qB I kC lC mC nC 4B oC pC" }, J: { "8": "D A" }, K: { "1": "c", "8": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "8": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "8": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Object.values method" }; + } +}); + +// node_modules/caniuse-lite/data/features/objectrtc.js +var require_objectrtc = __commonJS({ + "node_modules/caniuse-lite/data/features/objectrtc.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O", "2": "C P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D", "130": "A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "Object RTC (ORTC) API for WebRTC" }; + } +}); + +// node_modules/caniuse-lite/data/features/offline-apps.js +var require_offline_apps = __commonJS({ + "node_modules/caniuse-lite/data/features/offline-apps.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "F 5B", "8": "J D E" }, B: { "1": "C K L G M N O P Q R S T", "2": "U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S 7B 8B", "2": "T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "4": "qB", "8": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T", "2": "U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB NC nB 3B OC oB", "2": "F hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC", "8": "LC MC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I kC lC mC nC 4B oC pC", "2": "H" }, J: { "1": "D A" }, K: { "1": "B C nB 3B oB", "2": "A c" }, L: { "2": "H" }, M: { "2": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "2": "3C" }, S: { "1": "4C" } }, B: 7, C: "Offline web applications" }; + } +}); + +// node_modules/caniuse-lite/data/features/offscreencanvas.js +var require_offscreencanvas = __commonJS({ + "node_modules/caniuse-lite/data/features/offscreencanvas.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB 7B 8B", "194": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p" }, D: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB", "322": "VB rB WB sB XB YB c ZB aB bB cB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB KC LC MC NC nB 3B OC oB", "322": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "194": "4C" } }, B: 1, C: "OffscreenCanvas" }; + } +}); + +// node_modules/caniuse-lite/data/features/ogg-vorbis.js +var require_ogg_vorbis = __commonJS({ + "node_modules/caniuse-lite/data/features/ogg-vorbis.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB", "132": "G GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "A", "2": "D" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Ogg Vorbis audio format" }; + } +}); + +// node_modules/caniuse-lite/data/features/ogv.js +var require_ogv = __commonJS({ + "node_modules/caniuse-lite/data/features/ogv.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "8": "F A B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "8": "C K L G M" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "1": "b" }, N: { "8": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "2": "3C" }, S: { "1": "4C" } }, B: 6, C: "Ogg/Theora video format" }; + } +}); + +// node_modules/caniuse-lite/data/features/ol-reversed.js +var require_ol_reversed = __commonJS({ + "node_modules/caniuse-lite/data/features/ol-reversed.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G", "16": "M N O s" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "16": "J" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC nB 3B OC", "16": "C" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Reversed attribute of ordered lists" }; + } +}); + +// node_modules/caniuse-lite/data/features/once-event-listener.js +var require_once_event_listener = __commonJS({ + "node_modules/caniuse-lite/data/features/once-event-listener.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G" }, C: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB 7B 8B" }, D: { "1": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: '"once" event listener option' }; + } +}); + +// node_modules/caniuse-lite/data/features/online-status.js +var require_online_status = __commonJS({ + "node_modules/caniuse-lite/data/features/online-status.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D 5B", "260": "E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB", "516": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC", "4": "oB" }, G: { "1": "E 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "A", "132": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Online/offline status" }; + } +}); + +// node_modules/caniuse-lite/data/features/opus.js +var require_opus = __commonJS({ + "node_modules/caniuse-lite/data/features/opus.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L 7B 8B" }, D: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "2": "I r J D E F A BC vB CC DC EC FC wB", "132": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC", "132": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Opus audio format" }; + } +}); + +// node_modules/caniuse-lite/data/features/orientation-sensor.js +var require_orientation_sensor = __commonJS({ + "node_modules/caniuse-lite/data/features/orientation-sensor.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB", "194": "VB rB WB sB XB YB c ZB aB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "Orientation Sensor" }; + } +}); + +// node_modules/caniuse-lite/data/features/outline.js +var require_outline = __commonJS({ + "node_modules/caniuse-lite/data/features/outline.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D 5B", "260": "E", "388": "F A B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "388": "C K L" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC", "129": "oB", "260": "F B KC LC MC NC nB 3B" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "C c oB", "260": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "388": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS outline properties" }; + } +}); + +// node_modules/caniuse-lite/data/features/pad-start-end.js +var require_pad_start_end = __commonJS({ + "node_modules/caniuse-lite/data/features/pad-start-end.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L" }, C: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 7B 8B" }, D: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z 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 G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "String.prototype.padStart(), String.prototype.padEnd()" }; + } +}); + +// node_modules/caniuse-lite/data/features/page-transition-events.js +var require_page_transition_events = __commonJS({ + "node_modules/caniuse-lite/data/features/page-transition-events.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "PageTransitionEvent" }; + } +}); + +// node_modules/caniuse-lite/data/features/pagevisibility.js +var require_pagevisibility = __commonJS({ + "node_modules/caniuse-lite/data/features/pagevisibility.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F 7B 8B", "33": "A B C K L G M N" }, D: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K", "33": "0 1 2 3 4 5 L G M N O s t u v w x y z" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B C KC LC MC NC nB 3B OC", "33": "G M N O s" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B", "33": "oC pC" }, J: { "1": "A", "2": "D" }, K: { "1": "c oB", "2": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "33": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "Page Visibility" }; + } +}); + +// node_modules/caniuse-lite/data/features/passive-event-listener.js +var require_passive_event_listener = __commonJS({ + "node_modules/caniuse-lite/data/features/passive-event-listener.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 7B 8B" }, D: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "Passive event listeners" }; + } +}); + +// node_modules/caniuse-lite/data/features/passwordrules.js +var require_passwordrules = __commonJS({ + "node_modules/caniuse-lite/data/features/passwordrules.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "16": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b 7B 8B", "16": "H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "16": "uB 9B AC" }, E: { "1": "C K oB", "2": "I r J D E F A B BC vB CC DC EC FC wB nB", "16": "L G xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB KC LC MC NC nB 3B OC oB", "16": "QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "16": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "16": "H" }, J: { "2": "D", "16": "A" }, K: { "2": "A B C nB 3B oB", "16": "c" }, L: { "16": "H" }, M: { "16": "b" }, N: { "2": "A", "16": "B" }, O: { "16": "qC" }, P: { "2": "I rC sC", "16": "tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "16": "xB" }, R: { "16": "3C" }, S: { "2": "4C" } }, B: 1, C: "Password Rules" }; + } +}); + +// node_modules/caniuse-lite/data/features/path2d.js +var require_path2d = __commonJS({ + "node_modules/caniuse-lite/data/features/path2d.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K", "132": "L G M N O" }, C: { "1": "LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "132": "4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB" }, D: { "1": "cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 I r J D E F A B C K L G M N O s t u v w x y z", "132": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC", "132": "E F EC" }, F: { "1": "SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v KC LC MC NC nB 3B OC oB", "132": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC", "16": "E", "132": "TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "wB wC xC yC zC 0C pB 1C 2C", "132": "I rC sC tC uC vC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Path2D" }; + } +}); + +// node_modules/caniuse-lite/data/features/payment-request.js +var require_payment_request = __commonJS({ + "node_modules/caniuse-lite/data/features/payment-request.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K", "322": "L", "8196": "G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB 7B 8B", "4162": "SB TB UB VB rB WB sB XB YB c ZB", "16452": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB", "194": "QB RB SB TB UB VB", "1090": "rB WB", "8196": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB" }, E: { "1": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC", "514": "A B wB", "8196": "C nB" }, F: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB KC LC MC NC nB 3B OC oB", "194": "DB EB FB GB HB IB JB KB", "8196": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB" }, G: { "1": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC", "514": "WC XC YC", "8196": "ZC aC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "2049": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "xC yC zC 0C pB 1C 2C", "2": "I", "8196": "rC sC tC uC vC wB wC" }, Q: { "8196": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 2, C: "Payment Request API" }; + } +}); + +// node_modules/caniuse-lite/data/features/pdf-viewer.js +var require_pdf_viewer = __commonJS({ + "node_modules/caniuse-lite/data/features/pdf-viewer.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "132": "B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "16": "C K L" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC nB 3B OC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "16": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "16": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "Built-in PDF viewer" }; + } +}); + +// node_modules/caniuse-lite/data/features/permissions-api.js +var require_permissions_api = __commonJS({ + "node_modules/caniuse-lite/data/features/permissions-api.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB 7B 8B" }, D: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB" }, E: { "1": "pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "1": "3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Permissions API" }; + } +}); + +// node_modules/caniuse-lite/data/features/permissions-policy.js +var require_permissions_policy = __commonJS({ + "node_modules/caniuse-lite/data/features/permissions-policy.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "258": "P Q R S T U", "322": "V W", "388": "X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB 7B 8B", "258": "iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB", "258": "WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U", "322": "V W", "388": "X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B BC vB CC DC EC FC wB", "258": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KC LC MC NC nB 3B OC oB", "258": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB", "322": "gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC", "258": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "258": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "258": "c" }, L: { "388": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC", "258": "uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "258": "xB" }, R: { "388": "3C" }, S: { "2": "4C" } }, B: 5, C: "Permissions Policy" }; + } +}); + +// node_modules/caniuse-lite/data/features/picture-in-picture.js +var require_picture_in_picture = __commonJS({ + "node_modules/caniuse-lite/data/features/picture-in-picture.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB 7B 8B", "132": "gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "1090": "bB", "1412": "fB", "1668": "cB dB eB" }, D: { "1": "eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB", "2114": "dB" }, E: { "1": "L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC", "4100": "A B C K wB nB oB" }, F: { "1": "hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "8196": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB" }, G: { "1": "gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC", "4100": "UC VC WC XC YC ZC aC bC cC dC eC fC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "16388": "H" }, M: { "16388": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "Picture-in-Picture" }; + } +}); + +// node_modules/caniuse-lite/data/features/picture.js +var require_picture = __commonJS({ + "node_modules/caniuse-lite/data/features/picture.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C" }, C: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "578": "7 8 9 AB" }, D: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z", "194": "AB" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w KC LC MC NC nB 3B OC oB", "322": "x" }, G: { "1": "VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Picture element" }; + } +}); + +// node_modules/caniuse-lite/data/features/ping.js +var require_ping = __commonJS({ + "node_modules/caniuse-lite/data/features/ping.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M" }, C: { "2": "6B", "194": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "194": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "194": "4C" } }, B: 1, C: "Ping attribute" }; + } +}); + +// node_modules/caniuse-lite/data/features/png-alpha.js +var require_png_alpha = __commonJS({ + "node_modules/caniuse-lite/data/features/png-alpha.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "D E F A B", "2": "5B", "8": "J" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "PNG alpha transparency" }; + } +}); + +// node_modules/caniuse-lite/data/features/pointer-events.js +var require_pointer_events = __commonJS({ + "node_modules/caniuse-lite/data/features/pointer-events.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 8B", "2": "6B qB 7B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 7, C: "CSS pointer-events (for HTML)" }; + } +}); + +// node_modules/caniuse-lite/data/features/pointer.js +var require_pointer = __commonJS({ + "node_modules/caniuse-lite/data/features/pointer.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F 5B", "164": "A" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B", "8": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB", "328": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB" }, D: { "1": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u", "8": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB", "584": "PB QB RB" }, E: { "1": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC", "8": "D E F A B C DC EC FC wB nB", "1096": "oB" }, F: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "8": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB", "584": "CB DB EB" }, G: { "1": "dC eC fC gC hC iC yB zB 0B 1B pB 2B", "8": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC", "6148": "cC" }, H: { "2": "jC" }, I: { "1": "H", "8": "qB I kC lC mC nC 4B oC pC" }, J: { "8": "D A" }, K: { "1": "c", "2": "A", "8": "B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "36": "A" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "rC", "8": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "328": "4C" } }, B: 2, C: "Pointer events" }; + } +}); + +// node_modules/caniuse-lite/data/features/pointerlock.js +var require_pointerlock = __commonJS({ + "node_modules/caniuse-lite/data/features/pointerlock.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C" }, C: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K 7B 8B", "33": "0 1 2 3 4 5 6 7 8 9 L G M N O s t u v w x y z AB BB CB DB" }, D: { "1": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G", "33": "0 1 2 3 4 5 6 7 8 9 v w x y z", "66": "M N O s t u" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "G M N O s t u v w" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "Pointer Lock API" }; + } +}); + +// node_modules/caniuse-lite/data/features/portals.js +var require_portals = __commonJS({ + "node_modules/caniuse-lite/data/features/portals.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T", "322": "Z a d e f g h i j k l m n o p q b H", "450": "U V W X Y" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB", "194": "jB kB lB mB P Q R S T", "322": "V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "450": "U" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB KC LC MC NC nB 3B OC oB", "194": "XB YB c ZB aB bB cB dB eB fB gB", "322": "hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "450": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Portals" }; + } +}); + +// node_modules/caniuse-lite/data/features/prefers-color-scheme.js +var require_prefers_color_scheme = __commonJS({ + "node_modules/caniuse-lite/data/features/prefers-color-scheme.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB 7B 8B" }, D: { "1": "kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB" }, E: { "1": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB" }, F: { "1": "XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB KC LC MC NC nB 3B OC oB" }, G: { "1": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "prefers-color-scheme media query" }; + } +}); + +// node_modules/caniuse-lite/data/features/prefers-reduced-motion.js +var require_prefers_reduced_motion = __commonJS({ + "node_modules/caniuse-lite/data/features/prefers-reduced-motion.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB 7B 8B" }, D: { "1": "iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "prefers-reduced-motion media query" }; + } +}); + +// node_modules/caniuse-lite/data/features/progress.js +var require_progress = __commonJS({ + "node_modules/caniuse-lite/data/features/progress.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "2": "F KC LC MC NC" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC", "132": "SC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "progress element" }; + } +}); + +// node_modules/caniuse-lite/data/features/promise-finally.js +var require_promise_finally = __commonJS({ + "node_modules/caniuse-lite/data/features/promise-finally.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N" }, C: { "1": "VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB 7B 8B" }, D: { "1": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB" }, F: { "1": "NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB KC LC MC NC nB 3B OC oB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "Promise.prototype.finally" }; + } +}); + +// node_modules/caniuse-lite/data/features/promises.js +var require_promises = __commonJS({ + "node_modules/caniuse-lite/data/features/promises.js"(exports2, module2) { + module2.exports = { A: { A: { "8": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "4": "0 1", "8": "6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "4": "5", "8": "0 1 2 3 4 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "I r J D BC vB CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "4": "s", "8": "F B C G M N O KC LC MC NC nB 3B OC oB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "8": "vB PC 4B QC RC SC" }, H: { "8": "jC" }, I: { "1": "H pC", "8": "qB I kC lC mC nC 4B oC" }, J: { "8": "D A" }, K: { "1": "c", "8": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "8": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Promises" }; + } +}); + +// node_modules/caniuse-lite/data/features/proximity.js +var require_proximity = __commonJS({ + "node_modules/caniuse-lite/data/features/proximity.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "1": "4C" } }, B: 4, C: "Proximity API" }; + } +}); + +// node_modules/caniuse-lite/data/features/proxy.js +var require_proxy = __commonJS({ + "node_modules/caniuse-lite/data/features/proxy.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N 7B 8B" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O BB CB DB EB FB GB HB IB JB KB LB", "66": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 F B C y z KC LC MC NC nB 3B OC oB", "66": "G M N O s t u v w x" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Proxy object" }; + } +}); + +// node_modules/caniuse-lite/data/features/publickeypinning.js +var require_publickeypinning = __commonJS({ + "node_modules/caniuse-lite/data/features/publickeypinning.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB", "2": "0 1 2 3 4 5 6 7 6B qB I r J D E F A B C K L G M N O s t u v w x y z gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB", "2": "F B C G M N O s aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "4": "w", "16": "t u v x" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "I rC sC tC uC vC wB", "2": "wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "1": "4C" } }, B: 6, C: "HTTP Public Key Pinning" }; + } +}); + +// node_modules/caniuse-lite/data/features/push-api.js +var require_push_api = __commonJS({ + "node_modules/caniuse-lite/data/features/push-api.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "N O", "2": "C K L G M", "257": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB 7B 8B", "257": "HB JB KB LB MB NB OB QB RB SB TB UB VB rB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "1281": "IB PB WB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB", "257": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "388": "HB IB JB KB LB MB" }, E: { "2": "I r J D E F BC vB CC DC EC", "514": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB", "4612": "2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "16": "AB BB CB DB EB", "257": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "2": "3C" }, S: { "257": "4C" } }, B: 5, C: "Push API" }; + } +}); + +// node_modules/caniuse-lite/data/features/queryselector.js +var require_queryselector = __commonJS({ + "node_modules/caniuse-lite/data/features/queryselector.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "5B", "8": "J D", "132": "E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "8": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a LC MC NC nB 3B OC oB", "8": "F KC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "querySelector/querySelectorAll" }; + } +}); + +// node_modules/caniuse-lite/data/features/readonly-attr.js +var require_readonly_attr = __commonJS({ + "node_modules/caniuse-lite/data/features/readonly-attr.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B", "16": "5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "16": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L G M N O s t u v w x y" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F KC", "132": "B C LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B QC RC" }, H: { "1": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "c", "132": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "257": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "readonly attribute of input and textarea elements" }; + } +}); + +// node_modules/caniuse-lite/data/features/referrer-policy.js +var require_referrer_policy = __commonJS({ + "node_modules/caniuse-lite/data/features/referrer-policy.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "132": "B" }, B: { "1": "P Q R S", "132": "C K L G M N O", "513": "T U V W X Y Z a d e f g h i j k l m n o p q b H" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V", "2": "0 1 2 3 4 5 6 7 8 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "513": "W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T", "2": "I r J D E F A B C K L G M N O s t", "260": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB", "513": "U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "C nB oB", "2": "I r J D BC vB CC DC", "132": "E F A B EC FC wB", "1025": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB", "2": "F B C KC LC MC NC nB 3B OC oB", "513": "hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "aC bC cC dC", "2": "vB PC 4B QC RC SC", "132": "E TC UC VC WC XC YC ZC", "1025": "eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "513": "H" }, M: { "513": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "513": "3C" }, S: { "1": "4C" } }, B: 4, C: "Referrer Policy" }; + } +}); + +// node_modules/caniuse-lite/data/features/registerprotocolhandler.js +var require_registerprotocolhandler = __commonJS({ + "node_modules/caniuse-lite/data/features/registerprotocolhandler.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "129": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B" }, D: { "2": "I r J D E F A B C", "129": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B KC LC MC NC nB 3B", "129": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D", "129": "A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 1, C: "Custom protocol handling" }; + } +}); + +// node_modules/caniuse-lite/data/features/rel-noopener.js +var require_rel_noopener = __commonJS({ + "node_modules/caniuse-lite/data/features/rel-noopener.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "rel=noopener" }; + } +}); + +// node_modules/caniuse-lite/data/features/rel-noreferrer.js +var require_rel_noreferrer = __commonJS({ + "node_modules/caniuse-lite/data/features/rel-noreferrer.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "132": "B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "16": "C" }, C: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L G" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: 'Link type "noreferrer"' }; + } +}); + +// node_modules/caniuse-lite/data/features/rellist.js +var require_rellist = __commonJS({ + "node_modules/caniuse-lite/data/features/rellist.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M", "132": "N" }, C: { "1": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB", "132": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E BC vB CC DC EC" }, F: { "1": "PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "132": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "132": "rC sC tC uC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "relList (DOMTokenList)" }; + } +}); + +// node_modules/caniuse-lite/data/features/rem.js +var require_rem = __commonJS({ + "node_modules/caniuse-lite/data/features/rem.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E 5B", "132": "F A" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 8B", "2": "6B qB 7B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F B KC LC MC NC nB 3B" }, G: { "1": "E PC 4B RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB", "260": "QC" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "C c oB", "2": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "rem (root em) units" }; + } +}); + +// node_modules/caniuse-lite/data/features/requestanimationframe.js +var require_requestanimationframe = __commonJS({ + "node_modules/caniuse-lite/data/features/requestanimationframe.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "33": "B C K L G M N O s t u v", "164": "I r J D E F A" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F", "33": "v w", "164": "O s t u", "420": "A B C K L G M N" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "33": "J" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "33": "RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "requestAnimationFrame" }; + } +}); + +// node_modules/caniuse-lite/data/features/requestidlecallback.js +var require_requestidlecallback = __commonJS({ + "node_modules/caniuse-lite/data/features/requestidlecallback.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 7B 8B", "194": "QB RB" }, D: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB" }, E: { "2": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB", "322": "L G xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC", "322": "fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "requestIdleCallback" }; + } +}); + +// node_modules/caniuse-lite/data/features/resizeobserver.js +var require_resizeobserver = __commonJS({ + "node_modules/caniuse-lite/data/features/resizeobserver.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB 7B 8B" }, D: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB", "194": "RB SB TB UB VB rB WB sB XB YB" }, E: { "1": "L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB oB", "66": "K" }, F: { "1": "PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB KC LC MC NC nB 3B OC oB", "194": "EB FB GB HB IB JB KB LB MB NB OB" }, G: { "1": "fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Resize Observer" }; + } +}); + +// node_modules/caniuse-lite/data/features/resource-timing.js +var require_resource_timing = __commonJS({ + "node_modules/caniuse-lite/data/features/resource-timing.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "4 5 6 7" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v w x" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB", "260": "B" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Resource Timing" }; + } +}); + +// node_modules/caniuse-lite/data/features/rest-parameters.js +var require_rest_parameters = __commonJS({ + "node_modules/caniuse-lite/data/features/rest-parameters.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L 7B 8B" }, D: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB", "194": "HB IB JB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "194": "4 5 6" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Rest parameters" }; + } +}); + +// node_modules/caniuse-lite/data/features/rtcpeerconnection.js +var require_rtcpeerconnection = __commonJS({ + "node_modules/caniuse-lite/data/features/rtcpeerconnection.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L", "516": "G M N O" }, C: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B", "33": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB" }, D: { "1": "TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v", "33": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB" }, F: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D", "130": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "33": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "WebRTC Peer-to-peer connections" }; + } +}); + +// node_modules/caniuse-lite/data/features/ruby.js +var require_ruby = __commonJS({ + "node_modules/caniuse-lite/data/features/ruby.js"(exports2, module2) { + module2.exports = { A: { A: { "4": "J D E F A B 5B" }, B: { "4": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "8": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB 7B 8B" }, D: { "4": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "8": "I" }, E: { "4": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "I BC vB" }, F: { "4": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "8": "F B C KC LC MC NC nB 3B OC oB" }, G: { "4": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "8": "vB PC 4B" }, H: { "8": "jC" }, I: { "4": "qB I H nC 4B oC pC", "8": "kC lC mC" }, J: { "4": "A", "8": "D" }, K: { "4": "c", "8": "A B C nB 3B oB" }, L: { "4": "H" }, M: { "1": "b" }, N: { "4": "A B" }, O: { "4": "qC" }, P: { "4": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "4": "xB" }, R: { "4": "3C" }, S: { "1": "4C" } }, B: 1, C: "Ruby annotation" }; + } +}); + +// node_modules/caniuse-lite/data/features/run-in.js +var require_run_in = __commonJS({ + "node_modules/caniuse-lite/data/features/run-in.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "E F A B", "2": "J D 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 I r J D E F A B C K L G M N O s t u v w x y z", "2": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J CC", "2": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "DC", "129": "I BC vB" }, F: { "1": "F B C G M N O KC LC MC NC nB 3B OC oB", "2": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "PC 4B QC RC SC", "2": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "129": "vB" }, H: { "1": "jC" }, I: { "1": "qB I kC lC mC nC 4B oC", "2": "H pC" }, J: { "1": "D A" }, K: { "1": "A B C nB 3B oB", "2": "c" }, L: { "2": "H" }, M: { "2": "b" }, N: { "1": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "display: run-in" }; + } +}); + +// node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js +var require_same_site_cookie_attribute = __commonJS({ + "node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "388": "B" }, B: { "1": "O P Q R S T U", "2": "C K L G", "129": "M N", "513": "V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB 7B 8B" }, D: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "513": "Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "G HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB nB", "2052": "L GC", "3076": "C K oB xB" }, 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 c ZB aB bB cB dB eB", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB KC LC MC NC nB 3B OC oB", "513": "fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC", "2052": "aC bC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "513": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "16": "xB" }, R: { "513": "3C" }, S: { "2": "4C" } }, B: 6, C: "'SameSite' cookie attribute" }; + } +}); + +// node_modules/caniuse-lite/data/features/screen-orientation.js +var require_screen_orientation = __commonJS({ + "node_modules/caniuse-lite/data/features/screen-orientation.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "164": "B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "36": "C K L G M N O" }, C: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N 7B 8B", "36": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB GB" }, D: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A", "36": "B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "16": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "Screen Orientation" }; + } +}); + +// node_modules/caniuse-lite/data/features/script-async.js +var require_script_async = __commonJS({ + "node_modules/caniuse-lite/data/features/script-async.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 8B", "2": "6B qB 7B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "132": "r" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "async attribute for external scripts" }; + } +}); + +// node_modules/caniuse-lite/data/features/script-defer.js +var require_script_defer = __commonJS({ + "node_modules/caniuse-lite/data/features/script-defer.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "132": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "257": "0 1 2 3 I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "defer attribute for external scripts" }; + } +}); + +// node_modules/caniuse-lite/data/features/scrollintoview.js +var require_scrollintoview = __commonJS({ + "node_modules/caniuse-lite/data/features/scrollintoview.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D 5B", "132": "E F A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "132": "C K L G M N O" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "132": "0 1 2 3 4 5 6 7 8 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB" }, E: { "1": "pB 2B IC JC", "2": "I r BC vB", "132": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "1": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F KC LC MC NC", "16": "B nB 3B", "132": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB OC oB" }, G: { "1": "pB 2B", "16": "vB PC 4B", "132": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "2": "jC" }, I: { "1": "H", "16": "kC lC", "132": "qB I mC nC 4B oC pC" }, J: { "132": "D A" }, K: { "1": "c", "132": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "132": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "scrollIntoView" }; + } +}); + +// node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js +var require_scrollintoviewifneeded = __commonJS({ + "node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "Element.scrollIntoViewIfNeeded()" }; + } +}); + +// node_modules/caniuse-lite/data/features/sdch.js +var require_sdch = __commonJS({ + "node_modules/caniuse-lite/data/features/sdch.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB", "2": "rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB", "2": "F B C hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "SDCH Accept-Encoding/Content-Encoding" }; + } +}); + +// node_modules/caniuse-lite/data/features/selection-api.js +var require_selection_api = __commonJS({ + "node_modules/caniuse-lite/data/features/selection-api.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "16": "5B", "260": "J D E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "132": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB 7B 8B", "2180": "GB HB IB JB KB LB MB NB OB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "132": "F B C KC LC MC NC nB 3B OC oB" }, G: { "16": "4B", "132": "vB PC", "516": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H oC pC", "16": "qB I kC lC mC nC", "1025": "4B" }, J: { "1": "A", "16": "D" }, K: { "1": "c", "16": "A B C nB 3B", "132": "oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "16": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2180": "4C" } }, B: 5, C: "Selection API" }; + } +}); + +// node_modules/caniuse-lite/data/features/server-timing.js +var require_server_timing = __commonJS({ + "node_modules/caniuse-lite/data/features/server-timing.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB 7B 8B" }, D: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB", "196": "WB sB XB YB", "324": "c" }, E: { "2": "I r J D E F A B C BC vB CC DC EC FC wB nB", "516": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Server Timing" }; + } +}); + +// node_modules/caniuse-lite/data/features/serviceworkers.js +var require_serviceworkers = __commonJS({ + "node_modules/caniuse-lite/data/features/serviceworkers.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L", "322": "G M" }, C: { "1": "HB JB KB LB MB NB OB QB RB SB TB UB VB rB sB XB YB c ZB aB bB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "6 7 8 9 AB BB CB DB EB FB GB", "513": "IB PB WB cB" }, D: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB", "4": "DB EB FB GB HB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B BC vB CC DC EC FC wB" }, F: { "1": "5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "4": "0 1 2 3 4" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "4": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "4": "c" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "Service Workers" }; + } +}); + +// node_modules/caniuse-lite/data/features/setimmediate.js +var require_setimmediate = __commonJS({ + "node_modules/caniuse-lite/data/features/setimmediate.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O", "2": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "1": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Efficient Script Yielding: setImmediate()" }; + } +}); + +// node_modules/caniuse-lite/data/features/shadowdom.js +var require_shadowdom = __commonJS({ + "node_modules/caniuse-lite/data/features/shadowdom.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P", "2": "C K L G M N O Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "66": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB" }, D: { "1": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P", "2": "I r J D E F A B C K L G M N O s t u v w x Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "0 1 2 3 4 5 6 7 y z" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB", "2": "F B C bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "33": "G M N O s t u" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B", "33": "oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC", "2": "yC zC 0C pB 1C 2C", "33": "I" }, Q: { "1": "xB" }, R: { "2": "3C" }, S: { "1": "4C" } }, B: 7, C: "Shadow DOM (deprecated V0 spec)" }; + } +}); + +// node_modules/caniuse-lite/data/features/shadowdomv1.js +var require_shadowdomv1 = __commonJS({ + "node_modules/caniuse-lite/data/features/shadowdomv1.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB 7B 8B", "322": "VB", "578": "rB WB sB XB" }, D: { "1": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB" }, E: { "1": "A B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC" }, F: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB KC LC MC NC nB 3B OC oB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC", "132": "WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "4": "rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Shadow DOM (V1)" }; + } +}); + +// node_modules/caniuse-lite/data/features/sharedarraybuffer.js +var require_sharedarraybuffer = __commonJS({ + "node_modules/caniuse-lite/data/features/sharedarraybuffer.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z", "2": "C K L G", "194": "M N O", "513": "a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB 7B 8B", "194": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB", "450": "iB jB kB lB mB", "513": "P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB", "194": "WB sB XB YB c ZB aB bB", "513": "a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A BC vB CC DC EC FC", "194": "B C K L G wB nB oB xB GC HC", "513": "yB zB 0B 1B pB 2B IC JC" }, F: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KC LC MC NC nB 3B OC oB", "194": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC", "194": "XC YC ZC aC bC cC dC eC fC gC hC iC", "513": "yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "513": "H" }, M: { "513": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC", "513": "0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "513": "3C" }, S: { "2": "4C" } }, B: 6, C: "Shared Array Buffer" }; + } +}); + +// node_modules/caniuse-lite/data/features/sharedworkers.js +var require_sharedworkers = __commonJS({ + "node_modules/caniuse-lite/data/features/sharedworkers.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "r J CC pB 2B IC JC", "2": "I D E F A B C K L G BC vB DC EC FC wB nB oB xB GC HC yB zB 0B 1B" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a NC nB 3B OC oB", "2": "F KC LC MC" }, G: { "1": "QC RC pB 2B", "2": "E vB PC 4B SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "B C nB 3B oB", "2": "c", "16": "A" }, L: { "2": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "I", "2": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "1": "4C" } }, B: 1, C: "Shared Web Workers" }; + } +}); + +// node_modules/caniuse-lite/data/features/sni.js +var require_sni = __commonJS({ + "node_modules/caniuse-lite/data/features/sni.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J 5B", "132": "D E" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB" }, H: { "1": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Server Name Indication" }; + } +}); + +// node_modules/caniuse-lite/data/features/spdy.js +var require_spdy = __commonJS({ + "node_modules/caniuse-lite/data/features/spdy.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F A 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "2": "6B qB I r J D E F A B C OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "2": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "E F A B C FC wB nB", "2": "I r J D BC vB CC DC EC", "129": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB FB HB oB", "2": "F B C DB EB GB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC" }, G: { "1": "E TC UC VC WC XC YC ZC aC", "2": "vB PC 4B QC RC SC", "257": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I nC 4B oC pC", "2": "H kC lC mC" }, J: { "2": "D A" }, K: { "1": "oB", "2": "A B C c nB 3B" }, L: { "2": "H" }, M: { "2": "b" }, N: { "1": "B", "2": "A" }, O: { "2": "qC" }, P: { "1": "I", "2": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "1": "4C" } }, B: 7, C: "SPDY protocol" }; + } +}); + +// node_modules/caniuse-lite/data/features/speech-recognition.js +var require_speech_recognition = __commonJS({ + "node_modules/caniuse-lite/data/features/speech-recognition.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "1026": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B", "322": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "I r J D E F A B C K L G M N O s t u v w x", "164": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L BC vB CC DC EC FC wB nB oB xB", "2084": "G GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "1026": "0 1 2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC", "2084": "hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "164": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "164": "qC" }, P: { "164": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "164": "xB" }, R: { "164": "3C" }, S: { "322": "4C" } }, B: 7, C: "Speech Recognition API" }; + } +}); + +// node_modules/caniuse-lite/data/features/speech-synthesis.js +var require_speech_synthesis = __commonJS({ + "node_modules/caniuse-lite/data/features/speech-synthesis.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O", "2": "C K", "257": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB" }, D: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB", "2": "0 1 2 3 4 5 I r J D E F A B C K L G M N O s t u v w x y z", "257": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 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", "2": "F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "257": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "2": "3C" }, S: { "1": "4C" } }, B: 7, C: "Speech Synthesis API" }; + } +}); + +// node_modules/caniuse-lite/data/features/spellcheck-attribute.js +var require_spellcheck_attribute = __commonJS({ + "node_modules/caniuse-lite/data/features/spellcheck-attribute.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "4": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "4": "jC" }, I: { "4": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "A", "4": "D" }, K: { "4": "A B C c nB 3B oB" }, L: { "4": "H" }, M: { "4": "b" }, N: { "4": "A B" }, O: { "4": "qC" }, P: { "4": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "4": "3C" }, S: { "2": "4C" } }, B: 1, C: "Spellcheck attribute" }; + } +}); + +// node_modules/caniuse-lite/data/features/sql-storage.js +var require_sql_storage = __commonJS({ + "node_modules/caniuse-lite/data/features/sql-storage.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p", "2": "C K L G M N O", "129": "q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p", "129": "q b H uB 9B AC" }, E: { "1": "I r J D E F A B C BC vB CC DC EC FC wB nB oB", "2": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z MC NC nB 3B OC oB", "2": "F KC LC", "129": "a" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC", "2": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I kC lC mC nC 4B oC pC", "129": "H" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "129": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "Web SQL Database" }; + } +}); + +// node_modules/caniuse-lite/data/features/srcset.js +var require_srcset = __commonJS({ + "node_modules/caniuse-lite/data/features/srcset.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C", "514": "K L G" }, C: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "5 6 7 8 9 AB" }, D: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 I r J D E F A B C K L G M N O s t u v w x y z", "260": "7 8 9 AB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC DC", "260": "E EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t KC LC MC NC nB 3B OC oB", "260": "u v w x" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC", "260": "E TC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Srcset and sizes attributes" }; + } +}); + +// node_modules/caniuse-lite/data/features/stream.js +var require_stream = __commonJS({ + "node_modules/caniuse-lite/data/features/stream.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M 7B 8B", "129": "9 AB BB CB DB EB", "420": "0 1 2 3 4 5 6 7 8 N O s t u v w x y z" }, D: { "1": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t", "420": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB" }, F: { "1": "DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B G M N KC LC MC NC nB 3B OC", "420": "0 1 2 3 4 5 6 7 8 9 C O s t u v w x y z AB BB CB oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC", "513": "fC gC hC iC yB zB 0B 1B pB 2B", "1537": "YC ZC aC bC cC dC eC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D", "420": "A" }, K: { "1": "c", "2": "A B nB 3B", "420": "C oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "420": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "getUserMedia/Stream API" }; + } +}); + +// node_modules/caniuse-lite/data/features/streams.js +var require_streams = __commonJS({ + "node_modules/caniuse-lite/data/features/streams.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "130": "B" }, B: { "1": "Y Z a d e f g h i j k l m n o p q b H", "16": "C K", "260": "L G", "1028": "P Q R S T U V W X", "5124": "M N O" }, C: { "1": "n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB 7B 8B", "5124": "l m", "7172": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k", "7746": "UB VB rB WB sB XB YB c" }, D: { "1": "Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB", "260": "PB QB RB SB TB UB VB", "1028": "rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X" }, E: { "2": "I r J D E F BC vB CC DC EC FC", "1028": "G GC HC yB zB 0B 1B pB 2B IC JC", "3076": "A B C K L wB nB oB xB" }, F: { "1": "kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB KC LC MC NC nB 3B OC oB", "260": "CB DB EB FB GB HB IB", "1028": "JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC", "16": "WC", "1028": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1028": "qC" }, P: { "1": "0C pB 1C 2C", "2": "I rC sC", "1028": "tC uC vC wB wC xC yC zC" }, Q: { "1028": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "Streams" }; + } +}); + +// node_modules/caniuse-lite/data/features/stricttransportsecurity.js +var require_stricttransportsecurity = __commonJS({ + "node_modules/caniuse-lite/data/features/stricttransportsecurity.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A 5B", "129": "B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC nB 3B OC" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Strict Transport Security" }; + } +}); + +// node_modules/caniuse-lite/data/features/style-scoped.js +var require_style_scoped = __commonJS({ + "node_modules/caniuse-lite/data/features/style-scoped.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB", "2": "6B qB I r J D E F A B C K L G M N O s t sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "322": "SB TB UB VB rB WB" }, D: { "2": "I r J D E F A B C K L G M N O s AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "194": "0 1 2 3 4 5 6 7 8 9 t u v w x y z" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "1": "4C" } }, B: 7, C: "Scoped CSS" }; + } +}); + +// node_modules/caniuse-lite/data/features/subresource-bundling.js +var require_subresource_bundling = __commonJS({ + "node_modules/caniuse-lite/data/features/subresource-bundling.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "p q b H", "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Subresource Loading with Web Bundles" }; + } +}); + +// node_modules/caniuse-lite/data/features/subresource-integrity.js +var require_subresource_integrity = __commonJS({ + "node_modules/caniuse-lite/data/features/subresource-integrity.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M" }, C: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB 7B 8B" }, D: { "1": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB" }, F: { "1": "5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC", "194": "YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "Subresource Integrity" }; + } +}); + +// node_modules/caniuse-lite/data/features/svg-css.js +var require_svg_css = __commonJS({ + "node_modules/caniuse-lite/data/features/svg-css.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "516": "C K L G" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "260": "I r J D E F A B C K L G M N O s t u v w" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "4": "I" }, E: { "1": "r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC", "132": "I vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "E 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "132": "vB PC" }, H: { "260": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "D A" }, K: { "1": "c", "260": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "SVG in CSS backgrounds" }; + } +}); + +// node_modules/caniuse-lite/data/features/svg-filters.js +var require_svg_filters = __commonJS({ + "node_modules/caniuse-lite/data/features/svg-filters.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I", "4": "r J D" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "SVG filters" }; + } +}); + +// node_modules/caniuse-lite/data/features/svg-fonts.js +var require_svg_fonts = __commonJS({ + "node_modules/caniuse-lite/data/features/svg-fonts.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "F A B 5B", "8": "J D E" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB", "2": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "130": "BB CB DB EB FB GB HB IB JB KB LB MB NB" }, E: { "1": "I r J D E F A B C K L G vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC" }, F: { "1": "F B C G M N O s t u v w x KC LC MC NC nB 3B OC oB", "2": "AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "130": "0 1 2 3 4 5 6 7 8 9 y z" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "258": "jC" }, I: { "1": "qB I nC 4B oC pC", "2": "H kC lC mC" }, J: { "1": "D A" }, K: { "1": "A B C nB 3B oB", "2": "c" }, L: { "130": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "I", "130": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "130": "3C" }, S: { "2": "4C" } }, B: 2, C: "SVG fonts" }; + } +}); + +// node_modules/caniuse-lite/data/features/svg-fragment.js +var require_svg_fragment = __commonJS({ + "node_modules/caniuse-lite/data/features/svg-fragment.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "260": "F A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L 7B 8B" }, D: { "1": "NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 I r J D E F A B C K L G M N O s t u v w x y z", "132": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB" }, E: { "1": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D F A B BC vB CC DC FC wB", "132": "E EC" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "G M N O s t u v", "4": "B C LC MC NC nB 3B OC", "16": "F KC", "132": "0 1 2 3 4 5 6 7 8 9 w x y z" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC UC VC WC XC YC", "132": "E TC" }, H: { "1": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D", "132": "A" }, K: { "1": "c oB", "4": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "132": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "SVG fragment identifiers" }; + } +}); + +// node_modules/caniuse-lite/data/features/svg-html.js +var require_svg_html = __commonJS({ + "node_modules/caniuse-lite/data/features/svg-html.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "388": "F A B" }, B: { "4": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B", "4": "qB" }, D: { "4": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "BC vB", "4": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "4": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "4": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "4": "H oC pC" }, J: { "1": "A", "2": "D" }, K: { "4": "A B C c nB 3B oB" }, L: { "4": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "4": "qC" }, P: { "4": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "4": "xB" }, R: { "4": "3C" }, S: { "1": "4C" } }, B: 2, C: "SVG effects for HTML" }; + } +}); + +// node_modules/caniuse-lite/data/features/svg-html5.js +var require_svg_html5 = __commonJS({ + "node_modules/caniuse-lite/data/features/svg-html5.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "5B", "8": "J D E", "129": "F A B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "129": "C K L G M" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "8": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "8": "I r J" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "I r BC vB", "129": "J D E CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "B NC nB 3B", "8": "F KC LC MC" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "8": "vB PC 4B", "129": "E QC RC SC TC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "kC lC mC", "129": "qB I nC 4B" }, J: { "1": "A", "129": "D" }, K: { "1": "C c oB", "8": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "129": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Inline SVG in HTML5" }; + } +}); + +// node_modules/caniuse-lite/data/features/svg-img.js +var require_svg_img = __commonJS({ + "node_modules/caniuse-lite/data/features/svg-img.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "0 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC", "4": "vB", "132": "I r J D E CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "132": "E vB PC 4B QC RC SC TC" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "kC lC mC", "132": "qB I nC 4B" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "SVG in HTML img element" }; + } +}); + +// node_modules/caniuse-lite/data/features/svg-smil.js +var require_svg_smil = __commonJS({ + "node_modules/caniuse-lite/data/features/svg-smil.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "5B", "8": "J D E F A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "8": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "8": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "4": "I" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "BC vB", "132": "I r CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "132": "vB PC 4B QC" }, H: { "2": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "8": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "SVG SMIL animation" }; + } +}); + +// node_modules/caniuse-lite/data/features/svg.js +var require_svg = __commonJS({ + "node_modules/caniuse-lite/data/features/svg.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "5B", "8": "J D E", "772": "F A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "513": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "4": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "4": "BC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "H oC pC", "2": "kC lC mC", "132": "qB I nC 4B" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "257": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "SVG (basic support)" }; + } +}); + +// node_modules/caniuse-lite/data/features/sxg.js +var require_sxg = __commonJS({ + "node_modules/caniuse-lite/data/features/sxg.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB", "132": "fB gB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "Signed HTTP Exchanges (SXG)" }; + } +}); + +// node_modules/caniuse-lite/data/features/tabindex-attr.js +var require_tabindex_attr = __commonJS({ + "node_modules/caniuse-lite/data/features/tabindex-attr.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "D E F A B", "16": "J 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "16": "6B qB 7B 8B", "129": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "16": "I r BC vB", "257": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "16": "F" }, G: { "769": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "16": "jC" }, I: { "16": "qB I H kC lC mC nC 4B oC pC" }, J: { "16": "D A" }, K: { "16": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "16": "A B" }, O: { "1": "qC" }, P: { "16": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "129": "4C" } }, B: 1, C: "tabindex global attribute" }; + } +}); + +// node_modules/caniuse-lite/data/features/template-literals.js +var require_template_literals = __commonJS({ + "node_modules/caniuse-lite/data/features/template-literals.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "16": "C" }, C: { "1": "7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B" }, D: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB" }, E: { "1": "A B K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC", "129": "C" }, F: { "1": "2 3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "UC VC WC XC YC ZC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC", "129": "aC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "ES6 Template Literals (Template Strings)" }; + } +}); + +// node_modules/caniuse-lite/data/features/template.js +var require_template = __commonJS({ + "node_modules/caniuse-lite/data/features/template.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C", "388": "K L" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u 7B 8B" }, D: { "1": "8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v w x y", "132": "0 1 2 3 4 5 6 7 z" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D BC vB CC", "388": "E EC", "514": "DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "132": "G M N O s t u" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC", "388": "E TC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "HTML templates" }; + } +}); + +// node_modules/caniuse-lite/data/features/temporal.js +var require_temporal = __commonJS({ + "node_modules/caniuse-lite/data/features/temporal.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 6, C: "Temporal" }; + } +}); + +// node_modules/caniuse-lite/data/features/testfeat.js +var require_testfeat = __commonJS({ + "node_modules/caniuse-lite/data/features/testfeat.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E A B 5B", "16": "F" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "16": "I r" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "B C" }, E: { "2": "I J BC vB CC", "16": "r D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC 3B OC oB", "16": "nB" }, G: { "2": "vB PC 4B QC RC", "16": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC nC 4B oC pC", "16": "mC" }, J: { "2": "A", "16": "D" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Test feature - updated" }; + } +}); + +// node_modules/caniuse-lite/data/features/text-decoration.js +var require_text_decoration = __commonJS({ + "node_modules/caniuse-lite/data/features/text-decoration.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "2052": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB I r 7B 8B", "1028": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "1060": "0 1 2 3 4 5 6 7 8 J D E F A B C K L G M N O s t u v w x y z" }, D: { "2": "I r J D E F A B C K L G M N O s t u v w x y", "226": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB", "2052": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D BC vB CC DC", "772": "K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "804": "E F A B C FC wB nB", "1316": "EC" }, F: { "2": "0 1 2 3 4 5 6 7 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "226": "8 9 AB BB CB DB EB FB GB", "2052": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "vB PC 4B QC RC SC", "292": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "2052": "H" }, M: { "1028": "b" }, N: { "2": "A B" }, O: { "2052": "qC" }, P: { "2": "I rC sC", "2052": "tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2052": "xB" }, R: { "2052": "3C" }, S: { "1028": "4C" } }, B: 4, C: "text-decoration styling" }; + } +}); + +// node_modules/caniuse-lite/data/features/text-emphasis.js +var require_text_emphasis = __commonJS({ + "node_modules/caniuse-lite/data/features/text-emphasis.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "k l m n o p q b H", "2": "C K L G M N O", "164": "P Q R S T U V W X Y Z a d e f g h i j" }, C: { "1": "JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB 7B 8B", "322": "IB" }, D: { "1": "k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v w x", "164": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j" }, E: { "1": "E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC", "164": "D DC" }, F: { "1": "V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "164": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B", "164": "oC pC" }, J: { "2": "D", "164": "A" }, K: { "2": "A B C nB 3B oB", "164": "c" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "164": "qC" }, P: { "1": "2C", "164": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C" }, Q: { "164": "xB" }, R: { "164": "3C" }, S: { "1": "4C" } }, B: 4, C: "text-emphasis styling" }; + } +}); + +// node_modules/caniuse-lite/data/features/text-overflow.js +var require_text_overflow = __commonJS({ + "node_modules/caniuse-lite/data/features/text-overflow.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B", "2": "5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "8": "6B qB I r J 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "33": "F KC LC MC NC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "c oB", "33": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "CSS3 Text-overflow" }; + } +}); + +// node_modules/caniuse-lite/data/features/text-size-adjust.js +var require_text_size_adjust = __commonJS({ + "node_modules/caniuse-lite/data/features/text-size-adjust.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "33": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB", "258": "z" }, E: { "2": "I r J D E F A B C K L G BC vB DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "258": "CC" }, F: { "1": "GB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB HB KC LC MC NC nB 3B OC oB" }, G: { "2": "vB PC 4B", "33": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "33": "b" }, N: { "161": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS text-size-adjust" }; + } +}); + +// node_modules/caniuse-lite/data/features/text-stroke.js +var require_text_stroke = __commonJS({ + "node_modules/caniuse-lite/data/features/text-stroke.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L", "33": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "161": "G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 7B 8B", "161": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "450": "LB" }, D: { "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "33": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "33": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "36": "vB" }, H: { "2": "jC" }, I: { "2": "qB", "33": "I H kC lC mC nC 4B oC pC" }, J: { "33": "D A" }, K: { "2": "A B C nB 3B oB", "33": "c" }, L: { "33": "H" }, M: { "161": "b" }, N: { "2": "A B" }, O: { "33": "qC" }, P: { "33": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "33": "xB" }, R: { "33": "3C" }, S: { "161": "4C" } }, B: 7, C: "CSS text-stroke and text-fill" }; + } +}); + +// node_modules/caniuse-lite/data/features/textcontent.js +var require_textcontent = __commonJS({ + "node_modules/caniuse-lite/data/features/textcontent.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "16": "F" }, G: { "1": "E PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB" }, H: { "1": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Node.textContent" }; + } +}); + +// node_modules/caniuse-lite/data/features/textencoder.js +var require_textencoder = __commonJS({ + "node_modules/caniuse-lite/data/features/textencoder.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O 7B 8B", "132": "s" }, D: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w x KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "TextEncoder & TextDecoder" }; + } +}); + +// node_modules/caniuse-lite/data/features/tls1-1.js +var require_tls1_1 = __commonJS({ + "node_modules/caniuse-lite/data/features/tls1-1.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D 5B", "66": "E F A" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB", "2": "6B qB I r J D E F A B C K L G M N O s t u v 7B 8B", "66": "w", "129": "cB dB eB fB gB hB iB jB kB lB", "388": "mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T", "2": "I r J D E F A B C K L G M N O s t u", "1540": "U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "D E F A B C K EC FC wB nB oB", "2": "I r J BC vB CC DC", "513": "L G xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB oB", "2": "F B C KC LC MC NC nB 3B OC", "1540": "hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "1": "A", "2": "D" }, K: { "1": "c oB", "2": "A B C nB 3B" }, L: { "1": "H" }, M: { "129": "b" }, N: { "1": "B", "66": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "TLS 1.1" }; + } +}); + +// node_modules/caniuse-lite/data/features/tls1-2.js +var require_tls1_2 = __commonJS({ + "node_modules/caniuse-lite/data/features/tls1-2.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D 5B", "66": "E F A" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w 7B 8B", "66": "x y z" }, D: { "1": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F G KC", "66": "B C LC MC NC nB 3B OC oB" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "1": "A", "2": "D" }, K: { "1": "c oB", "2": "A B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "66": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "TLS 1.2" }; + } +}); + +// node_modules/caniuse-lite/data/features/tls1-3.js +var require_tls1_3 = __commonJS({ + "node_modules/caniuse-lite/data/features/tls1-3.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB 7B 8B", "132": "WB sB XB", "450": "OB PB QB RB SB TB UB VB rB" }, D: { "1": "eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB", "706": "RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB" }, E: { "1": "L G GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB", "1028": "K oB xB" }, F: { "1": "UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB KC LC MC NC nB 3B OC oB", "706": "RB SB TB" }, G: { "1": "bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 6, C: "TLS 1.3" }; + } +}); + +// node_modules/caniuse-lite/data/features/touch.js +var require_touch = __commonJS({ + "node_modules/caniuse-lite/data/features/touch.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "8": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "578": "C K L G M N O" }, C: { "1": "O s t u v w x PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "4": "I r J D E F A B C K L G M N", "194": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "8": "A", "260": "B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 2, C: "Touch events" }; + } +}); + +// node_modules/caniuse-lite/data/features/transforms2d.js +var require_transforms2d = __commonJS({ + "node_modules/caniuse-lite/data/features/transforms2d.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "5B", "8": "J D E", "129": "A B", "161": "F" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "129": "C K L G M" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "33": "I r J D E F A B C K L G 7B 8B" }, D: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "0 1 2 3 4 5 6 7 8 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "33": "I r J D E BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F KC LC", "33": "B C G M N O s t u v MC NC nB 3B OC" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "33": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "33": "qB I kC lC mC nC 4B oC pC" }, J: { "33": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS3 2D Transforms" }; + } +}); + +// node_modules/caniuse-lite/data/features/transforms3d.js +var require_transforms3d = __commonJS({ + "node_modules/caniuse-lite/data/features/transforms3d.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "132": "A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F 7B 8B", "33": "A B C K L G" }, D: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B", "33": "0 1 2 3 4 5 6 7 8 C K L G M N O s t u v w x y z" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "BC vB", "33": "I r J D E CC DC EC", "257": "F A B C K L G FC wB nB oB xB GC HC yB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "G M N O s t u v" }, G: { "1": "zB 0B 1B pB 2B", "33": "E vB PC 4B QC RC SC TC", "257": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, H: { "2": "jC" }, I: { "1": "H", "2": "kC lC mC", "33": "qB I nC 4B oC pC" }, J: { "33": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 5, C: "CSS3 3D Transforms" }; + } +}); + +// node_modules/caniuse-lite/data/features/trusted-types.js +var require_trusted_types = __commonJS({ + "node_modules/caniuse-lite/data/features/trusted-types.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O P Q R" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "Trusted Types for DOM manipulation" }; + } +}); + +// node_modules/caniuse-lite/data/features/ttf.js +var require_ttf = __commonJS({ + "node_modules/caniuse-lite/data/features/ttf.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "132": "F A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a LC MC NC nB 3B OC oB", "2": "F KC" }, G: { "1": "E 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC" }, H: { "2": "jC" }, I: { "1": "qB I H lC mC nC 4B oC pC", "2": "kC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "TTF/OTF - TrueType and OpenType font support" }; + } +}); + +// node_modules/caniuse-lite/data/features/typedarrays.js +var require_typedarrays = __commonJS({ + "node_modules/caniuse-lite/data/features/typedarrays.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "B", "2": "J D E F 5B", "132": "A" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB", "260": "CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F B KC LC MC NC nB 3B" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC", "260": "4B" }, H: { "1": "jC" }, I: { "1": "I H nC 4B oC pC", "2": "qB kC lC mC" }, J: { "1": "A", "2": "D" }, K: { "1": "C c oB", "2": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Typed Arrays" }; + } +}); + +// node_modules/caniuse-lite/data/features/u2f.js +var require_u2f = __commonJS({ + "node_modules/caniuse-lite/data/features/u2f.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O b H", "513": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q" }, C: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB 7B 8B", "322": "KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB b H uB 9B AC", "130": "BB CB DB", "513": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i", "578": "j k l m n o p q" }, E: { "1": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB oB" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB EB KC LC MC NC nB 3B OC oB", "513": "DB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "322": "4C" } }, B: 7, C: "FIDO U2F API" }; + } +}); + +// node_modules/caniuse-lite/data/features/unhandledrejection.js +var require_unhandledrejection = __commonJS({ + "node_modules/caniuse-lite/data/features/unhandledrejection.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB 7B 8B" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC", "16": "YC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 1, C: "unhandledrejection/rejectionhandled events" }; + } +}); + +// node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js +var require_upgradeinsecurerequests = __commonJS({ + "node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M" }, C: { "1": "FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB 7B 8B" }, D: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, F: { "1": "3 4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Upgrade Insecure Requests" }; + } +}); + +// node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js +var require_url_scroll_to_text_fragment = __commonJS({ + "node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O", "66": "P Q R" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB", "66": "iB jB kB lB mB P Q" }, E: { "1": "2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB KC LC MC NC nB 3B OC oB", "66": "aB bB" }, G: { "1": "2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "yC zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "URL Scroll-To-Text Fragment" }; + } +}); + +// node_modules/caniuse-lite/data/features/url.js +var require_url = __commonJS({ + "node_modules/caniuse-lite/data/features/url.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x y 7B 8B" }, D: { "1": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v", "130": "0 1 2 3 4 w x y z" }, E: { "1": "E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC DC", "130": "D" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "130": "G M N O" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC", "130": "SC" }, H: { "2": "jC" }, I: { "1": "H pC", "2": "qB I kC lC mC nC 4B", "130": "oC" }, J: { "2": "D", "130": "A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "URL API" }; + } +}); + +// node_modules/caniuse-lite/data/features/urlsearchparams.js +var require_urlsearchparams = __commonJS({ + "node_modules/caniuse-lite/data/features/urlsearchparams.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M" }, C: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "132": "2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB" }, D: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB" }, E: { "1": "B C K L G wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC" }, 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB" }, G: { "1": "XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "URLSearchParams" }; + } +}); + +// node_modules/caniuse-lite/data/features/use-strict.js +var require_use_strict = __commonJS({ + "node_modules/caniuse-lite/data/features/use-strict.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "132": "r CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F B KC LC MC NC nB 3B" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "qB I H nC 4B oC pC", "2": "kC lC mC" }, J: { "1": "D A" }, K: { "1": "C c 3B oB", "2": "A B nB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "ECMAScript 5 Strict Mode" }; + } +}); + +// node_modules/caniuse-lite/data/features/user-select-none.js +var require_user_select_none = __commonJS({ + "node_modules/caniuse-lite/data/features/user-select-none.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "33": "A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "33": "C K L G M N O" }, C: { "1": "dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "33": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB 7B 8B" }, D: { "1": "RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "33": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB" }, E: { "1": "JC", "33": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC" }, F: { "1": "EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "33": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB" }, G: { "33": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "33": "qB I kC lC mC nC 4B oC pC" }, J: { "33": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "33": "A B" }, O: { "1": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "33": "I rC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "33": "4C" } }, B: 5, C: "CSS user-select: none" }; + } +}); + +// node_modules/caniuse-lite/data/features/user-timing.js +var require_user_timing = __commonJS({ + "node_modules/caniuse-lite/data/features/user-timing.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s t u v w x" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "User Timing API" }; + } +}); + +// node_modules/caniuse-lite/data/features/variable-fonts.js +var require_variable_fonts = __commonJS({ + "node_modules/caniuse-lite/data/features/variable-fonts.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 7B 8B", "4609": "XB YB c ZB aB bB cB dB eB", "4674": "sB", "5698": "WB", "7490": "QB RB SB TB UB", "7746": "VB rB", "8705": "fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB", "4097": "aB", "4290": "rB WB sB", "6148": "XB YB c ZB" }, E: { "1": "G HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB", "4609": "B C nB oB", "8193": "K L xB GC" }, F: { "1": "RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB KC LC MC NC nB 3B OC oB", "4097": "QB", "6148": "MB NB OB PB" }, G: { "1": "cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC", "4097": "YC ZC aC bC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "4097": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "2": "I rC sC tC", "4097": "uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Variable fonts" }; + } +}); + +// node_modules/caniuse-lite/data/features/vector-effect.js +var require_vector_effect = __commonJS({ + "node_modules/caniuse-lite/data/features/vector-effect.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "2": "F B KC LC MC NC nB 3B" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "H oC pC", "16": "qB I kC lC mC nC 4B" }, J: { "16": "D A" }, K: { "1": "C c oB", "2": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "SVG vector-effect: non-scaling-stroke" }; + } +}); + +// node_modules/caniuse-lite/data/features/vibration.js +var require_vibration = __commonJS({ + "node_modules/caniuse-lite/data/features/vibration.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A 7B 8B", "33": "B C K L G" }, D: { "1": "3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "Vibration API" }; + } +}); + +// node_modules/caniuse-lite/data/features/video.js +var require_video = __commonJS({ + "node_modules/caniuse-lite/data/features/video.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "260": "I r J D E F A B C K L G M N O s 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A CC DC EC FC wB", "2": "BC vB", "513": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC", "513": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "132": "kC lC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Video element" }; + } +}); + +// node_modules/caniuse-lite/data/features/videotracks.js +var require_videotracks = __commonJS({ + "node_modules/caniuse-lite/data/features/videotracks.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O", "322": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB", "322": "IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J BC vB CC" }, F: { "2": "0 1 2 3 4 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "322": "5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "322": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "322": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "322": "xB" }, R: { "322": "3C" }, S: { "194": "4C" } }, B: 1, C: "Video Tracks" }; + } +}); + +// node_modules/caniuse-lite/data/features/viewport-unit-variants.js +var require_viewport_unit_variants = __commonJS({ + "node_modules/caniuse-lite/data/features/viewport-unit-variants.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p", "194": "q b H" }, C: { "1": "m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l 7B 8B" }, D: { "1": "uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k", "194": "l m n o p q b H" }, E: { "1": "zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z KC LC MC NC nB 3B OC oB", "194": "a" }, G: { "1": "zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "Large, Small, and Dynamic viewport units" }; + } +}); + +// node_modules/caniuse-lite/data/features/viewport-units.js +var require_viewport_units = __commonJS({ + "node_modules/caniuse-lite/data/features/viewport-units.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "132": "F", "260": "A B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "260": "C K L G" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N O s", "260": "t u v w x y" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC", "260": "J" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC", "516": "SC", "772": "RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "260": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "Viewport units: vw, vh, vmin, vmax" }; + } +}); + +// node_modules/caniuse-lite/data/features/wai-aria.js +var require_wai_aria = __commonJS({ + "node_modules/caniuse-lite/data/features/wai-aria.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D 5B", "4": "E F A B" }, B: { "4": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "4": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "4": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "BC vB", "4": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F", "4": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "4": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "4": "jC" }, I: { "2": "qB I kC lC mC nC 4B", "4": "H oC pC" }, J: { "2": "D A" }, K: { "4": "A B C c nB 3B oB" }, L: { "4": "H" }, M: { "4": "b" }, N: { "4": "A B" }, O: { "4": "qC" }, P: { "4": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "4": "xB" }, R: { "4": "3C" }, S: { "4": "4C" } }, B: 2, C: "WAI-ARIA Accessibility features" }; + } +}); + +// node_modules/caniuse-lite/data/features/wake-lock.js +var require_wake_lock = __commonJS({ + "node_modules/caniuse-lite/data/features/wake-lock.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "Z a d e f g h i j k l m n o p q b H", "2": "C K L G 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 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB", "194": "fB gB hB iB jB kB lB mB P Q R S T" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB KC LC MC NC nB 3B OC oB", "194": "VB WB XB YB c ZB aB bB cB dB eB fB gB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "zC 0C pB 1C 2C", "2": "I rC sC tC uC vC wB wC xC yC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 4, C: "Screen Wake Lock API" }; + } +}); + +// node_modules/caniuse-lite/data/features/wasm.js +var require_wasm = __commonJS({ + "node_modules/caniuse-lite/data/features/wasm.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L", "578": "G" }, C: { "1": "QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB 7B 8B", "194": "KB LB MB NB OB", "1025": "PB" }, D: { "1": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB", "322": "OB PB QB RB SB TB" }, E: { "1": "B C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB" }, F: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB KC LC MC NC nB 3B OC oB", "322": "BB CB DB EB FB GB" }, G: { "1": "YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "194": "4C" } }, B: 6, C: "WebAssembly" }; + } +}); + +// node_modules/caniuse-lite/data/features/wav.js +var require_wav = __commonJS({ + "node_modules/caniuse-lite/data/features/wav.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a MC NC nB 3B OC oB", "2": "F KC LC" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "16": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "Wav audio format" }; + } +}); + +// node_modules/caniuse-lite/data/features/wbr-element.js +var require_wbr_element = __commonJS({ + "node_modules/caniuse-lite/data/features/wbr-element.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D 5B", "2": "E F A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "BC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "16": "F" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B" }, H: { "1": "jC" }, I: { "1": "qB I H mC nC 4B oC pC", "16": "kC lC" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "wbr (word break opportunity) element" }; + } +}); + +// node_modules/caniuse-lite/data/features/web-animation.js +var require_web_animation = __commonJS({ + "node_modules/caniuse-lite/data/features/web-animation.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O", "260": "P Q R S" }, C: { "1": "R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "260": "rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB", "516": "KB LB MB NB OB PB QB RB SB TB UB VB", "580": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB", "2049": "jB kB lB mB P Q" }, D: { "1": "T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 I r J D E F A B C K L G M N O s t u v w x y z", "132": "9 AB BB", "260": "CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S" }, E: { "1": "G HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC wB", "1090": "B C K nB oB", "2049": "L xB GC" }, F: { "1": "fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v KC LC MC NC nB 3B OC oB", "132": "w x y", "260": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC", "1090": "YC ZC aC bC cC dC eC", "2049": "fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "260": "qC" }, P: { "260": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "260": "xB" }, R: { "1": "3C" }, S: { "516": "4C" } }, B: 5, C: "Web Animations API" }; + } +}); + +// node_modules/caniuse-lite/data/features/web-app-manifest.js +var require_web_app_manifest = __commonJS({ + "node_modules/caniuse-lite/data/features/web-app-manifest.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M", "130": "N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "578": "kB lB mB P Q R tB S T U" }, D: { "1": "CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC", "260": "ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "Add to home screen (A2HS)" }; + } +}); + +// node_modules/caniuse-lite/data/features/web-bluetooth.js +var require_web_bluetooth = __commonJS({ + "node_modules/caniuse-lite/data/features/web-bluetooth.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "1025": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB", "194": "IB JB KB LB MB NB OB PB", "706": "QB RB SB", "1025": "TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 F B C G M N O s t u v w x y z KC LC MC NC nB 3B OC oB", "450": "9 AB BB CB", "706": "DB EB FB", "1025": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC pC", "1025": "H" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "1025": "c" }, L: { "1025": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1025": "qC" }, P: { "1": "sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC" }, Q: { "2": "xB" }, R: { "1025": "3C" }, S: { "2": "4C" } }, B: 7, C: "Web Bluetooth" }; + } +}); + +// node_modules/caniuse-lite/data/features/web-serial.js +var require_web_serial = __commonJS({ + "node_modules/caniuse-lite/data/features/web-serial.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G 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 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB", "66": "mB P Q R S T U V W X" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c KC LC MC NC nB 3B OC oB", "66": "ZB aB bB cB dB eB fB gB hB iB jB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "Web Serial API" }; + } +}); + +// node_modules/caniuse-lite/data/features/web-share.js +var require_web_share = __commonJS({ + "node_modules/caniuse-lite/data/features/web-share.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "g h i j k l m n o p q b H", "2": "C K L G M N O P Q", "516": "R S T U V W X Y Z a d e f" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X", "130": "O s t u v w x", "1028": "Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "L G GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB", "2049": "K oB xB" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC", "2049": "bC cC dC eC fC" }, H: { "2": "jC" }, I: { "2": "qB I kC lC mC nC 4B oC", "258": "H pC" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "258": "c" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I", "258": "rC sC tC" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "Web Share API" }; + } +}); + +// node_modules/caniuse-lite/data/features/webauthn.js +var require_webauthn = __commonJS({ + "node_modules/caniuse-lite/data/features/webauthn.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C", "226": "K L G M N" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB 7B 8B", "5124": "WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB" }, E: { "1": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A B C BC vB CC DC EC FC wB nB", "322": "oB" }, F: { "1": "RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB KC LC MC NC nB 3B OC oB" }, G: { "1": "hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC", "578": "dC", "2052": "gC", "3076": "eC fC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1028": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "1C 2C", "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 2, C: "Web Authentication API" }; + } +}); + +// node_modules/caniuse-lite/data/features/webcodecs.js +var require_webcodecs = __commonJS({ + "node_modules/caniuse-lite/data/features/webcodecs.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "f g h i j k l m n o p q b H", "2": "C K L G M N O P Q R S T U V W X Y Z a d e" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "1C 2C", "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "WebCodecs API" }; + } +}); + +// node_modules/caniuse-lite/data/features/webgl.js +var require_webgl = __commonJS({ + "node_modules/caniuse-lite/data/features/webgl.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "5B", "8": "J D E F A", "129": "B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "129": "C K L G M N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "129": "I r J D E F A B C K L G M N O s t u v w" }, D: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D", "129": "0 1 2 3 4 5 E F A B C K L G M N O s t u v w x y z" }, E: { "1": "E F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB", "129": "J D CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B KC LC MC NC nB 3B OC", "129": "C G M N O oB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC SC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "1": "A", "2": "D" }, K: { "1": "C c oB", "2": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "8": "A", "129": "B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "129": "4C" } }, B: 6, C: "WebGL - 3D Canvas graphics" }; + } +}); + +// node_modules/caniuse-lite/data/features/webgl2.js +var require_webgl2 = __commonJS({ + "node_modules/caniuse-lite/data/features/webgl2.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "1": "OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L G M N O s t u v w x 7B 8B", "194": "FB GB HB", "450": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB", "2242": "IB JB KB LB MB NB" }, D: { "1": "TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB", "578": "GB HB IB JB KB LB MB NB OB PB QB RB SB" }, E: { "1": "G HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F A BC vB CC DC EC FC", "1090": "B C K L wB nB oB xB GC" }, F: { "1": "GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB KC LC MC NC nB 3B OC oB" }, G: { "1": "iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC", "1090": "aC bC cC dC eC fC gC hC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "tC uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "2242": "4C" } }, B: 6, C: "WebGL 2.0" }; + } +}); + +// node_modules/caniuse-lite/data/features/webgpu.js +var require_webgpu = __commonJS({ + "node_modules/caniuse-lite/data/features/webgpu.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P", "578": "Q R S T U V W X Y Z a d e", "1602": "f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB 7B 8B", "194": "YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P", "578": "Q R S T U V W X Y Z a d e", "1602": "f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B BC vB CC DC EC FC wB", "322": "C K L G nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB KC LC MC NC nB 3B OC oB", "578": "hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "194": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 5, C: "WebGPU" }; + } +}); + +// node_modules/caniuse-lite/data/features/webhid.js +var require_webhid = __commonJS({ + "node_modules/caniuse-lite/data/features/webhid.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G 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 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB", "66": "mB P Q R S T U V W X" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB KC LC MC NC nB 3B OC oB", "66": "aB bB cB dB eB fB gB hB iB jB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "WebHID API" }; + } +}); + +// node_modules/caniuse-lite/data/features/webkit-user-drag.js +var require_webkit_user_drag = __commonJS({ + "node_modules/caniuse-lite/data/features/webkit-user-drag.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "132": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "16": "I r J D E F A B C K L G", "132": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "F B C KC LC MC NC nB 3B OC oB", "132": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "CSS -webkit-user-drag property" }; + } +}); + +// node_modules/caniuse-lite/data/features/webm.js +var require_webm = __commonJS({ + "node_modules/caniuse-lite/data/features/webm.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E 5B", "520": "F A B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "8": "C K", "388": "L G M N O" }, C: { "1": "1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "132": "0 I r J D E F A B C K L G M N O s t u v w x y z" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r", "132": "J D E F A B C K L G M N O s t u v w x" }, E: { "1": "pB 2B IC JC", "2": "BC", "8": "I r vB CC", "520": "J D E F A B C DC EC FC wB nB", "1028": "K oB xB", "7172": "L", "8196": "G GC HC yB zB 0B 1B" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F KC LC MC", "132": "B C G NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC", "1028": "bC cC dC eC fC", "3076": "gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "kC lC", "132": "qB I mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "8": "A B" }, O: { "1": "qC" }, P: { "1": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C", "132": "I" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 6, C: "WebM video format" }; + } +}); + +// node_modules/caniuse-lite/data/features/webnfc.js +var require_webnfc = __commonJS({ + "node_modules/caniuse-lite/data/features/webnfc.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O P Y Z a d e f g h i j k l m n o p q b H", "450": "Q R S T U V W X" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "450": "Q R S T U V W X" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB KC LC MC NC nB 3B OC oB", "450": "bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "257": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "Web NFC" }; + } +}); + +// node_modules/caniuse-lite/data/features/webp.js +var require_webp = __commonJS({ + "node_modules/caniuse-lite/data/features/webp.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N" }, C: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "8": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c" }, D: { "1": "5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r", "8": "J D E", "132": "F A B C K L G M N O s t u v", "260": "0 1 2 3 4 w x y z" }, E: { "1": "pB 2B IC JC", "2": "I r J D E F A B C K BC vB CC DC EC FC wB nB oB xB", "516": "L G GC HC yB zB 0B 1B" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F KC LC MC", "8": "B NC", "132": "nB 3B OC", "260": "C G M N O oB" }, G: { "1": "gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC" }, H: { "1": "jC" }, I: { "1": "H 4B oC pC", "2": "qB kC lC mC", "132": "I nC" }, J: { "2": "D A" }, K: { "1": "C c nB 3B oB", "2": "A", "132": "B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "8": "4C" } }, B: 6, C: "WebP image format" }; + } +}); + +// node_modules/caniuse-lite/data/features/websockets.js +var require_websockets = __commonJS({ + "node_modules/caniuse-lite/data/features/websockets.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB 7B 8B", "132": "I r", "292": "J D E F A" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "I r J D E F A B C K L", "260": "G" }, E: { "1": "D E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "132": "r CC", "260": "J DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F KC LC MC NC", "132": "B C nB 3B OC" }, G: { "1": "E RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC", "132": "4B QC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "129": "D" }, K: { "1": "c oB", "2": "A", "132": "B C nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Web Sockets" }; + } +}); + +// node_modules/caniuse-lite/data/features/webtransport.js +var require_webtransport = __commonJS({ + "node_modules/caniuse-lite/data/features/webtransport.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "j k l m n o p q b H", "2": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z g h", "66": "a d e f" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB KC LC MC NC nB 3B OC oB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "1": "2C", "2": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 5, C: "WebTransport" }; + } +}); + +// node_modules/caniuse-lite/data/features/webusb.js +var require_webusb = __commonJS({ + "node_modules/caniuse-lite/data/features/webusb.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB", "66": "RB SB TB UB VB rB WB" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB KC LC MC NC nB 3B OC oB", "66": "EB FB GB HB IB JB KB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "uC vC wB wC xC yC zC 0C pB 1C 2C", "2": "I rC sC tC" }, Q: { "2": "xB" }, R: { "1": "3C" }, S: { "2": "4C" } }, B: 7, C: "WebUSB" }; + } +}); + +// node_modules/caniuse-lite/data/features/webvr.js +var require_webvr = __commonJS({ + "node_modules/caniuse-lite/data/features/webvr.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "66": "P", "257": "G M N O" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB 7B 8B", "129": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "194": "RB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "66": "UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P" }, E: { "2": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "66": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C c nB 3B oB" }, L: { "2": "H" }, M: { "2": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "513": "I", "516": "rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 7, C: "WebVR API" }; + } +}); + +// node_modules/caniuse-lite/data/features/webvtt.js +var require_webvtt = __commonJS({ + "node_modules/caniuse-lite/data/features/webvtt.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "6B qB I r J D E F A B C K L G M N O s t u v w 7B 8B", "66": "0 1 2 3 x y z", "129": "4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB", "257": "SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I r J D E F A B C K L G M N" }, E: { "1": "J D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB I kC lC mC nC 4B" }, J: { "1": "A", "2": "D" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "B", "2": "A" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "129": "4C" } }, B: 4, C: "WebVTT - Web Video Text Tracks" }; + } +}); + +// node_modules/caniuse-lite/data/features/webworkers.js +var require_webworkers = __commonJS({ + "node_modules/caniuse-lite/data/features/webworkers.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "2": "5B", "8": "J D E F" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "8": "6B qB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "8": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a NC nB 3B OC oB", "2": "F KC", "8": "LC MC" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "H kC oC pC", "2": "qB I lC mC nC 4B" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "8": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Web Workers" }; + } +}); + +// node_modules/caniuse-lite/data/features/webxr.js +var require_webxr = __commonJS({ + "node_modules/caniuse-lite/data/features/webxr.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "2": "C K L G M N O", "132": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB 7B 8B", "322": "lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c", "66": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB", "132": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "2": "I r J D E F A B C BC vB CC DC EC FC wB nB oB", "578": "K L G xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "2": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB KC LC MC NC nB 3B OC oB", "66": "PB QB RB SB TB UB VB WB XB YB c ZB", "132": "aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a" }, G: { "2": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "2": "jC" }, I: { "2": "qB I H kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "2": "A B C nB 3B oB", "132": "c" }, L: { "132": "H" }, M: { "322": "b" }, N: { "2": "A B" }, O: { "2": "qC" }, P: { "2": "I rC sC tC uC vC wB wC", "132": "xC yC zC 0C pB 1C 2C" }, Q: { "2": "xB" }, R: { "2": "3C" }, S: { "2": "4C" } }, B: 4, C: "WebXR Device API" }; + } +}); + +// node_modules/caniuse-lite/data/features/will-change.js +var require_will_change = __commonJS({ + "node_modules/caniuse-lite/data/features/will-change.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K L G M N O" }, 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 rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 6B qB I r J D E F A B C K L G M N O s t u v w x y z 7B 8B", "194": "2 3 4 5 6 7 8" }, D: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v w KC LC MC NC nB 3B OC oB" }, G: { "1": "VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS will-change property" }; + } +}); + +// node_modules/caniuse-lite/data/features/woff.js +var require_woff = __commonJS({ + "node_modules/caniuse-lite/data/features/woff.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 8B", "2": "6B qB 7B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "I" }, E: { "1": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a nB 3B OC oB", "2": "F B KC LC MC NC" }, G: { "1": "E QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B" }, H: { "2": "jC" }, I: { "1": "H oC pC", "2": "qB kC lC mC nC 4B", "130": "I" }, J: { "1": "D A" }, K: { "1": "B C c nB 3B oB", "2": "A" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "WOFF - Web Open Font Format" }; + } +}); + +// node_modules/caniuse-lite/data/features/woff2.js +var require_woff2 = __commonJS({ + "node_modules/caniuse-lite/data/features/woff2.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F A B 5B" }, B: { "1": "L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "2": "C K" }, C: { "1": "CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB 7B 8B" }, D: { "1": "9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "2": "0 1 2 3 4 5 6 7 8 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "C K L G oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I r J D E F BC vB CC DC EC FC", "132": "A B wB nB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C G M N O s t u v KC LC MC NC nB 3B OC oB" }, G: { "1": "WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "E vB PC 4B QC RC SC TC UC VC" }, H: { "2": "jC" }, I: { "1": "H", "2": "qB I kC lC mC nC 4B oC pC" }, J: { "2": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "2": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 2, C: "WOFF 2.0 - Web Open Font Format" }; + } +}); + +// node_modules/caniuse-lite/data/features/word-break.js +var require_word_break = __commonJS({ + "node_modules/caniuse-lite/data/features/word-break.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "J D E F A B 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB I r J D E F A B C K L 7B 8B" }, D: { "1": "HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "4": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB" }, E: { "1": "F A B C K L G FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "4": "I r J D E BC vB CC DC EC" }, F: { "1": "4 5 6 7 8 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 c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "2": "F B C KC LC MC NC nB 3B OC oB", "4": "0 1 2 3 G M N O s t u v w x y z" }, G: { "1": "UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "4": "E vB PC 4B QC RC SC TC" }, H: { "2": "jC" }, I: { "1": "H", "4": "qB I kC lC mC nC 4B oC pC" }, J: { "4": "D A" }, K: { "1": "c", "2": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "CSS3 word-break" }; + } +}); + +// node_modules/caniuse-lite/data/features/wordwrap.js +var require_wordwrap = __commonJS({ + "node_modules/caniuse-lite/data/features/wordwrap.js"(exports2, module2) { + module2.exports = { A: { A: { "4": "J D E F A B 5B" }, B: { "1": "O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H", "4": "C K L G M N" }, C: { "1": "MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "4": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "4": "I r J D E F A B C K L G M N O s t u v" }, E: { "1": "D E F A B C K L G DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "4": "I r J BC vB CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F KC LC", "4": "B C MC NC nB 3B OC" }, G: { "1": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "4": "vB PC 4B QC RC" }, H: { "4": "jC" }, I: { "1": "H oC pC", "4": "qB I kC lC mC nC 4B" }, J: { "1": "A", "4": "D" }, K: { "1": "c", "4": "A B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "4": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "4": "4C" } }, B: 4, C: "CSS3 Overflow-wrap" }; + } +}); + +// node_modules/caniuse-lite/data/features/x-doc-messaging.js +var require_x_doc_messaging = __commonJS({ + "node_modules/caniuse-lite/data/features/x-doc-messaging.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D 5B", "132": "E F", "260": "A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B", "2": "6B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "BC vB" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB", "2": "F" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "4": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "Cross-document messaging" }; + } +}); + +// node_modules/caniuse-lite/data/features/x-frame-options.js +var require_x_frame_options = __commonJS({ + "node_modules/caniuse-lite/data/features/x-frame-options.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "E F A B", "2": "J D 5B" }, B: { "1": "C K L G M N O", "4": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB", "4": "I r J D E F A B C K L G M N eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "16": "6B qB 7B 8B" }, D: { "4": "0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J D E F A B C K L G M N O s t u v w x y" }, E: { "4": "J D E F A B C K L G CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "16": "I r BC vB" }, F: { "4": "0 1 2 3 4 5 6 7 8 9 C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a OC oB", "16": "F B KC LC MC NC nB 3B" }, G: { "4": "E SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "16": "vB PC 4B QC RC" }, H: { "2": "jC" }, I: { "4": "I H nC 4B oC pC", "16": "qB kC lC mC" }, J: { "4": "D A" }, K: { "4": "c oB", "16": "A B C nB 3B" }, L: { "4": "H" }, M: { "4": "b" }, N: { "1": "A B" }, O: { "4": "qC" }, P: { "4": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "4": "xB" }, R: { "4": "3C" }, S: { "1": "4C" } }, B: 6, C: "X-Frame-Options HTTP header" }; + } +}); + +// node_modules/caniuse-lite/data/features/xhr2.js +var require_xhr2 = __commonJS({ + "node_modules/caniuse-lite/data/features/xhr2.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "J D E F 5B", "132": "A B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "2": "6B qB", "260": "A B", "388": "J D E F", "900": "I r 7B 8B" }, D: { "1": "4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "16": "I r J", "132": "2 3", "388": "0 1 D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "2": "I BC vB", "132": "D DC", "388": "r J CC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 C O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a oB", "2": "F B KC LC MC NC nB 3B OC", "132": "G M N" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "2": "vB PC 4B", "132": "SC", "388": "QC RC" }, H: { "2": "jC" }, I: { "1": "H pC", "2": "kC lC mC", "388": "oC", "900": "qB I nC 4B" }, J: { "132": "A", "388": "D" }, K: { "1": "C c oB", "2": "A B nB 3B" }, L: { "1": "H" }, M: { "1": "b" }, N: { "132": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "XMLHttpRequest advanced features" }; + } +}); + +// node_modules/caniuse-lite/data/features/xhtml.js +var require_xhtml = __commonJS({ + "node_modules/caniuse-lite/data/features/xhtml.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "F A B", "2": "J D E 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "1": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "1": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "1": "jC" }, I: { "1": "qB I H kC lC mC nC 4B oC pC" }, J: { "1": "D A" }, K: { "1": "A B C c nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 1, C: "XHTML served as application/xhtml+xml" }; + } +}); + +// node_modules/caniuse-lite/data/features/xhtmlsmil.js +var require_xhtmlsmil = __commonJS({ + "node_modules/caniuse-lite/data/features/xhtmlsmil.js"(exports2, module2) { + module2.exports = { A: { A: { "2": "F A B 5B", "4": "J D E" }, B: { "2": "C K L G M N O", "8": "P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "8": "0 1 2 3 4 5 6 7 8 9 6B qB I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 7B 8B" }, D: { "8": "0 1 2 3 4 5 6 7 8 9 I r J D E F A B C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC" }, E: { "8": "I r J D E F A B C K L G BC vB CC DC EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC" }, F: { "8": "0 1 2 3 4 5 6 7 8 9 F B C G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a KC LC MC NC nB 3B OC oB" }, G: { "8": "E vB PC 4B QC RC SC TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B" }, H: { "8": "jC" }, I: { "8": "qB I H kC lC mC nC 4B oC pC" }, J: { "8": "D A" }, K: { "8": "A B C c nB 3B oB" }, L: { "8": "H" }, M: { "8": "b" }, N: { "2": "A B" }, O: { "8": "qC" }, P: { "8": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "8": "xB" }, R: { "8": "3C" }, S: { "8": "4C" } }, B: 7, C: "XHTML+SMIL animation" }; + } +}); + +// node_modules/caniuse-lite/data/features/xml-serializer.js +var require_xml_serializer = __commonJS({ + "node_modules/caniuse-lite/data/features/xml-serializer.js"(exports2, module2) { + module2.exports = { A: { A: { "1": "A B", "260": "J D E F 5B" }, B: { "1": "C K L G M N O P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 C K L G M N O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a d e f g h i j k l m n o p q b H uB", "132": "B", "260": "6B qB I r J D 7B 8B", "516": "E F A" }, D: { "1": "4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB rB WB sB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R S T U V W X Y Z a d e f g h i j k l m n o p q b H uB 9B AC", "132": "0 1 2 3 I r J D E F A B C K L G M N O s t u v w x y z" }, E: { "1": "E F A B C K L G EC FC wB nB oB xB GC HC yB zB 0B 1B pB 2B IC JC", "132": "I r J D BC vB CC DC" }, F: { "1": "0 1 2 3 4 5 6 7 8 9 O s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB c ZB aB bB cB dB eB fB gB hB iB jB kB lB mB P Q R tB S T U V W X Y Z a", "16": "F KC", "132": "B C G M N LC MC NC nB 3B OC oB" }, G: { "1": "E TC UC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC yB zB 0B 1B pB 2B", "132": "vB PC 4B QC RC SC" }, H: { "132": "jC" }, I: { "1": "H oC pC", "132": "qB I kC lC mC nC 4B" }, J: { "132": "D A" }, K: { "1": "c", "16": "A", "132": "B C nB 3B oB" }, L: { "1": "H" }, M: { "1": "b" }, N: { "1": "A B" }, O: { "1": "qC" }, P: { "1": "I rC sC tC uC vC wB wC xC yC zC 0C pB 1C 2C" }, Q: { "1": "xB" }, R: { "1": "3C" }, S: { "1": "4C" } }, B: 4, C: "DOM Parsing and Serialization" }; + } +}); + +// node_modules/caniuse-lite/data/features.js +var require_features = __commonJS({ + "node_modules/caniuse-lite/data/features.js"(exports2, module2) { + module2.exports = { "aac": require_aac(), "abortcontroller": require_abortcontroller(), "ac3-ec3": require_ac3_ec3(), "accelerometer": require_accelerometer(), "addeventlistener": require_addeventlistener(), "alternate-stylesheet": require_alternate_stylesheet(), "ambient-light": require_ambient_light(), "apng": require_apng(), "array-find-index": require_array_find_index(), "array-find": require_array_find(), "array-flat": require_array_flat(), "array-includes": require_array_includes(), "arrow-functions": require_arrow_functions(), "asmjs": require_asmjs(), "async-clipboard": require_async_clipboard(), "async-functions": require_async_functions(), "atob-btoa": require_atob_btoa(), "audio-api": require_audio_api(), "audio": require_audio(), "audiotracks": require_audiotracks(), "autofocus": require_autofocus(), "auxclick": require_auxclick(), "av1": require_av1(), "avif": require_avif(), "background-attachment": require_background_attachment(), "background-clip-text": require_background_clip_text(), "background-img-opts": require_background_img_opts(), "background-position-x-y": require_background_position_x_y(), "background-repeat-round-space": require_background_repeat_round_space(), "background-sync": require_background_sync(), "battery-status": require_battery_status(), "beacon": require_beacon(), "beforeafterprint": require_beforeafterprint(), "bigint": require_bigint(), "blobbuilder": require_blobbuilder(), "bloburls": require_bloburls(), "border-image": require_border_image(), "border-radius": require_border_radius(), "broadcastchannel": require_broadcastchannel(), "brotli": require_brotli(), "calc": require_calc(), "canvas-blending": require_canvas_blending(), "canvas-text": require_canvas_text(), "canvas": require_canvas(), "ch-unit": require_ch_unit(), "chacha20-poly1305": require_chacha20_poly1305(), "channel-messaging": require_channel_messaging(), "childnode-remove": require_childnode_remove(), "classlist": require_classlist(), "client-hints-dpr-width-viewport": require_client_hints_dpr_width_viewport(), "clipboard": require_clipboard(), "colr-v1": require_colr_v1(), "colr": require_colr(), "comparedocumentposition": require_comparedocumentposition(), "console-basic": require_console_basic(), "console-time": require_console_time(), "const": require_const(), "constraint-validation": require_constraint_validation(), "contenteditable": require_contenteditable(), "contentsecuritypolicy": require_contentsecuritypolicy(), "contentsecuritypolicy2": require_contentsecuritypolicy2(), "cookie-store-api": require_cookie_store_api(), "cors": require_cors(), "createimagebitmap": require_createimagebitmap(), "credential-management": require_credential_management(), "cryptography": require_cryptography(), "css-all": require_css_all(), "css-animation": require_css_animation(), "css-any-link": require_css_any_link(), "css-appearance": require_css_appearance(), "css-at-counter-style": require_css_at_counter_style(), "css-autofill": require_css_autofill(), "css-backdrop-filter": require_css_backdrop_filter(), "css-background-offsets": require_css_background_offsets(), "css-backgroundblendmode": require_css_backgroundblendmode(), "css-boxdecorationbreak": require_css_boxdecorationbreak(), "css-boxshadow": require_css_boxshadow(), "css-canvas": require_css_canvas(), "css-caret-color": require_css_caret_color(), "css-cascade-layers": require_css_cascade_layers(), "css-case-insensitive": require_css_case_insensitive(), "css-clip-path": require_css_clip_path(), "css-color-adjust": require_css_color_adjust(), "css-color-function": require_css_color_function(), "css-conic-gradients": require_css_conic_gradients(), "css-container-queries": require_css_container_queries(), "css-container-query-units": require_css_container_query_units(), "css-containment": require_css_containment(), "css-content-visibility": require_css_content_visibility(), "css-counters": require_css_counters(), "css-crisp-edges": require_css_crisp_edges(), "css-cross-fade": require_css_cross_fade(), "css-default-pseudo": require_css_default_pseudo(), "css-descendant-gtgt": require_css_descendant_gtgt(), "css-deviceadaptation": require_css_deviceadaptation(), "css-dir-pseudo": require_css_dir_pseudo(), "css-display-contents": require_css_display_contents(), "css-element-function": require_css_element_function(), "css-env-function": require_css_env_function(), "css-exclusions": require_css_exclusions(), "css-featurequeries": require_css_featurequeries(), "css-file-selector-button": require_css_file_selector_button(), "css-filter-function": require_css_filter_function(), "css-filters": require_css_filters(), "css-first-letter": require_css_first_letter(), "css-first-line": require_css_first_line(), "css-fixed": require_css_fixed(), "css-focus-visible": require_css_focus_visible(), "css-focus-within": require_css_focus_within(), "css-font-palette": require_css_font_palette(), "css-font-rendering-controls": require_css_font_rendering_controls(), "css-font-stretch": require_css_font_stretch(), "css-gencontent": require_css_gencontent(), "css-gradients": require_css_gradients(), "css-grid-animation": require_css_grid_animation(), "css-grid": require_css_grid(), "css-hanging-punctuation": require_css_hanging_punctuation(), "css-has": require_css_has(), "css-hyphens": require_css_hyphens(), "css-image-orientation": require_css_image_orientation(), "css-image-set": require_css_image_set(), "css-in-out-of-range": require_css_in_out_of_range(), "css-indeterminate-pseudo": require_css_indeterminate_pseudo(), "css-initial-letter": require_css_initial_letter(), "css-initial-value": require_css_initial_value(), "css-lch-lab": require_css_lch_lab(), "css-letter-spacing": require_css_letter_spacing(), "css-line-clamp": require_css_line_clamp(), "css-logical-props": require_css_logical_props(), "css-marker-pseudo": require_css_marker_pseudo(), "css-masks": require_css_masks(), "css-matches-pseudo": require_css_matches_pseudo(), "css-math-functions": require_css_math_functions(), "css-media-interaction": require_css_media_interaction(), "css-media-range-syntax": require_css_media_range_syntax(), "css-media-resolution": require_css_media_resolution(), "css-media-scripting": require_css_media_scripting(), "css-mediaqueries": require_css_mediaqueries(), "css-mixblendmode": require_css_mixblendmode(), "css-motion-paths": require_css_motion_paths(), "css-namespaces": require_css_namespaces(), "css-nesting": require_css_nesting(), "css-not-sel-list": require_css_not_sel_list(), "css-nth-child-of": require_css_nth_child_of(), "css-opacity": require_css_opacity(), "css-optional-pseudo": require_css_optional_pseudo(), "css-overflow-anchor": require_css_overflow_anchor(), "css-overflow-overlay": require_css_overflow_overlay(), "css-overflow": require_css_overflow(), "css-overscroll-behavior": require_css_overscroll_behavior(), "css-page-break": require_css_page_break(), "css-paged-media": require_css_paged_media(), "css-paint-api": require_css_paint_api(), "css-placeholder-shown": require_css_placeholder_shown(), "css-placeholder": require_css_placeholder(), "css-print-color-adjust": require_css_print_color_adjust(), "css-read-only-write": require_css_read_only_write(), "css-rebeccapurple": require_css_rebeccapurple(), "css-reflections": require_css_reflections(), "css-regions": require_css_regions(), "css-repeating-gradients": require_css_repeating_gradients(), "css-resize": require_css_resize(), "css-revert-value": require_css_revert_value(), "css-rrggbbaa": require_css_rrggbbaa(), "css-scroll-behavior": require_css_scroll_behavior(), "css-scroll-timeline": require_css_scroll_timeline(), "css-scrollbar": require_css_scrollbar(), "css-sel2": require_css_sel2(), "css-sel3": require_css_sel3(), "css-selection": require_css_selection(), "css-shapes": require_css_shapes(), "css-snappoints": require_css_snappoints(), "css-sticky": require_css_sticky(), "css-subgrid": require_css_subgrid(), "css-supports-api": require_css_supports_api(), "css-table": require_css_table(), "css-text-align-last": require_css_text_align_last(), "css-text-indent": require_css_text_indent(), "css-text-justify": require_css_text_justify(), "css-text-orientation": require_css_text_orientation(), "css-text-spacing": require_css_text_spacing(), "css-textshadow": require_css_textshadow(), "css-touch-action": require_css_touch_action(), "css-transitions": require_css_transitions(), "css-unicode-bidi": require_css_unicode_bidi(), "css-unset-value": require_css_unset_value(), "css-variables": require_css_variables(), "css-when-else": require_css_when_else(), "css-widows-orphans": require_css_widows_orphans(), "css-width-stretch": require_css_width_stretch(), "css-writing-mode": require_css_writing_mode(), "css-zoom": require_css_zoom(), "css3-attr": require_css3_attr(), "css3-boxsizing": require_css3_boxsizing(), "css3-colors": require_css3_colors(), "css3-cursors-grab": require_css3_cursors_grab(), "css3-cursors-newer": require_css3_cursors_newer(), "css3-cursors": require_css3_cursors(), "css3-tabsize": require_css3_tabsize(), "currentcolor": require_currentcolor(), "custom-elements": require_custom_elements(), "custom-elementsv1": require_custom_elementsv1(), "customevent": require_customevent(), "datalist": require_datalist(), "dataset": require_dataset(), "datauri": require_datauri(), "date-tolocaledatestring": require_date_tolocaledatestring(), "declarative-shadow-dom": require_declarative_shadow_dom(), "decorators": require_decorators(), "details": require_details(), "deviceorientation": require_deviceorientation(), "devicepixelratio": require_devicepixelratio(), "dialog": require_dialog(), "dispatchevent": require_dispatchevent(), "dnssec": require_dnssec(), "do-not-track": require_do_not_track(), "document-currentscript": require_document_currentscript(), "document-evaluate-xpath": require_document_evaluate_xpath(), "document-execcommand": require_document_execcommand(), "document-policy": require_document_policy(), "document-scrollingelement": require_document_scrollingelement(), "documenthead": require_documenthead(), "dom-manip-convenience": require_dom_manip_convenience(), "dom-range": require_dom_range(), "domcontentloaded": require_domcontentloaded(), "dommatrix": require_dommatrix(), "download": require_download(), "dragndrop": require_dragndrop(), "element-closest": require_element_closest(), "element-from-point": require_element_from_point(), "element-scroll-methods": require_element_scroll_methods(), "eme": require_eme(), "eot": require_eot(), "es5": require_es5(), "es6-class": require_es6_class(), "es6-generators": require_es6_generators(), "es6-module-dynamic-import": require_es6_module_dynamic_import(), "es6-module": require_es6_module(), "es6-number": require_es6_number(), "es6-string-includes": require_es6_string_includes(), "es6": require_es6(), "eventsource": require_eventsource(), "extended-system-fonts": require_extended_system_fonts(), "feature-policy": require_feature_policy(), "fetch": require_fetch(), "fieldset-disabled": require_fieldset_disabled(), "fileapi": require_fileapi(), "filereader": require_filereader(), "filereadersync": require_filereadersync(), "filesystem": require_filesystem(), "flac": require_flac(), "flexbox-gap": require_flexbox_gap(), "flexbox": require_flexbox(), "flow-root": require_flow_root(), "focusin-focusout-events": require_focusin_focusout_events(), "font-family-system-ui": require_font_family_system_ui(), "font-feature": require_font_feature(), "font-kerning": require_font_kerning(), "font-loading": require_font_loading(), "font-size-adjust": require_font_size_adjust(), "font-smooth": require_font_smooth(), "font-unicode-range": require_font_unicode_range(), "font-variant-alternates": require_font_variant_alternates(), "font-variant-numeric": require_font_variant_numeric(), "fontface": require_fontface(), "form-attribute": require_form_attribute(), "form-submit-attributes": require_form_submit_attributes(), "form-validation": require_form_validation(), "forms": require_forms(), "fullscreen": require_fullscreen(), "gamepad": require_gamepad(), "geolocation": require_geolocation(), "getboundingclientrect": require_getboundingclientrect(), "getcomputedstyle": require_getcomputedstyle(), "getelementsbyclassname": require_getelementsbyclassname(), "getrandomvalues": require_getrandomvalues(), "gyroscope": require_gyroscope(), "hardwareconcurrency": require_hardwareconcurrency(), "hashchange": require_hashchange(), "heif": require_heif(), "hevc": require_hevc(), "hidden": require_hidden(), "high-resolution-time": require_high_resolution_time(), "history": require_history(), "html-media-capture": require_html_media_capture(), "html5semantic": require_html5semantic(), "http-live-streaming": require_http_live_streaming(), "http2": require_http2(), "http3": require_http3(), "iframe-sandbox": require_iframe_sandbox(), "iframe-seamless": require_iframe_seamless(), "iframe-srcdoc": require_iframe_srcdoc(), "imagecapture": require_imagecapture(), "ime": require_ime(), "img-naturalwidth-naturalheight": require_img_naturalwidth_naturalheight(), "import-maps": require_import_maps(), "imports": require_imports(), "indeterminate-checkbox": require_indeterminate_checkbox(), "indexeddb": require_indexeddb(), "indexeddb2": require_indexeddb2(), "inline-block": require_inline_block(), "innertext": require_innertext(), "input-autocomplete-onoff": require_input_autocomplete_onoff(), "input-color": require_input_color(), "input-datetime": require_input_datetime(), "input-email-tel-url": require_input_email_tel_url(), "input-event": require_input_event(), "input-file-accept": require_input_file_accept(), "input-file-directory": require_input_file_directory(), "input-file-multiple": require_input_file_multiple(), "input-inputmode": require_input_inputmode(), "input-minlength": require_input_minlength(), "input-number": require_input_number(), "input-pattern": require_input_pattern(), "input-placeholder": require_input_placeholder(), "input-range": require_input_range(), "input-search": require_input_search(), "input-selection": require_input_selection(), "insert-adjacent": require_insert_adjacent(), "insertadjacenthtml": require_insertadjacenthtml(), "internationalization": require_internationalization(), "intersectionobserver-v2": require_intersectionobserver_v2(), "intersectionobserver": require_intersectionobserver(), "intl-pluralrules": require_intl_pluralrules(), "intrinsic-width": require_intrinsic_width(), "jpeg2000": require_jpeg2000(), "jpegxl": require_jpegxl(), "jpegxr": require_jpegxr(), "js-regexp-lookbehind": require_js_regexp_lookbehind(), "json": require_json(), "justify-content-space-evenly": require_justify_content_space_evenly(), "kerning-pairs-ligatures": require_kerning_pairs_ligatures(), "keyboardevent-charcode": require_keyboardevent_charcode(), "keyboardevent-code": require_keyboardevent_code(), "keyboardevent-getmodifierstate": require_keyboardevent_getmodifierstate(), "keyboardevent-key": require_keyboardevent_key(), "keyboardevent-location": require_keyboardevent_location(), "keyboardevent-which": require_keyboardevent_which(), "lazyload": require_lazyload(), "let": require_let(), "link-icon-png": require_link_icon_png(), "link-icon-svg": require_link_icon_svg(), "link-rel-dns-prefetch": require_link_rel_dns_prefetch(), "link-rel-modulepreload": require_link_rel_modulepreload(), "link-rel-preconnect": require_link_rel_preconnect(), "link-rel-prefetch": require_link_rel_prefetch(), "link-rel-preload": require_link_rel_preload(), "link-rel-prerender": require_link_rel_prerender(), "loading-lazy-attr": require_loading_lazy_attr(), "localecompare": require_localecompare(), "magnetometer": require_magnetometer(), "matchesselector": require_matchesselector(), "matchmedia": require_matchmedia(), "mathml": require_mathml(), "maxlength": require_maxlength(), "mdn-css-unicode-bidi-isolate-override": require_mdn_css_unicode_bidi_isolate_override(), "mdn-css-unicode-bidi-isolate": require_mdn_css_unicode_bidi_isolate(), "mdn-css-unicode-bidi-plaintext": require_mdn_css_unicode_bidi_plaintext(), "mdn-text-decoration-color": require_mdn_text_decoration_color(), "mdn-text-decoration-line": require_mdn_text_decoration_line(), "mdn-text-decoration-shorthand": require_mdn_text_decoration_shorthand(), "mdn-text-decoration-style": require_mdn_text_decoration_style(), "media-fragments": require_media_fragments(), "mediacapture-fromelement": require_mediacapture_fromelement(), "mediarecorder": require_mediarecorder(), "mediasource": require_mediasource(), "menu": require_menu(), "meta-theme-color": require_meta_theme_color(), "meter": require_meter(), "midi": require_midi(), "minmaxwh": require_minmaxwh(), "mp3": require_mp3(), "mpeg-dash": require_mpeg_dash(), "mpeg4": require_mpeg4(), "multibackgrounds": require_multibackgrounds(), "multicolumn": require_multicolumn(), "mutation-events": require_mutation_events(), "mutationobserver": require_mutationobserver(), "namevalue-storage": require_namevalue_storage(), "native-filesystem-api": require_native_filesystem_api(), "nav-timing": require_nav_timing(), "netinfo": require_netinfo(), "notifications": require_notifications(), "object-entries": require_object_entries(), "object-fit": require_object_fit(), "object-observe": require_object_observe(), "object-values": require_object_values(), "objectrtc": require_objectrtc(), "offline-apps": require_offline_apps(), "offscreencanvas": require_offscreencanvas(), "ogg-vorbis": require_ogg_vorbis(), "ogv": require_ogv(), "ol-reversed": require_ol_reversed(), "once-event-listener": require_once_event_listener(), "online-status": require_online_status(), "opus": require_opus(), "orientation-sensor": require_orientation_sensor(), "outline": require_outline(), "pad-start-end": require_pad_start_end(), "page-transition-events": require_page_transition_events(), "pagevisibility": require_pagevisibility(), "passive-event-listener": require_passive_event_listener(), "passwordrules": require_passwordrules(), "path2d": require_path2d(), "payment-request": require_payment_request(), "pdf-viewer": require_pdf_viewer(), "permissions-api": require_permissions_api(), "permissions-policy": require_permissions_policy(), "picture-in-picture": require_picture_in_picture(), "picture": require_picture(), "ping": require_ping(), "png-alpha": require_png_alpha(), "pointer-events": require_pointer_events(), "pointer": require_pointer(), "pointerlock": require_pointerlock(), "portals": require_portals(), "prefers-color-scheme": require_prefers_color_scheme(), "prefers-reduced-motion": require_prefers_reduced_motion(), "progress": require_progress(), "promise-finally": require_promise_finally(), "promises": require_promises(), "proximity": require_proximity(), "proxy": require_proxy(), "publickeypinning": require_publickeypinning(), "push-api": require_push_api(), "queryselector": require_queryselector(), "readonly-attr": require_readonly_attr(), "referrer-policy": require_referrer_policy(), "registerprotocolhandler": require_registerprotocolhandler(), "rel-noopener": require_rel_noopener(), "rel-noreferrer": require_rel_noreferrer(), "rellist": require_rellist(), "rem": require_rem(), "requestanimationframe": require_requestanimationframe(), "requestidlecallback": require_requestidlecallback(), "resizeobserver": require_resizeobserver(), "resource-timing": require_resource_timing(), "rest-parameters": require_rest_parameters(), "rtcpeerconnection": require_rtcpeerconnection(), "ruby": require_ruby(), "run-in": require_run_in(), "same-site-cookie-attribute": require_same_site_cookie_attribute(), "screen-orientation": require_screen_orientation(), "script-async": require_script_async(), "script-defer": require_script_defer(), "scrollintoview": require_scrollintoview(), "scrollintoviewifneeded": require_scrollintoviewifneeded(), "sdch": require_sdch(), "selection-api": require_selection_api(), "server-timing": require_server_timing(), "serviceworkers": require_serviceworkers(), "setimmediate": require_setimmediate(), "shadowdom": require_shadowdom(), "shadowdomv1": require_shadowdomv1(), "sharedarraybuffer": require_sharedarraybuffer(), "sharedworkers": require_sharedworkers(), "sni": require_sni(), "spdy": require_spdy(), "speech-recognition": require_speech_recognition(), "speech-synthesis": require_speech_synthesis(), "spellcheck-attribute": require_spellcheck_attribute(), "sql-storage": require_sql_storage(), "srcset": require_srcset(), "stream": require_stream(), "streams": require_streams(), "stricttransportsecurity": require_stricttransportsecurity(), "style-scoped": require_style_scoped(), "subresource-bundling": require_subresource_bundling(), "subresource-integrity": require_subresource_integrity(), "svg-css": require_svg_css(), "svg-filters": require_svg_filters(), "svg-fonts": require_svg_fonts(), "svg-fragment": require_svg_fragment(), "svg-html": require_svg_html(), "svg-html5": require_svg_html5(), "svg-img": require_svg_img(), "svg-smil": require_svg_smil(), "svg": require_svg(), "sxg": require_sxg(), "tabindex-attr": require_tabindex_attr(), "template-literals": require_template_literals(), "template": require_template(), "temporal": require_temporal(), "testfeat": require_testfeat(), "text-decoration": require_text_decoration(), "text-emphasis": require_text_emphasis(), "text-overflow": require_text_overflow(), "text-size-adjust": require_text_size_adjust(), "text-stroke": require_text_stroke(), "textcontent": require_textcontent(), "textencoder": require_textencoder(), "tls1-1": require_tls1_1(), "tls1-2": require_tls1_2(), "tls1-3": require_tls1_3(), "touch": require_touch(), "transforms2d": require_transforms2d(), "transforms3d": require_transforms3d(), "trusted-types": require_trusted_types(), "ttf": require_ttf(), "typedarrays": require_typedarrays(), "u2f": require_u2f(), "unhandledrejection": require_unhandledrejection(), "upgradeinsecurerequests": require_upgradeinsecurerequests(), "url-scroll-to-text-fragment": require_url_scroll_to_text_fragment(), "url": require_url(), "urlsearchparams": require_urlsearchparams(), "use-strict": require_use_strict(), "user-select-none": require_user_select_none(), "user-timing": require_user_timing(), "variable-fonts": require_variable_fonts(), "vector-effect": require_vector_effect(), "vibration": require_vibration(), "video": require_video(), "videotracks": require_videotracks(), "viewport-unit-variants": require_viewport_unit_variants(), "viewport-units": require_viewport_units(), "wai-aria": require_wai_aria(), "wake-lock": require_wake_lock(), "wasm": require_wasm(), "wav": require_wav(), "wbr-element": require_wbr_element(), "web-animation": require_web_animation(), "web-app-manifest": require_web_app_manifest(), "web-bluetooth": require_web_bluetooth(), "web-serial": require_web_serial(), "web-share": require_web_share(), "webauthn": require_webauthn(), "webcodecs": require_webcodecs(), "webgl": require_webgl(), "webgl2": require_webgl2(), "webgpu": require_webgpu(), "webhid": require_webhid(), "webkit-user-drag": require_webkit_user_drag(), "webm": require_webm(), "webnfc": require_webnfc(), "webp": require_webp(), "websockets": require_websockets(), "webtransport": require_webtransport(), "webusb": require_webusb(), "webvr": require_webvr(), "webvtt": require_webvtt(), "webworkers": require_webworkers(), "webxr": require_webxr(), "will-change": require_will_change(), "woff": require_woff(), "woff2": require_woff2(), "word-break": require_word_break(), "wordwrap": require_wordwrap(), "x-doc-messaging": require_x_doc_messaging(), "x-frame-options": require_x_frame_options(), "xhr2": require_xhr2(), "xhtml": require_xhtml(), "xhtmlsmil": require_xhtmlsmil(), "xml-serializer": require_xml_serializer() }; + } +}); + +// node_modules/caniuse-lite/dist/unpacker/features.js +var require_features2 = __commonJS({ + "node_modules/caniuse-lite/dist/unpacker/features.js"(exports2, module2) { + module2.exports.features = require_features(); + } +}); + +// node_modules/caniuse-lite/dist/unpacker/index.js +var require_unpacker = __commonJS({ + "node_modules/caniuse-lite/dist/unpacker/index.js"(exports2, module2) { + module2.exports.agents = require_agents2().agents; + module2.exports.feature = require_feature(); + module2.exports.features = require_features2().features; + module2.exports.region = require_region(); + } +}); + +// node_modules/autoprefixer/lib/utils.js +var require_utils = __commonJS({ + "node_modules/autoprefixer/lib/utils.js"(exports2, module2) { + var { list } = require_postcss(); + module2.exports.error = function(text) { + let err = new Error(text); + err.autoprefixer = true; + throw err; + }; + module2.exports.uniq = function(array) { + return [...new Set(array)]; + }; + module2.exports.removeNote = function(string) { + if (!string.includes(" ")) { + return string; + } + return string.split(" ")[0]; + }; + module2.exports.escapeRegexp = function(string) { + return string.replace(/[$()*+-.?[\\\]^{|}]/g, "\\$&"); + }; + module2.exports.regexp = function(word, escape = true) { + if (escape) { + word = this.escapeRegexp(word); + } + return new RegExp(`(^|[\\s,(])(${word}($|[\\s(,]))`, "gi"); + }; + module2.exports.editList = function(value, callback) { + let origin = list.comma(value); + let changed = callback(origin, []); + if (origin === changed) { + return value; + } + let join = value.match(/,\s*/); + join = join ? join[0] : ", "; + return changed.join(join); + }; + module2.exports.splitSelector = function(selector) { + return list.comma(selector).map((i) => { + return list.space(i).map((k) => { + return k.split(/(?=\.|#)/g); + }); + }); + }; + module2.exports.isPureNumber = function(value) { + if (typeof value === "number") { + return true; + } + if (typeof value === "string") { + return /^[0-9]+$/.test(value); + } + return false; + }; + } +}); + +// node_modules/autoprefixer/lib/browsers.js +var require_browsers3 = __commonJS({ + "node_modules/autoprefixer/lib/browsers.js"(exports2, module2) { + var browserslist = require_browserslist(); + var agents = require_unpacker().agents; + var utils = require_utils(); + var Browsers = class { + static prefixes() { + if (this.prefixesCache) { + return this.prefixesCache; + } + this.prefixesCache = []; + for (let name in agents) { + this.prefixesCache.push(`-${agents[name].prefix}-`); + } + this.prefixesCache = utils.uniq(this.prefixesCache).sort((a, b) => b.length - a.length); + return this.prefixesCache; + } + static withPrefix(value) { + if (!this.prefixesRegexp) { + this.prefixesRegexp = new RegExp(this.prefixes().join("|")); + } + return this.prefixesRegexp.test(value); + } + constructor(data, requirements, options, browserslistOpts) { + this.data = data; + this.options = options || {}; + this.browserslistOpts = browserslistOpts || {}; + this.selected = this.parse(requirements); + } + parse(requirements) { + let opts = {}; + for (let i in this.browserslistOpts) { + opts[i] = this.browserslistOpts[i]; + } + opts.path = this.options.from; + return browserslist(requirements, opts); + } + prefix(browser) { + let [name, version] = browser.split(" "); + let data = this.data[name]; + let prefix = data.prefix_exceptions && data.prefix_exceptions[version]; + if (!prefix) { + prefix = data.prefix; + } + return `-${prefix}-`; + } + isSelected(browser) { + return this.selected.includes(browser); + } + }; + module2.exports = Browsers; + } +}); + +// node_modules/autoprefixer/lib/vendor.js +var require_vendor = __commonJS({ + "node_modules/autoprefixer/lib/vendor.js"(exports2, module2) { + module2.exports = { + prefix(prop) { + let match = prop.match(/^(-\w+-)/); + if (match) { + return match[0]; + } + return ""; + }, + unprefixed(prop) { + return prop.replace(/^-\w+-/, ""); + } + }; + } +}); + +// node_modules/autoprefixer/lib/prefixer.js +var require_prefixer = __commonJS({ + "node_modules/autoprefixer/lib/prefixer.js"(exports2, module2) { + var Browsers = require_browsers3(); + var vendor = require_vendor(); + var utils = require_utils(); + function clone(obj, parent) { + let cloned = new obj.constructor(); + for (let i of Object.keys(obj || {})) { + let value = obj[i]; + if (i === "parent" && typeof value === "object") { + if (parent) { + cloned[i] = parent; + } + } else if (i === "source" || i === null) { + cloned[i] = value; + } else if (Array.isArray(value)) { + cloned[i] = value.map((x) => clone(x, cloned)); + } else if (i !== "_autoprefixerPrefix" && i !== "_autoprefixerValues" && i !== "proxyCache") { + if (typeof value === "object" && value !== null) { + value = clone(value, cloned); + } + cloned[i] = value; + } + } + return cloned; + } + var Prefixer = class { + static hack(klass) { + if (!this.hacks) { + this.hacks = {}; + } + return klass.names.map((name) => { + this.hacks[name] = klass; + return this.hacks[name]; + }); + } + static load(name, prefixes, all) { + let Klass = this.hacks && this.hacks[name]; + if (Klass) { + return new Klass(name, prefixes, all); + } else { + return new this(name, prefixes, all); + } + } + static clone(node, overrides) { + let cloned = clone(node); + for (let name in overrides) { + cloned[name] = overrides[name]; + } + return cloned; + } + constructor(name, prefixes, all) { + this.prefixes = prefixes; + this.name = name; + this.all = all; + } + parentPrefix(node) { + let prefix; + if (typeof node._autoprefixerPrefix !== "undefined") { + prefix = node._autoprefixerPrefix; + } else if (node.type === "decl" && node.prop[0] === "-") { + prefix = vendor.prefix(node.prop); + } else if (node.type === "root") { + prefix = false; + } else if (node.type === "rule" && node.selector.includes(":-") && /:(-\w+-)/.test(node.selector)) { + prefix = node.selector.match(/:(-\w+-)/)[1]; + } else if (node.type === "atrule" && node.name[0] === "-") { + prefix = vendor.prefix(node.name); + } else { + prefix = this.parentPrefix(node.parent); + } + if (!Browsers.prefixes().includes(prefix)) { + prefix = false; + } + node._autoprefixerPrefix = prefix; + return node._autoprefixerPrefix; + } + process(node, result) { + if (!this.check(node)) { + return void 0; + } + let parent = this.parentPrefix(node); + let prefixes = this.prefixes.filter( + (prefix) => !parent || parent === utils.removeNote(prefix) + ); + let added = []; + for (let prefix of prefixes) { + if (this.add(node, prefix, added.concat([prefix]), result)) { + added.push(prefix); + } + } + return added; + } + clone(node, overrides) { + return Prefixer.clone(node, overrides); + } + }; + module2.exports = Prefixer; + } +}); + +// node_modules/autoprefixer/lib/declaration.js +var require_declaration2 = __commonJS({ + "node_modules/autoprefixer/lib/declaration.js"(exports2, module2) { + var Prefixer = require_prefixer(); + var Browsers = require_browsers3(); + var utils = require_utils(); + var Declaration = class extends Prefixer { + check() { + return true; + } + prefixed(prop, prefix) { + return prefix + prop; + } + normalize(prop) { + return prop; + } + otherPrefixes(value, prefix) { + for (let other of Browsers.prefixes()) { + if (other === prefix) { + continue; + } + if (value.includes(other)) { + return value.replace(/var\([^)]+\)/, "").includes(other); + } + } + return false; + } + set(decl, prefix) { + decl.prop = this.prefixed(decl.prop, prefix); + return decl; + } + needCascade(decl) { + if (!decl._autoprefixerCascade) { + decl._autoprefixerCascade = this.all.options.cascade !== false && decl.raw("before").includes("\n"); + } + return decl._autoprefixerCascade; + } + maxPrefixed(prefixes, decl) { + if (decl._autoprefixerMax) { + return decl._autoprefixerMax; + } + let max = 0; + for (let prefix of prefixes) { + prefix = utils.removeNote(prefix); + if (prefix.length > max) { + max = prefix.length; + } + } + decl._autoprefixerMax = max; + return decl._autoprefixerMax; + } + calcBefore(prefixes, decl, prefix = "") { + let max = this.maxPrefixed(prefixes, decl); + let diff = max - utils.removeNote(prefix).length; + let before = decl.raw("before"); + if (diff > 0) { + before += Array(diff).fill(" ").join(""); + } + return before; + } + restoreBefore(decl) { + let lines = decl.raw("before").split("\n"); + let min = lines[lines.length - 1]; + this.all.group(decl).up((prefixed) => { + let array = prefixed.raw("before").split("\n"); + let last = array[array.length - 1]; + if (last.length < min.length) { + min = last; + } + }); + lines[lines.length - 1] = min; + decl.raws.before = lines.join("\n"); + } + insert(decl, prefix, prefixes) { + let cloned = this.set(this.clone(decl), prefix); + if (!cloned) + return void 0; + let already = decl.parent.some( + (i) => i.prop === cloned.prop && i.value === cloned.value + ); + if (already) { + return void 0; + } + if (this.needCascade(decl)) { + cloned.raws.before = this.calcBefore(prefixes, decl, prefix); + } + return decl.parent.insertBefore(decl, cloned); + } + isAlready(decl, prefixed) { + let already = this.all.group(decl).up((i) => i.prop === prefixed); + if (!already) { + already = this.all.group(decl).down((i) => i.prop === prefixed); + } + return already; + } + add(decl, prefix, prefixes, result) { + let prefixed = this.prefixed(decl.prop, prefix); + if (this.isAlready(decl, prefixed) || this.otherPrefixes(decl.value, prefix)) { + return void 0; + } + return this.insert(decl, prefix, prefixes, result); + } + process(decl, result) { + if (!this.needCascade(decl)) { + super.process(decl, result); + return; + } + let prefixes = super.process(decl, result); + if (!prefixes || !prefixes.length) { + return; + } + this.restoreBefore(decl); + decl.raws.before = this.calcBefore(prefixes, decl); + } + old(prop, prefix) { + return [this.prefixed(prop, prefix)]; + } + }; + module2.exports = Declaration; + } +}); + +// node_modules/fraction.js/fraction.js +var require_fraction = __commonJS({ + "node_modules/fraction.js/fraction.js"(exports2, module2) { + (function(root) { + "use strict"; + var MAX_CYCLE_LEN = 2e3; + var P = { + "s": 1, + "n": 0, + "d": 1 + }; + function assign(n, s) { + if (isNaN(n = parseInt(n, 10))) { + throw Fraction["InvalidParameter"]; + } + return n * s; + } + function newFraction(n, d) { + if (d === 0) { + throw Fraction["DivisionByZero"]; + } + var f = Object.create(Fraction.prototype); + f["s"] = n < 0 ? -1 : 1; + n = n < 0 ? -n : n; + var a = gcd(n, d); + f["n"] = n / a; + f["d"] = d / a; + return f; + } + function factorize(num) { + var factors = {}; + var n = num; + var i = 2; + var s = 4; + while (s <= n) { + while (n % i === 0) { + n /= i; + factors[i] = (factors[i] || 0) + 1; + } + s += 1 + 2 * i++; + } + if (n !== num) { + if (n > 1) + factors[n] = (factors[n] || 0) + 1; + } else { + factors[num] = (factors[num] || 0) + 1; + } + return factors; + } + var parse = function(p1, p2) { + var n = 0, d = 1, s = 1; + var v = 0, w = 0, x = 0, y = 1, z = 1; + var A = 0, B = 1; + var C = 1, D = 1; + var N = 1e7; + var M; + if (p1 === void 0 || p1 === null) { + } else if (p2 !== void 0) { + n = p1; + d = p2; + s = n * d; + if (n % 1 !== 0 || d % 1 !== 0) { + throw Fraction["NonIntegerParameter"]; + } + } else + switch (typeof p1) { + case "object": { + if ("d" in p1 && "n" in p1) { + n = p1["n"]; + d = p1["d"]; + if ("s" in p1) + n *= p1["s"]; + } else if (0 in p1) { + n = p1[0]; + if (1 in p1) + d = p1[1]; + } else { + throw Fraction["InvalidParameter"]; + } + s = n * d; + break; + } + case "number": { + if (p1 < 0) { + s = p1; + p1 = -p1; + } + if (p1 % 1 === 0) { + n = p1; + } else if (p1 > 0) { + if (p1 >= 1) { + z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10)); + p1 /= z; + } + while (B <= N && D <= N) { + M = (A + C) / (B + D); + if (p1 === M) { + if (B + D <= N) { + n = A + C; + d = B + D; + } else if (D > B) { + n = C; + d = D; + } else { + n = A; + d = B; + } + break; + } else { + if (p1 > M) { + A += C; + B += D; + } else { + C += A; + D += B; + } + if (B > N) { + n = C; + d = D; + } else { + n = A; + d = B; + } + } + } + n *= z; + } else if (isNaN(p1) || isNaN(p2)) { + d = n = NaN; + } + break; + } + case "string": { + B = p1.match(/\d+|./g); + if (B === null) + throw Fraction["InvalidParameter"]; + if (B[A] === "-") { + s = -1; + A++; + } else if (B[A] === "+") { + A++; + } + if (B.length === A + 1) { + w = assign(B[A++], s); + } else if (B[A + 1] === "." || B[A] === ".") { + if (B[A] !== ".") { + v = assign(B[A++], s); + } + A++; + if (A + 1 === B.length || B[A + 1] === "(" && B[A + 3] === ")" || B[A + 1] === "'" && B[A + 3] === "'") { + w = assign(B[A], s); + y = Math.pow(10, B[A].length); + A++; + } + if (B[A] === "(" && B[A + 2] === ")" || B[A] === "'" && B[A + 2] === "'") { + x = assign(B[A + 1], s); + z = Math.pow(10, B[A + 1].length) - 1; + A += 3; + } + } else if (B[A + 1] === "/" || B[A + 1] === ":") { + w = assign(B[A], s); + y = assign(B[A + 2], 1); + A += 3; + } else if (B[A + 3] === "/" && B[A + 1] === " ") { + v = assign(B[A], s); + w = assign(B[A + 2], s); + y = assign(B[A + 4], 1); + A += 5; + } + if (B.length <= A) { + d = y * z; + s = n = x + d * v + z * w; + break; + } + } + default: + throw Fraction["InvalidParameter"]; + } + if (d === 0) { + throw Fraction["DivisionByZero"]; + } + P["s"] = s < 0 ? -1 : 1; + P["n"] = Math.abs(n); + P["d"] = Math.abs(d); + }; + function modpow(b, e, m) { + var r = 1; + for (; e > 0; b = b * b % m, e >>= 1) { + if (e & 1) { + r = r * b % m; + } + } + return r; + } + function cycleLen(n, d) { + for (; d % 2 === 0; d /= 2) { + } + for (; d % 5 === 0; d /= 5) { + } + if (d === 1) + return 0; + var rem = 10 % d; + var t = 1; + for (; rem !== 1; t++) { + rem = rem * 10 % d; + if (t > MAX_CYCLE_LEN) + return 0; + } + return t; + } + function cycleStart(n, d, len) { + var rem1 = 1; + var rem2 = modpow(10, len, d); + for (var t = 0; t < 300; t++) { + if (rem1 === rem2) + return t; + rem1 = rem1 * 10 % d; + rem2 = rem2 * 10 % d; + } + return 0; + } + function gcd(a, b) { + if (!a) + return b; + if (!b) + return a; + while (1) { + a %= b; + if (!a) + return b; + b %= a; + if (!b) + return a; + } + } + ; + function Fraction(a, b) { + parse(a, b); + if (this instanceof Fraction) { + a = gcd(P["d"], P["n"]); + this["s"] = P["s"]; + this["n"] = P["n"] / a; + this["d"] = P["d"] / a; + } else { + return newFraction(P["s"] * P["n"], P["d"]); + } + } + Fraction["DivisionByZero"] = new Error("Division by Zero"); + Fraction["InvalidParameter"] = new Error("Invalid argument"); + Fraction["NonIntegerParameter"] = new Error("Parameters must be integer"); + Fraction.prototype = { + "s": 1, + "n": 0, + "d": 1, + "abs": function() { + return newFraction(this["n"], this["d"]); + }, + "neg": function() { + return newFraction(-this["s"] * this["n"], this["d"]); + }, + "add": function(a, b) { + parse(a, b); + return newFraction( + this["s"] * this["n"] * P["d"] + P["s"] * this["d"] * P["n"], + this["d"] * P["d"] + ); + }, + "sub": function(a, b) { + parse(a, b); + return newFraction( + this["s"] * this["n"] * P["d"] - P["s"] * this["d"] * P["n"], + this["d"] * P["d"] + ); + }, + "mul": function(a, b) { + parse(a, b); + return newFraction( + this["s"] * P["s"] * this["n"] * P["n"], + this["d"] * P["d"] + ); + }, + "div": function(a, b) { + parse(a, b); + return newFraction( + this["s"] * P["s"] * this["n"] * P["d"], + this["d"] * P["n"] + ); + }, + "clone": function() { + return newFraction(this["s"] * this["n"], this["d"]); + }, + "mod": function(a, b) { + if (isNaN(this["n"]) || isNaN(this["d"])) { + return new Fraction(NaN); + } + if (a === void 0) { + return newFraction(this["s"] * this["n"] % this["d"], 1); + } + parse(a, b); + if (0 === P["n"] && 0 === this["d"]) { + throw Fraction["DivisionByZero"]; + } + return newFraction( + this["s"] * (P["d"] * this["n"]) % (P["n"] * this["d"]), + P["d"] * this["d"] + ); + }, + "gcd": function(a, b) { + parse(a, b); + return newFraction(gcd(P["n"], this["n"]) * gcd(P["d"], this["d"]), P["d"] * this["d"]); + }, + "lcm": function(a, b) { + parse(a, b); + if (P["n"] === 0 && this["n"] === 0) { + return newFraction(0, 1); + } + return newFraction(P["n"] * this["n"], gcd(P["n"], this["n"]) * gcd(P["d"], this["d"])); + }, + "ceil": function(places) { + places = Math.pow(10, places || 0); + if (isNaN(this["n"]) || isNaN(this["d"])) { + return new Fraction(NaN); + } + return newFraction(Math.ceil(places * this["s"] * this["n"] / this["d"]), places); + }, + "floor": function(places) { + places = Math.pow(10, places || 0); + if (isNaN(this["n"]) || isNaN(this["d"])) { + return new Fraction(NaN); + } + return newFraction(Math.floor(places * this["s"] * this["n"] / this["d"]), places); + }, + "round": function(places) { + places = Math.pow(10, places || 0); + if (isNaN(this["n"]) || isNaN(this["d"])) { + return new Fraction(NaN); + } + return newFraction(Math.round(places * this["s"] * this["n"] / this["d"]), places); + }, + "inverse": function() { + return newFraction(this["s"] * this["d"], this["n"]); + }, + "pow": function(a, b) { + parse(a, b); + if (P["d"] === 1) { + if (P["s"] < 0) { + return newFraction(Math.pow(this["s"] * this["d"], P["n"]), Math.pow(this["n"], P["n"])); + } else { + return newFraction(Math.pow(this["s"] * this["n"], P["n"]), Math.pow(this["d"], P["n"])); + } + } + if (this["s"] < 0) + return null; + var N = factorize(this["n"]); + var D = factorize(this["d"]); + var n = 1; + var d = 1; + for (var k in N) { + if (k === "1") + continue; + if (k === "0") { + n = 0; + break; + } + N[k] *= P["n"]; + if (N[k] % P["d"] === 0) { + N[k] /= P["d"]; + } else + return null; + n *= Math.pow(k, N[k]); + } + for (var k in D) { + if (k === "1") + continue; + D[k] *= P["n"]; + if (D[k] % P["d"] === 0) { + D[k] /= P["d"]; + } else + return null; + d *= Math.pow(k, D[k]); + } + if (P["s"] < 0) { + return newFraction(d, n); + } + return newFraction(n, d); + }, + "equals": function(a, b) { + parse(a, b); + return this["s"] * this["n"] * P["d"] === P["s"] * P["n"] * this["d"]; + }, + "compare": function(a, b) { + parse(a, b); + var t = this["s"] * this["n"] * P["d"] - P["s"] * P["n"] * this["d"]; + return (0 < t) - (t < 0); + }, + "simplify": function(eps) { + if (isNaN(this["n"]) || isNaN(this["d"])) { + return this; + } + eps = eps || 1e-3; + var thisABS = this["abs"](); + var cont = thisABS["toContinued"](); + for (var i = 1; i < cont.length; i++) { + var s = newFraction(cont[i - 1], 1); + for (var k = i - 2; k >= 0; k--) { + s = s["inverse"]()["add"](cont[k]); + } + if (s["sub"](thisABS)["abs"]().valueOf() < eps) { + return s["mul"](this["s"]); + } + } + return this; + }, + "divisible": function(a, b) { + parse(a, b); + return !(!(P["n"] * this["d"]) || this["n"] * P["d"] % (P["n"] * this["d"])); + }, + "valueOf": function() { + return this["s"] * this["n"] / this["d"]; + }, + "toFraction": function(excludeWhole) { + var whole, str = ""; + var n = this["n"]; + var d = this["d"]; + if (this["s"] < 0) { + str += "-"; + } + if (d === 1) { + str += n; + } else { + if (excludeWhole && (whole = Math.floor(n / d)) > 0) { + str += whole; + str += " "; + n %= d; + } + str += n; + str += "/"; + str += d; + } + return str; + }, + "toLatex": function(excludeWhole) { + var whole, str = ""; + var n = this["n"]; + var d = this["d"]; + if (this["s"] < 0) { + str += "-"; + } + if (d === 1) { + str += n; + } else { + if (excludeWhole && (whole = Math.floor(n / d)) > 0) { + str += whole; + n %= d; + } + str += "\\frac{"; + str += n; + str += "}{"; + str += d; + str += "}"; + } + return str; + }, + "toContinued": function() { + var t; + var a = this["n"]; + var b = this["d"]; + var res = []; + if (isNaN(a) || isNaN(b)) { + return res; + } + do { + res.push(Math.floor(a / b)); + t = a % b; + a = b; + b = t; + } while (a !== 1); + return res; + }, + "toString": function(dec) { + var N = this["n"]; + var D = this["d"]; + if (isNaN(N) || isNaN(D)) { + return "NaN"; + } + dec = dec || 15; + var cycLen = cycleLen(N, D); + var cycOff = cycleStart(N, D, cycLen); + var str = this["s"] < 0 ? "-" : ""; + str += N / D | 0; + N %= D; + N *= 10; + if (N) + str += "."; + if (cycLen) { + for (var i = cycOff; i--; ) { + str += N / D | 0; + N %= D; + N *= 10; + } + str += "("; + for (var i = cycLen; i--; ) { + str += N / D | 0; + N %= D; + N *= 10; + } + str += ")"; + } else { + for (var i = dec; N && i--; ) { + str += N / D | 0; + N %= D; + N *= 10; + } + } + return str; + } + }; + if (typeof define === "function" && define["amd"]) { + define([], function() { + return Fraction; + }); + } else if (typeof exports2 === "object") { + Object.defineProperty(Fraction, "__esModule", { "value": true }); + Fraction["default"] = Fraction; + Fraction["Fraction"] = Fraction; + module2["exports"] = Fraction; + } else { + root["Fraction"] = Fraction; + } + })(exports2); + } +}); + +// node_modules/autoprefixer/lib/resolution.js +var require_resolution = __commonJS({ + "node_modules/autoprefixer/lib/resolution.js"(exports2, module2) { + var FractionJs = require_fraction(); + var Prefixer = require_prefixer(); + var utils = require_utils(); + var REGEXP = /(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpcm|dpi|x)/gi; + var SPLIT = /(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpcm|dpi|x)/i; + var Resolution = class extends Prefixer { + prefixName(prefix, name) { + if (prefix === "-moz-") { + return name + "--moz-device-pixel-ratio"; + } else { + return prefix + name + "-device-pixel-ratio"; + } + } + prefixQuery(prefix, name, colon, value, units) { + value = new FractionJs(value); + if (units === "dpi") { + value = value.div(96); + } else if (units === "dpcm") { + value = value.mul(2.54).div(96); + } + value = value.simplify(); + if (prefix === "-o-") { + value = value.n + "/" + value.d; + } + return this.prefixName(prefix, name) + colon + value; + } + clean(rule) { + if (!this.bad) { + this.bad = []; + for (let prefix of this.prefixes) { + this.bad.push(this.prefixName(prefix, "min")); + this.bad.push(this.prefixName(prefix, "max")); + } + } + rule.params = utils.editList(rule.params, (queries) => { + return queries.filter((query) => this.bad.every((i) => !query.includes(i))); + }); + } + process(rule) { + let parent = this.parentPrefix(rule); + let prefixes = parent ? [parent] : this.prefixes; + rule.params = utils.editList(rule.params, (origin, prefixed) => { + for (let query of origin) { + if (!query.includes("min-resolution") && !query.includes("max-resolution")) { + prefixed.push(query); + continue; + } + for (let prefix of prefixes) { + let processed = query.replace(REGEXP, (str) => { + let parts = str.match(SPLIT); + return this.prefixQuery( + prefix, + parts[1], + parts[2], + parts[3], + parts[4] + ); + }); + prefixed.push(processed); + } + prefixed.push(query); + } + return utils.uniq(prefixed); + }); + } + }; + module2.exports = Resolution; + } +}); + +// node_modules/autoprefixer/lib/transition.js +var require_transition = __commonJS({ + "node_modules/autoprefixer/lib/transition.js"(exports2, module2) { + var { list } = require_postcss(); + var parser = require_lib(); + var Browsers = require_browsers3(); + var vendor = require_vendor(); + var Transition = class { + constructor(prefixes) { + this.props = ["transition", "transition-property"]; + this.prefixes = prefixes; + } + add(decl, result) { + let prefix, prop; + let add = this.prefixes.add[decl.prop]; + let vendorPrefixes = this.ruleVendorPrefixes(decl); + let declPrefixes = vendorPrefixes || add && add.prefixes || []; + let params = this.parse(decl.value); + let names = params.map((i) => this.findProp(i)); + let added = []; + if (names.some((i) => i[0] === "-")) { + return; + } + for (let param of params) { + prop = this.findProp(param); + if (prop[0] === "-") + continue; + let prefixer = this.prefixes.add[prop]; + if (!prefixer || !prefixer.prefixes) + continue; + for (prefix of prefixer.prefixes) { + if (vendorPrefixes && !vendorPrefixes.some((p) => prefix.includes(p))) { + continue; + } + let prefixed = this.prefixes.prefixed(prop, prefix); + if (prefixed !== "-ms-transform" && !names.includes(prefixed)) { + if (!this.disabled(prop, prefix)) { + added.push(this.clone(prop, prefixed, param)); + } + } + } + } + params = params.concat(added); + let value = this.stringify(params); + let webkitClean = this.stringify( + this.cleanFromUnprefixed(params, "-webkit-") + ); + if (declPrefixes.includes("-webkit-")) { + this.cloneBefore(decl, `-webkit-${decl.prop}`, webkitClean); + } + this.cloneBefore(decl, decl.prop, webkitClean); + if (declPrefixes.includes("-o-")) { + let operaClean = this.stringify(this.cleanFromUnprefixed(params, "-o-")); + this.cloneBefore(decl, `-o-${decl.prop}`, operaClean); + } + for (prefix of declPrefixes) { + if (prefix !== "-webkit-" && prefix !== "-o-") { + let prefixValue = this.stringify( + this.cleanOtherPrefixes(params, prefix) + ); + this.cloneBefore(decl, prefix + decl.prop, prefixValue); + } + } + if (value !== decl.value && !this.already(decl, decl.prop, value)) { + this.checkForWarning(result, decl); + decl.cloneBefore(); + decl.value = value; + } + } + findProp(param) { + let prop = param[0].value; + if (/^\d/.test(prop)) { + for (let [i, token] of param.entries()) { + if (i !== 0 && token.type === "word") { + return token.value; + } + } + } + return prop; + } + already(decl, prop, value) { + return decl.parent.some((i) => i.prop === prop && i.value === value); + } + cloneBefore(decl, prop, value) { + if (!this.already(decl, prop, value)) { + decl.cloneBefore({ prop, value }); + } + } + checkForWarning(result, decl) { + if (decl.prop !== "transition-property") { + return; + } + let isPrefixed = false; + let hasAssociatedProp = false; + decl.parent.each((i) => { + if (i.type !== "decl") { + return void 0; + } + if (i.prop.indexOf("transition-") !== 0) { + return void 0; + } + let values = list.comma(i.value); + if (i.prop === "transition-property") { + values.forEach((value) => { + let lookup = this.prefixes.add[value]; + if (lookup && lookup.prefixes && lookup.prefixes.length > 0) { + isPrefixed = true; + } + }); + return void 0; + } + hasAssociatedProp = hasAssociatedProp || values.length > 1; + return false; + }); + if (isPrefixed && hasAssociatedProp) { + decl.warn( + result, + "Replace transition-property to transition, because Autoprefixer could not support any cases of transition-property and other transition-*" + ); + } + } + remove(decl) { + let params = this.parse(decl.value); + params = params.filter((i) => { + let prop = this.prefixes.remove[this.findProp(i)]; + return !prop || !prop.remove; + }); + let value = this.stringify(params); + if (decl.value === value) { + return; + } + if (params.length === 0) { + decl.remove(); + return; + } + let double = decl.parent.some((i) => { + return i.prop === decl.prop && i.value === value; + }); + let smaller = decl.parent.some((i) => { + return i !== decl && i.prop === decl.prop && i.value.length > value.length; + }); + if (double || smaller) { + decl.remove(); + return; + } + decl.value = value; + } + parse(value) { + let ast = parser(value); + let result = []; + let param = []; + for (let node of ast.nodes) { + param.push(node); + if (node.type === "div" && node.value === ",") { + result.push(param); + param = []; + } + } + result.push(param); + return result.filter((i) => i.length > 0); + } + stringify(params) { + if (params.length === 0) { + return ""; + } + let nodes = []; + for (let param of params) { + if (param[param.length - 1].type !== "div") { + param.push(this.div(params)); + } + nodes = nodes.concat(param); + } + if (nodes[0].type === "div") { + nodes = nodes.slice(1); + } + if (nodes[nodes.length - 1].type === "div") { + nodes = nodes.slice(0, -2 + 1 || void 0); + } + return parser.stringify({ nodes }); + } + clone(origin, name, param) { + let result = []; + let changed = false; + for (let i of param) { + if (!changed && i.type === "word" && i.value === origin) { + result.push({ type: "word", value: name }); + changed = true; + } else { + result.push(i); + } + } + return result; + } + div(params) { + for (let param of params) { + for (let node of param) { + if (node.type === "div" && node.value === ",") { + return node; + } + } + } + return { type: "div", value: ",", after: " " }; + } + cleanOtherPrefixes(params, prefix) { + return params.filter((param) => { + let current = vendor.prefix(this.findProp(param)); + return current === "" || current === prefix; + }); + } + cleanFromUnprefixed(params, prefix) { + let remove = params.map((i) => this.findProp(i)).filter((i) => i.slice(0, prefix.length) === prefix).map((i) => this.prefixes.unprefixed(i)); + let result = []; + for (let param of params) { + let prop = this.findProp(param); + let p = vendor.prefix(prop); + if (!remove.includes(prop) && (p === prefix || p === "")) { + result.push(param); + } + } + return result; + } + disabled(prop, prefix) { + let other = ["order", "justify-content", "align-self", "align-content"]; + if (prop.includes("flex") || other.includes(prop)) { + if (this.prefixes.options.flexbox === false) { + return true; + } + if (this.prefixes.options.flexbox === "no-2009") { + return prefix.includes("2009"); + } + } + return void 0; + } + ruleVendorPrefixes(decl) { + let { parent } = decl; + if (parent.type !== "rule") { + return false; + } else if (!parent.selector.includes(":-")) { + return false; + } + let selectors = Browsers.prefixes().filter( + (s) => parent.selector.includes(":" + s) + ); + return selectors.length > 0 ? selectors : false; + } + }; + module2.exports = Transition; + } +}); + +// node_modules/autoprefixer/lib/old-value.js +var require_old_value = __commonJS({ + "node_modules/autoprefixer/lib/old-value.js"(exports2, module2) { + var utils = require_utils(); + var OldValue = class { + constructor(unprefixed, prefixed, string, regexp) { + this.unprefixed = unprefixed; + this.prefixed = prefixed; + this.string = string || prefixed; + this.regexp = regexp || utils.regexp(prefixed); + } + check(value) { + if (value.includes(this.string)) { + return !!value.match(this.regexp); + } + return false; + } + }; + module2.exports = OldValue; + } +}); + +// node_modules/autoprefixer/lib/value.js +var require_value = __commonJS({ + "node_modules/autoprefixer/lib/value.js"(exports2, module2) { + var Prefixer = require_prefixer(); + var OldValue = require_old_value(); + var vendor = require_vendor(); + var utils = require_utils(); + var Value = class extends Prefixer { + static save(prefixes, decl) { + let prop = decl.prop; + let result = []; + for (let prefix in decl._autoprefixerValues) { + let value = decl._autoprefixerValues[prefix]; + if (value === decl.value) { + continue; + } + let item; + let propPrefix = vendor.prefix(prop); + if (propPrefix === "-pie-") { + continue; + } + if (propPrefix === prefix) { + item = decl.value = value; + result.push(item); + continue; + } + let prefixed = prefixes.prefixed(prop, prefix); + let rule = decl.parent; + if (!rule.every((i) => i.prop !== prefixed)) { + result.push(item); + continue; + } + let trimmed = value.replace(/\s+/, " "); + let already = rule.some( + (i) => i.prop === decl.prop && i.value.replace(/\s+/, " ") === trimmed + ); + if (already) { + result.push(item); + continue; + } + let cloned = this.clone(decl, { value }); + item = decl.parent.insertBefore(decl, cloned); + result.push(item); + } + return result; + } + check(decl) { + let value = decl.value; + if (!value.includes(this.name)) { + return false; + } + return !!value.match(this.regexp()); + } + regexp() { + return this.regexpCache || (this.regexpCache = utils.regexp(this.name)); + } + replace(string, prefix) { + return string.replace(this.regexp(), `$1${prefix}$2`); + } + value(decl) { + if (decl.raws.value && decl.raws.value.value === decl.value) { + return decl.raws.value.raw; + } else { + return decl.value; + } + } + add(decl, prefix) { + if (!decl._autoprefixerValues) { + decl._autoprefixerValues = {}; + } + let value = decl._autoprefixerValues[prefix] || this.value(decl); + let before; + do { + before = value; + value = this.replace(value, prefix); + if (value === false) + return; + } while (value !== before); + decl._autoprefixerValues[prefix] = value; + } + old(prefix) { + return new OldValue(this.name, prefix + this.name); + } + }; + module2.exports = Value; + } +}); + +// node_modules/autoprefixer/lib/hacks/grid-utils.js +var require_grid_utils = __commonJS({ + "node_modules/autoprefixer/lib/hacks/grid-utils.js"(exports2) { + var parser = require_lib(); + var list = require_postcss().list; + var uniq = require_utils().uniq; + var escapeRegexp = require_utils().escapeRegexp; + var splitSelector = require_utils().splitSelector; + function convert(value) { + if (value && value.length === 2 && value[0] === "span" && parseInt(value[1], 10) > 0) { + return [false, parseInt(value[1], 10)]; + } + if (value && value.length === 1 && parseInt(value[0], 10) > 0) { + return [parseInt(value[0], 10), false]; + } + return [false, false]; + } + exports2.translate = translate; + function translate(values, startIndex, endIndex) { + let startValue = values[startIndex]; + let endValue = values[endIndex]; + if (!startValue) { + return [false, false]; + } + let [start, spanStart] = convert(startValue); + let [end, spanEnd] = convert(endValue); + if (start && !endValue) { + return [start, false]; + } + if (spanStart && end) { + return [end - spanStart, spanStart]; + } + if (start && spanEnd) { + return [start, spanEnd]; + } + if (start && end) { + return [start, end - start]; + } + return [false, false]; + } + exports2.parse = parse; + function parse(decl) { + let node = parser(decl.value); + let values = []; + let current = 0; + values[current] = []; + for (let i of node.nodes) { + if (i.type === "div") { + current += 1; + values[current] = []; + } else if (i.type === "word") { + values[current].push(i.value); + } + } + return values; + } + exports2.insertDecl = insertDecl; + function insertDecl(decl, prop, value) { + if (value && !decl.parent.some((i) => i.prop === `-ms-${prop}`)) { + decl.cloneBefore({ + prop: `-ms-${prop}`, + value: value.toString() + }); + } + } + exports2.prefixTrackProp = prefixTrackProp; + function prefixTrackProp({ prop, prefix }) { + return prefix + prop.replace("template-", ""); + } + function transformRepeat({ nodes }, { gap }) { + let { count, size } = nodes.reduce( + (result, node) => { + if (node.type === "div" && node.value === ",") { + result.key = "size"; + } else { + result[result.key].push(parser.stringify(node)); + } + return result; + }, + { + key: "count", + size: [], + count: [] + } + ); + if (gap) { + size = size.filter((i) => i.trim()); + let val = []; + for (let i = 1; i <= count; i++) { + size.forEach((item, index) => { + if (index > 0 || i > 1) { + val.push(gap); + } + val.push(item); + }); + } + return val.join(" "); + } + return `(${size.join("")})[${count.join("")}]`; + } + exports2.prefixTrackValue = prefixTrackValue; + function prefixTrackValue({ value, gap }) { + let result = parser(value).nodes.reduce((nodes, node) => { + if (node.type === "function" && node.value === "repeat") { + return nodes.concat({ + type: "word", + value: transformRepeat(node, { gap }) + }); + } + if (gap && node.type === "space") { + return nodes.concat( + { + type: "space", + value: " " + }, + { + type: "word", + value: gap + }, + node + ); + } + return nodes.concat(node); + }, []); + return parser.stringify(result); + } + var DOTS = /^\.+$/; + function track(start, end) { + return { start, end, span: end - start }; + } + function getColumns(line) { + return line.trim().split(/\s+/g); + } + exports2.parseGridAreas = parseGridAreas; + function parseGridAreas({ rows, gap }) { + return rows.reduce((areas, line, rowIndex) => { + if (gap.row) + rowIndex *= 2; + if (line.trim() === "") + return areas; + getColumns(line).forEach((area, columnIndex) => { + if (DOTS.test(area)) + return; + if (gap.column) + columnIndex *= 2; + if (typeof areas[area] === "undefined") { + areas[area] = { + column: track(columnIndex + 1, columnIndex + 2), + row: track(rowIndex + 1, rowIndex + 2) + }; + } else { + let { column, row } = areas[area]; + column.start = Math.min(column.start, columnIndex + 1); + column.end = Math.max(column.end, columnIndex + 2); + column.span = column.end - column.start; + row.start = Math.min(row.start, rowIndex + 1); + row.end = Math.max(row.end, rowIndex + 2); + row.span = row.end - row.start; + } + }); + return areas; + }, {}); + } + function testTrack(node) { + return node.type === "word" && /^\[.+]$/.test(node.value); + } + function verifyRowSize(result) { + if (result.areas.length > result.rows.length) { + result.rows.push("auto"); + } + return result; + } + exports2.parseTemplate = parseTemplate; + function parseTemplate({ decl, gap }) { + let gridTemplate = parser(decl.value).nodes.reduce( + (result, node) => { + let { type, value } = node; + if (testTrack(node) || type === "space") + return result; + if (type === "string") { + result = verifyRowSize(result); + result.areas.push(value); + } + if (type === "word" || type === "function") { + result[result.key].push(parser.stringify(node)); + } + if (type === "div" && value === "/") { + result.key = "columns"; + result = verifyRowSize(result); + } + return result; + }, + { + key: "rows", + columns: [], + rows: [], + areas: [] + } + ); + return { + areas: parseGridAreas({ + rows: gridTemplate.areas, + gap + }), + columns: prefixTrackValue({ + value: gridTemplate.columns.join(" "), + gap: gap.column + }), + rows: prefixTrackValue({ + value: gridTemplate.rows.join(" "), + gap: gap.row + }) + }; + } + function getMSDecls(area, addRowSpan = false, addColumnSpan = false) { + let result = [ + { + prop: "-ms-grid-row", + value: String(area.row.start) + } + ]; + if (area.row.span > 1 || addRowSpan) { + result.push({ + prop: "-ms-grid-row-span", + value: String(area.row.span) + }); + } + result.push({ + prop: "-ms-grid-column", + value: String(area.column.start) + }); + if (area.column.span > 1 || addColumnSpan) { + result.push({ + prop: "-ms-grid-column-span", + value: String(area.column.span) + }); + } + return result; + } + function getParentMedia(parent) { + if (parent.type === "atrule" && parent.name === "media") { + return parent; + } + if (!parent.parent) { + return false; + } + return getParentMedia(parent.parent); + } + function changeDuplicateAreaSelectors(ruleSelectors, templateSelectors) { + ruleSelectors = ruleSelectors.map((selector) => { + let selectorBySpace = list.space(selector); + let selectorByComma = list.comma(selector); + if (selectorBySpace.length > selectorByComma.length) { + selector = selectorBySpace.slice(-1).join(""); + } + return selector; + }); + return ruleSelectors.map((ruleSelector) => { + let newSelector = templateSelectors.map((tplSelector, index) => { + let space = index === 0 ? "" : " "; + return `${space}${tplSelector} > ${ruleSelector}`; + }); + return newSelector; + }); + } + function selectorsEqual(ruleA, ruleB) { + return ruleA.selectors.some((sel) => { + return ruleB.selectors.includes(sel); + }); + } + function parseGridTemplatesData(css) { + let parsed = []; + css.walkDecls(/grid-template(-areas)?$/, (d) => { + let rule = d.parent; + let media = getParentMedia(rule); + let gap = getGridGap(d); + let inheritedGap = inheritGridGap(d, gap); + let { areas } = parseTemplate({ decl: d, gap: inheritedGap || gap }); + let areaNames = Object.keys(areas); + if (areaNames.length === 0) { + return true; + } + let index = parsed.reduce((acc, { allAreas }, idx) => { + let hasAreas = allAreas && areaNames.some((area) => allAreas.includes(area)); + return hasAreas ? idx : acc; + }, null); + if (index !== null) { + let { allAreas, rules } = parsed[index]; + let hasNoDuplicates = rules.some((r) => { + return r.hasDuplicates === false && selectorsEqual(r, rule); + }); + let duplicatesFound = false; + let duplicateAreaNames = rules.reduce((acc, r) => { + if (!r.params && selectorsEqual(r, rule)) { + duplicatesFound = true; + return r.duplicateAreaNames; + } + if (!duplicatesFound) { + areaNames.forEach((name) => { + if (r.areas[name]) { + acc.push(name); + } + }); + } + return uniq(acc); + }, []); + rules.forEach((r) => { + areaNames.forEach((name) => { + let area = r.areas[name]; + if (area && area.row.span !== areas[name].row.span) { + areas[name].row.updateSpan = true; + } + if (area && area.column.span !== areas[name].column.span) { + areas[name].column.updateSpan = true; + } + }); + }); + parsed[index].allAreas = uniq([...allAreas, ...areaNames]); + parsed[index].rules.push({ + hasDuplicates: !hasNoDuplicates, + params: media.params, + selectors: rule.selectors, + node: rule, + duplicateAreaNames, + areas + }); + } else { + parsed.push({ + allAreas: areaNames, + areasCount: 0, + rules: [ + { + hasDuplicates: false, + duplicateRules: [], + params: media.params, + selectors: rule.selectors, + node: rule, + duplicateAreaNames: [], + areas + } + ] + }); + } + return void 0; + }); + return parsed; + } + exports2.insertAreas = insertAreas; + function insertAreas(css, isDisabled) { + let gridTemplatesData = parseGridTemplatesData(css); + if (gridTemplatesData.length === 0) { + return void 0; + } + let rulesToInsert = {}; + css.walkDecls("grid-area", (gridArea) => { + let gridAreaRule = gridArea.parent; + let hasPrefixedRow = gridAreaRule.first.prop === "-ms-grid-row"; + let gridAreaMedia = getParentMedia(gridAreaRule); + if (isDisabled(gridArea)) { + return void 0; + } + let gridAreaRuleIndex = css.index(gridAreaMedia || gridAreaRule); + let value = gridArea.value; + let data = gridTemplatesData.filter((d) => d.allAreas.includes(value))[0]; + if (!data) { + return true; + } + let lastArea = data.allAreas[data.allAreas.length - 1]; + let selectorBySpace = list.space(gridAreaRule.selector); + let selectorByComma = list.comma(gridAreaRule.selector); + let selectorIsComplex = selectorBySpace.length > 1 && selectorBySpace.length > selectorByComma.length; + if (hasPrefixedRow) { + return false; + } + if (!rulesToInsert[lastArea]) { + rulesToInsert[lastArea] = {}; + } + let lastRuleIsSet = false; + for (let rule of data.rules) { + let area = rule.areas[value]; + let hasDuplicateName = rule.duplicateAreaNames.includes(value); + if (!area) { + let lastRule = rulesToInsert[lastArea].lastRule; + let lastRuleIndex; + if (lastRule) { + lastRuleIndex = css.index(lastRule); + } else { + lastRuleIndex = -1; + } + if (gridAreaRuleIndex > lastRuleIndex) { + rulesToInsert[lastArea].lastRule = gridAreaMedia || gridAreaRule; + } + continue; + } + if (rule.params && !rulesToInsert[lastArea][rule.params]) { + rulesToInsert[lastArea][rule.params] = []; + } + if ((!rule.hasDuplicates || !hasDuplicateName) && !rule.params) { + getMSDecls(area, false, false).reverse().forEach( + (i) => gridAreaRule.prepend( + Object.assign(i, { + raws: { + between: gridArea.raws.between + } + }) + ) + ); + rulesToInsert[lastArea].lastRule = gridAreaRule; + lastRuleIsSet = true; + } else if (rule.hasDuplicates && !rule.params && !selectorIsComplex) { + let cloned = gridAreaRule.clone(); + cloned.removeAll(); + getMSDecls(area, area.row.updateSpan, area.column.updateSpan).reverse().forEach( + (i) => cloned.prepend( + Object.assign(i, { + raws: { + between: gridArea.raws.between + } + }) + ) + ); + cloned.selectors = changeDuplicateAreaSelectors( + cloned.selectors, + rule.selectors + ); + if (rulesToInsert[lastArea].lastRule) { + rulesToInsert[lastArea].lastRule.after(cloned); + } + rulesToInsert[lastArea].lastRule = cloned; + lastRuleIsSet = true; + } else if (rule.hasDuplicates && !rule.params && selectorIsComplex && gridAreaRule.selector.includes(rule.selectors[0])) { + gridAreaRule.walkDecls(/-ms-grid-(row|column)/, (d) => d.remove()); + getMSDecls(area, area.row.updateSpan, area.column.updateSpan).reverse().forEach( + (i) => gridAreaRule.prepend( + Object.assign(i, { + raws: { + between: gridArea.raws.between + } + }) + ) + ); + } else if (rule.params) { + let cloned = gridAreaRule.clone(); + cloned.removeAll(); + getMSDecls(area, area.row.updateSpan, area.column.updateSpan).reverse().forEach( + (i) => cloned.prepend( + Object.assign(i, { + raws: { + between: gridArea.raws.between + } + }) + ) + ); + if (rule.hasDuplicates && hasDuplicateName) { + cloned.selectors = changeDuplicateAreaSelectors( + cloned.selectors, + rule.selectors + ); + } + cloned.raws = rule.node.raws; + if (css.index(rule.node.parent) > gridAreaRuleIndex) { + rule.node.parent.append(cloned); + } else { + rulesToInsert[lastArea][rule.params].push(cloned); + } + if (!lastRuleIsSet) { + rulesToInsert[lastArea].lastRule = gridAreaMedia || gridAreaRule; + } + } + } + return void 0; + }); + Object.keys(rulesToInsert).forEach((area) => { + let data = rulesToInsert[area]; + let lastRule = data.lastRule; + Object.keys(data).reverse().filter((p) => p !== "lastRule").forEach((params) => { + if (data[params].length > 0 && lastRule) { + lastRule.after({ name: "media", params }); + lastRule.next().append(data[params]); + } + }); + }); + return void 0; + } + exports2.warnMissedAreas = warnMissedAreas; + function warnMissedAreas(areas, decl, result) { + let missed = Object.keys(areas); + decl.root().walkDecls("grid-area", (gridArea) => { + missed = missed.filter((e) => e !== gridArea.value); + }); + if (missed.length > 0) { + decl.warn(result, "Can not find grid areas: " + missed.join(", ")); + } + return void 0; + } + exports2.warnTemplateSelectorNotFound = warnTemplateSelectorNotFound; + function warnTemplateSelectorNotFound(decl, result) { + let rule = decl.parent; + let root = decl.root(); + let duplicatesFound = false; + let slicedSelectorArr = list.space(rule.selector).filter((str) => str !== ">").slice(0, -1); + if (slicedSelectorArr.length > 0) { + let gridTemplateFound = false; + let foundAreaSelector = null; + root.walkDecls(/grid-template(-areas)?$/, (d) => { + let parent = d.parent; + let templateSelectors = parent.selectors; + let { areas } = parseTemplate({ decl: d, gap: getGridGap(d) }); + let hasArea = areas[decl.value]; + for (let tplSelector of templateSelectors) { + if (gridTemplateFound) { + break; + } + let tplSelectorArr = list.space(tplSelector).filter((str) => str !== ">"); + gridTemplateFound = tplSelectorArr.every( + (item, idx) => item === slicedSelectorArr[idx] + ); + } + if (gridTemplateFound || !hasArea) { + return true; + } + if (!foundAreaSelector) { + foundAreaSelector = parent.selector; + } + if (foundAreaSelector && foundAreaSelector !== parent.selector) { + duplicatesFound = true; + } + return void 0; + }); + if (!gridTemplateFound && duplicatesFound) { + decl.warn( + result, + `Autoprefixer cannot find a grid-template containing the duplicate grid-area "${decl.value}" with full selector matching: ${slicedSelectorArr.join(" ")}` + ); + } + } + } + exports2.warnIfGridRowColumnExists = warnIfGridRowColumnExists; + function warnIfGridRowColumnExists(decl, result) { + let rule = decl.parent; + let decls = []; + rule.walkDecls(/^grid-(row|column)/, (d) => { + if (!d.prop.endsWith("-end") && !d.value.startsWith("span") && !d.prop.endsWith("-gap")) { + decls.push(d); + } + }); + if (decls.length > 0) { + decls.forEach((d) => { + d.warn( + result, + `You already have a grid-area declaration present in the rule. You should use either grid-area or ${d.prop}, not both` + ); + }); + } + return void 0; + } + exports2.getGridGap = getGridGap; + function getGridGap(decl) { + let gap = {}; + let testGap = /^(grid-)?((row|column)-)?gap$/; + decl.parent.walkDecls(testGap, ({ prop, value }) => { + if (/^(grid-)?gap$/.test(prop)) { + let [row, , column] = parser(value).nodes; + gap.row = row && parser.stringify(row); + gap.column = column ? parser.stringify(column) : gap.row; + } + if (/^(grid-)?row-gap$/.test(prop)) + gap.row = value; + if (/^(grid-)?column-gap$/.test(prop)) + gap.column = value; + }); + return gap; + } + function parseMediaParams(params) { + if (!params) { + return []; + } + let parsed = parser(params); + let prop; + let value; + parsed.walk((node) => { + if (node.type === "word" && /min|max/g.test(node.value)) { + prop = node.value; + } else if (node.value.includes("px")) { + value = parseInt(node.value.replace(/\D/g, "")); + } + }); + return [prop, value]; + } + function shouldInheritGap(selA, selB) { + let result; + let splitSelectorArrA = splitSelector(selA); + let splitSelectorArrB = splitSelector(selB); + if (splitSelectorArrA[0].length < splitSelectorArrB[0].length) { + return false; + } else if (splitSelectorArrA[0].length > splitSelectorArrB[0].length) { + let idx = splitSelectorArrA[0].reduce((res, [item], index) => { + let firstSelectorPart = splitSelectorArrB[0][0][0]; + if (item === firstSelectorPart) { + return index; + } + return false; + }, false); + if (idx) { + result = splitSelectorArrB[0].every((arr, index) => { + return arr.every( + (part, innerIndex) => splitSelectorArrA[0].slice(idx)[index][innerIndex] === part + ); + }); + } + } else { + result = splitSelectorArrB.some((byCommaArr) => { + return byCommaArr.every((bySpaceArr, index) => { + return bySpaceArr.every( + (part, innerIndex) => splitSelectorArrA[0][index][innerIndex] === part + ); + }); + }); + } + return result; + } + exports2.inheritGridGap = inheritGridGap; + function inheritGridGap(decl, gap) { + let rule = decl.parent; + let mediaRule = getParentMedia(rule); + let root = rule.root(); + let splitSelectorArr = splitSelector(rule.selector); + if (Object.keys(gap).length > 0) { + return false; + } + let [prop] = parseMediaParams(mediaRule.params); + let lastBySpace = splitSelectorArr[0]; + let escaped = escapeRegexp(lastBySpace[lastBySpace.length - 1][0]); + let regexp = new RegExp(`(${escaped}$)|(${escaped}[,.])`); + let closestRuleGap; + root.walkRules(regexp, (r) => { + let gridGap; + if (rule.toString() === r.toString()) { + return false; + } + r.walkDecls("grid-gap", (d) => gridGap = getGridGap(d)); + if (!gridGap || Object.keys(gridGap).length === 0) { + return true; + } + if (!shouldInheritGap(rule.selector, r.selector)) { + return true; + } + let media = getParentMedia(r); + if (media) { + let propToCompare = parseMediaParams(media.params)[0]; + if (propToCompare === prop) { + closestRuleGap = gridGap; + return true; + } + } else { + closestRuleGap = gridGap; + return true; + } + return void 0; + }); + if (closestRuleGap && Object.keys(closestRuleGap).length > 0) { + return closestRuleGap; + } + return false; + } + exports2.warnGridGap = warnGridGap; + function warnGridGap({ gap, hasColumns, decl, result }) { + let hasBothGaps = gap.row && gap.column; + if (!hasColumns && (hasBothGaps || gap.column && !gap.row)) { + delete gap.column; + decl.warn( + result, + "Can not implement grid-gap without grid-template-columns" + ); + } + } + function normalizeRowColumn(str) { + let normalized = parser(str).nodes.reduce((result, node) => { + if (node.type === "function" && node.value === "repeat") { + let key = "count"; + let [count, value] = node.nodes.reduce( + (acc, n) => { + if (n.type === "word" && key === "count") { + acc[0] = Math.abs(parseInt(n.value)); + return acc; + } + if (n.type === "div" && n.value === ",") { + key = "value"; + return acc; + } + if (key === "value") { + acc[1] += parser.stringify(n); + } + return acc; + }, + [0, ""] + ); + if (count) { + for (let i = 0; i < count; i++) { + result.push(value); + } + } + return result; + } + if (node.type === "space") { + return result; + } + return result.concat(parser.stringify(node)); + }, []); + return normalized; + } + exports2.autoplaceGridItems = autoplaceGridItems; + function autoplaceGridItems(decl, result, gap, autoflowValue = "row") { + let { parent } = decl; + let rowDecl = parent.nodes.find((i) => i.prop === "grid-template-rows"); + let rows = normalizeRowColumn(rowDecl.value); + let columns = normalizeRowColumn(decl.value); + let filledRows = rows.map((_, rowIndex) => { + return Array.from( + { length: columns.length }, + (v, k) => k + rowIndex * columns.length + 1 + ).join(" "); + }); + let areas = parseGridAreas({ rows: filledRows, gap }); + let keys = Object.keys(areas); + let items = keys.map((i) => areas[i]); + if (autoflowValue.includes("column")) { + items = items.sort((a, b) => a.column.start - b.column.start); + } + items.reverse().forEach((item, index) => { + let { column, row } = item; + let nodeSelector = parent.selectors.map((sel) => sel + ` > *:nth-child(${keys.length - index})`).join(", "); + let node = parent.clone().removeAll(); + node.selector = nodeSelector; + node.append({ prop: "-ms-grid-row", value: row.start }); + node.append({ prop: "-ms-grid-column", value: column.start }); + parent.after(node); + }); + return void 0; + } + } +}); + +// node_modules/autoprefixer/lib/processor.js +var require_processor2 = __commonJS({ + "node_modules/autoprefixer/lib/processor.js"(exports2, module2) { + var parser = require_lib(); + var Value = require_value(); + var insertAreas = require_grid_utils().insertAreas; + var OLD_LINEAR = /(^|[^-])linear-gradient\(\s*(top|left|right|bottom)/i; + var OLD_RADIAL = /(^|[^-])radial-gradient\(\s*\d+(\w*|%)\s+\d+(\w*|%)\s*,/i; + var IGNORE_NEXT = /(!\s*)?autoprefixer:\s*ignore\s+next/i; + var GRID_REGEX = /(!\s*)?autoprefixer\s*grid:\s*(on|off|(no-)?autoplace)/i; + var SIZES = [ + "width", + "height", + "min-width", + "max-width", + "min-height", + "max-height", + "inline-size", + "min-inline-size", + "max-inline-size", + "block-size", + "min-block-size", + "max-block-size" + ]; + function hasGridTemplate(decl) { + return decl.parent.some( + (i) => i.prop === "grid-template" || i.prop === "grid-template-areas" + ); + } + function hasRowsAndColumns(decl) { + let hasRows = decl.parent.some((i) => i.prop === "grid-template-rows"); + let hasColumns = decl.parent.some((i) => i.prop === "grid-template-columns"); + return hasRows && hasColumns; + } + var Processor = class { + constructor(prefixes) { + this.prefixes = prefixes; + } + add(css, result) { + let resolution = this.prefixes.add["@resolution"]; + let keyframes = this.prefixes.add["@keyframes"]; + let viewport = this.prefixes.add["@viewport"]; + let supports = this.prefixes.add["@supports"]; + css.walkAtRules((rule) => { + if (rule.name === "keyframes") { + if (!this.disabled(rule, result)) { + return keyframes && keyframes.process(rule); + } + } else if (rule.name === "viewport") { + if (!this.disabled(rule, result)) { + return viewport && viewport.process(rule); + } + } else if (rule.name === "supports") { + if (this.prefixes.options.supports !== false && !this.disabled(rule, result)) { + return supports.process(rule); + } + } else if (rule.name === "media" && rule.params.includes("-resolution")) { + if (!this.disabled(rule, result)) { + return resolution && resolution.process(rule); + } + } + return void 0; + }); + css.walkRules((rule) => { + if (this.disabled(rule, result)) + return void 0; + return this.prefixes.add.selectors.map((selector) => { + return selector.process(rule, result); + }); + }); + function insideGrid(decl) { + return decl.parent.nodes.some((node) => { + if (node.type !== "decl") + return false; + let displayGrid = node.prop === "display" && /(inline-)?grid/.test(node.value); + let gridTemplate = node.prop.startsWith("grid-template"); + let gridGap = /^grid-([A-z]+-)?gap/.test(node.prop); + return displayGrid || gridTemplate || gridGap; + }); + } + function insideFlex(decl) { + return decl.parent.some((node) => { + return node.prop === "display" && /(inline-)?flex/.test(node.value); + }); + } + let gridPrefixes = this.gridStatus(css, result) && this.prefixes.add["grid-area"] && this.prefixes.add["grid-area"].prefixes; + css.walkDecls((decl) => { + if (this.disabledDecl(decl, result)) + return void 0; + let parent = decl.parent; + let prop = decl.prop; + let value = decl.value; + if (prop === "color-adjust") { + if (parent.every((i) => i.prop !== "print-color-adjust")) { + result.warn( + "Replace color-adjust to print-color-adjust. The color-adjust shorthand is currently deprecated.", + { node: decl } + ); + } + } else if (prop === "grid-row-span") { + result.warn( + "grid-row-span is not part of final Grid Layout. Use grid-row.", + { node: decl } + ); + return void 0; + } else if (prop === "grid-column-span") { + result.warn( + "grid-column-span is not part of final Grid Layout. Use grid-column.", + { node: decl } + ); + return void 0; + } else if (prop === "display" && value === "box") { + result.warn( + "You should write display: flex by final spec instead of display: box", + { node: decl } + ); + return void 0; + } else if (prop === "text-emphasis-position") { + if (value === "under" || value === "over") { + result.warn( + "You should use 2 values for text-emphasis-position For example, `under left` instead of just `under`.", + { node: decl } + ); + } + } else if (/^(align|justify|place)-(items|content)$/.test(prop) && insideFlex(decl)) { + if (value === "start" || value === "end") { + result.warn( + `${value} value has mixed support, consider using flex-${value} instead`, + { node: decl } + ); + } + } else if (prop === "text-decoration-skip" && value === "ink") { + result.warn( + "Replace text-decoration-skip: ink to text-decoration-skip-ink: auto, because spec had been changed", + { node: decl } + ); + } else { + if (gridPrefixes && this.gridStatus(decl, result)) { + if (decl.value === "subgrid") { + result.warn("IE does not support subgrid", { node: decl }); + } + if (/^(align|justify|place)-items$/.test(prop) && insideGrid(decl)) { + let fixed = prop.replace("-items", "-self"); + result.warn( + `IE does not support ${prop} on grid containers. Try using ${fixed} on child elements instead: ${decl.parent.selector} > * { ${fixed}: ${decl.value} }`, + { node: decl } + ); + } else if (/^(align|justify|place)-content$/.test(prop) && insideGrid(decl)) { + result.warn(`IE does not support ${decl.prop} on grid containers`, { + node: decl + }); + } else if (prop === "display" && decl.value === "contents") { + result.warn( + "Please do not use display: contents; if you have grid setting enabled", + { node: decl } + ); + return void 0; + } else if (decl.prop === "grid-gap") { + let status = this.gridStatus(decl, result); + if (status === "autoplace" && !hasRowsAndColumns(decl) && !hasGridTemplate(decl)) { + result.warn( + "grid-gap only works if grid-template(-areas) is being used or both rows and columns have been declared and cells have not been manually placed inside the explicit grid", + { node: decl } + ); + } else if ((status === true || status === "no-autoplace") && !hasGridTemplate(decl)) { + result.warn( + "grid-gap only works if grid-template(-areas) is being used", + { node: decl } + ); + } + } else if (prop === "grid-auto-columns") { + result.warn("grid-auto-columns is not supported by IE", { + node: decl + }); + return void 0; + } else if (prop === "grid-auto-rows") { + result.warn("grid-auto-rows is not supported by IE", { node: decl }); + return void 0; + } else if (prop === "grid-auto-flow") { + let hasRows = parent.some((i) => i.prop === "grid-template-rows"); + let hasCols = parent.some((i) => i.prop === "grid-template-columns"); + if (hasGridTemplate(decl)) { + result.warn("grid-auto-flow is not supported by IE", { + node: decl + }); + } else if (value.includes("dense")) { + result.warn("grid-auto-flow: dense is not supported by IE", { + node: decl + }); + } else if (!hasRows && !hasCols) { + result.warn( + "grid-auto-flow works only if grid-template-rows and grid-template-columns are present in the same rule", + { node: decl } + ); + } + return void 0; + } else if (value.includes("auto-fit")) { + result.warn("auto-fit value is not supported by IE", { + node: decl, + word: "auto-fit" + }); + return void 0; + } else if (value.includes("auto-fill")) { + result.warn("auto-fill value is not supported by IE", { + node: decl, + word: "auto-fill" + }); + return void 0; + } else if (prop.startsWith("grid-template") && value.includes("[")) { + result.warn( + "Autoprefixer currently does not support line names. Try using grid-template-areas instead.", + { node: decl, word: "[" } + ); + } + } + if (value.includes("radial-gradient")) { + if (OLD_RADIAL.test(decl.value)) { + result.warn( + "Gradient has outdated direction syntax. New syntax is like `closest-side at 0 0` instead of `0 0, closest-side`.", + { node: decl } + ); + } else { + let ast = parser(value); + for (let i of ast.nodes) { + if (i.type === "function" && i.value === "radial-gradient") { + for (let word of i.nodes) { + if (word.type === "word") { + if (word.value === "cover") { + result.warn( + "Gradient has outdated direction syntax. Replace `cover` to `farthest-corner`.", + { node: decl } + ); + } else if (word.value === "contain") { + result.warn( + "Gradient has outdated direction syntax. Replace `contain` to `closest-side`.", + { node: decl } + ); + } + } + } + } + } + } + } + if (value.includes("linear-gradient")) { + if (OLD_LINEAR.test(value)) { + result.warn( + "Gradient has outdated direction syntax. New syntax is like `to left` instead of `right`.", + { node: decl } + ); + } + } + } + if (SIZES.includes(decl.prop)) { + if (!decl.value.includes("-fill-available")) { + if (decl.value.includes("fill-available")) { + result.warn( + "Replace fill-available to stretch, because spec had been changed", + { node: decl } + ); + } else if (decl.value.includes("fill")) { + let ast = parser(value); + if (ast.nodes.some((i) => i.type === "word" && i.value === "fill")) { + result.warn( + "Replace fill to stretch, because spec had been changed", + { node: decl } + ); + } + } + } + } + let prefixer; + if (decl.prop === "transition" || decl.prop === "transition-property") { + return this.prefixes.transition.add(decl, result); + } else if (decl.prop === "align-self") { + let display = this.displayType(decl); + if (display !== "grid" && this.prefixes.options.flexbox !== false) { + prefixer = this.prefixes.add["align-self"]; + if (prefixer && prefixer.prefixes) { + prefixer.process(decl); + } + } + if (this.gridStatus(decl, result) !== false) { + prefixer = this.prefixes.add["grid-row-align"]; + if (prefixer && prefixer.prefixes) { + return prefixer.process(decl, result); + } + } + } else if (decl.prop === "justify-self") { + if (this.gridStatus(decl, result) !== false) { + prefixer = this.prefixes.add["grid-column-align"]; + if (prefixer && prefixer.prefixes) { + return prefixer.process(decl, result); + } + } + } else if (decl.prop === "place-self") { + prefixer = this.prefixes.add["place-self"]; + if (prefixer && prefixer.prefixes && this.gridStatus(decl, result) !== false) { + return prefixer.process(decl, result); + } + } else { + prefixer = this.prefixes.add[decl.prop]; + if (prefixer && prefixer.prefixes) { + return prefixer.process(decl, result); + } + } + return void 0; + }); + if (this.gridStatus(css, result)) { + insertAreas(css, this.disabled); + } + return css.walkDecls((decl) => { + if (this.disabledValue(decl, result)) + return; + let unprefixed = this.prefixes.unprefixed(decl.prop); + let list = this.prefixes.values("add", unprefixed); + if (Array.isArray(list)) { + for (let value of list) { + if (value.process) + value.process(decl, result); + } + } + Value.save(this.prefixes, decl); + }); + } + remove(css, result) { + let resolution = this.prefixes.remove["@resolution"]; + css.walkAtRules((rule, i) => { + if (this.prefixes.remove[`@${rule.name}`]) { + if (!this.disabled(rule, result)) { + rule.parent.removeChild(i); + } + } else if (rule.name === "media" && rule.params.includes("-resolution") && resolution) { + resolution.clean(rule); + } + }); + for (let checker of this.prefixes.remove.selectors) { + css.walkRules((rule, i) => { + if (checker.check(rule)) { + if (!this.disabled(rule, result)) { + rule.parent.removeChild(i); + } + } + }); + } + return css.walkDecls((decl, i) => { + if (this.disabled(decl, result)) + return; + let rule = decl.parent; + let unprefixed = this.prefixes.unprefixed(decl.prop); + if (decl.prop === "transition" || decl.prop === "transition-property") { + this.prefixes.transition.remove(decl); + } + if (this.prefixes.remove[decl.prop] && this.prefixes.remove[decl.prop].remove) { + let notHack = this.prefixes.group(decl).down((other) => { + return this.prefixes.normalize(other.prop) === unprefixed; + }); + if (unprefixed === "flex-flow") { + notHack = true; + } + if (decl.prop === "-webkit-box-orient") { + let hacks = { "flex-direction": true, "flex-flow": true }; + if (!decl.parent.some((j) => hacks[j.prop])) + return; + } + if (notHack && !this.withHackValue(decl)) { + if (decl.raw("before").includes("\n")) { + this.reduceSpaces(decl); + } + rule.removeChild(i); + return; + } + } + for (let checker of this.prefixes.values("remove", unprefixed)) { + if (!checker.check) + continue; + if (!checker.check(decl.value)) + continue; + unprefixed = checker.unprefixed; + let notHack = this.prefixes.group(decl).down((other) => { + return other.value.includes(unprefixed); + }); + if (notHack) { + rule.removeChild(i); + return; + } + } + }); + } + withHackValue(decl) { + return decl.prop === "-webkit-background-clip" && decl.value === "text"; + } + disabledValue(node, result) { + if (this.gridStatus(node, result) === false && node.type === "decl") { + if (node.prop === "display" && node.value.includes("grid")) { + return true; + } + } + if (this.prefixes.options.flexbox === false && node.type === "decl") { + if (node.prop === "display" && node.value.includes("flex")) { + return true; + } + } + if (node.type === "decl" && node.prop === "content") { + return true; + } + return this.disabled(node, result); + } + disabledDecl(node, result) { + if (this.gridStatus(node, result) === false && node.type === "decl") { + if (node.prop.includes("grid") || node.prop === "justify-items") { + return true; + } + } + if (this.prefixes.options.flexbox === false && node.type === "decl") { + let other = ["order", "justify-content", "align-items", "align-content"]; + if (node.prop.includes("flex") || other.includes(node.prop)) { + return true; + } + } + return this.disabled(node, result); + } + disabled(node, result) { + if (!node) + return false; + if (node._autoprefixerDisabled !== void 0) { + return node._autoprefixerDisabled; + } + if (node.parent) { + let p = node.prev(); + if (p && p.type === "comment" && IGNORE_NEXT.test(p.text)) { + node._autoprefixerDisabled = true; + node._autoprefixerSelfDisabled = true; + return true; + } + } + let value = null; + if (node.nodes) { + let status; + node.each((i) => { + if (i.type !== "comment") + return; + if (/(!\s*)?autoprefixer:\s*(off|on)/i.test(i.text)) { + if (typeof status !== "undefined") { + result.warn( + "Second Autoprefixer control comment was ignored. Autoprefixer applies control comment to whole block, not to next rules.", + { node: i } + ); + } else { + status = /on/i.test(i.text); + } + } + }); + if (status !== void 0) { + value = !status; + } + } + if (!node.nodes || value === null) { + if (node.parent) { + let isParentDisabled = this.disabled(node.parent, result); + if (node.parent._autoprefixerSelfDisabled === true) { + value = false; + } else { + value = isParentDisabled; + } + } else { + value = false; + } + } + node._autoprefixerDisabled = value; + return value; + } + reduceSpaces(decl) { + let stop = false; + this.prefixes.group(decl).up(() => { + stop = true; + return true; + }); + if (stop) { + return; + } + let parts = decl.raw("before").split("\n"); + let prevMin = parts[parts.length - 1].length; + let diff = false; + this.prefixes.group(decl).down((other) => { + parts = other.raw("before").split("\n"); + let last = parts.length - 1; + if (parts[last].length > prevMin) { + if (diff === false) { + diff = parts[last].length - prevMin; + } + parts[last] = parts[last].slice(0, -diff); + other.raws.before = parts.join("\n"); + } + }); + } + displayType(decl) { + for (let i of decl.parent.nodes) { + if (i.prop !== "display") { + continue; + } + if (i.value.includes("flex")) { + return "flex"; + } + if (i.value.includes("grid")) { + return "grid"; + } + } + return false; + } + gridStatus(node, result) { + if (!node) + return false; + if (node._autoprefixerGridStatus !== void 0) { + return node._autoprefixerGridStatus; + } + let value = null; + if (node.nodes) { + let status; + node.each((i) => { + if (i.type !== "comment") + return; + if (GRID_REGEX.test(i.text)) { + let hasAutoplace = /:\s*autoplace/i.test(i.text); + let noAutoplace = /no-autoplace/i.test(i.text); + if (typeof status !== "undefined") { + result.warn( + "Second Autoprefixer grid control comment was ignored. Autoprefixer applies control comments to the whole block, not to the next rules.", + { node: i } + ); + } else if (hasAutoplace) { + status = "autoplace"; + } else if (noAutoplace) { + status = true; + } else { + status = /on/i.test(i.text); + } + } + }); + if (status !== void 0) { + value = status; + } + } + if (node.type === "atrule" && node.name === "supports") { + let params = node.params; + if (params.includes("grid") && params.includes("auto")) { + value = false; + } + } + if (!node.nodes || value === null) { + if (node.parent) { + let isParentGrid = this.gridStatus(node.parent, result); + if (node.parent._autoprefixerSelfDisabled === true) { + value = false; + } else { + value = isParentGrid; + } + } else if (typeof this.prefixes.options.grid !== "undefined") { + value = this.prefixes.options.grid; + } else if (typeof process.env.AUTOPREFIXER_GRID !== "undefined") { + if (process.env.AUTOPREFIXER_GRID === "autoplace") { + value = "autoplace"; + } else { + value = true; + } + } else { + value = false; + } + } + node._autoprefixerGridStatus = value; + return value; + } + }; + module2.exports = Processor; + } +}); + +// node_modules/autoprefixer/lib/brackets.js +var require_brackets = __commonJS({ + "node_modules/autoprefixer/lib/brackets.js"(exports2, module2) { + function last(array) { + return array[array.length - 1]; + } + var brackets = { + parse(str) { + let current = [""]; + let stack = [current]; + for (let sym of str) { + if (sym === "(") { + current = [""]; + last(stack).push(current); + stack.push(current); + continue; + } + if (sym === ")") { + stack.pop(); + current = last(stack); + current.push(""); + continue; + } + current[current.length - 1] += sym; + } + return stack[0]; + }, + stringify(ast) { + let result = ""; + for (let i of ast) { + if (typeof i === "object") { + result += `(${brackets.stringify(i)})`; + continue; + } + result += i; + } + return result; + } + }; + module2.exports = brackets; + } +}); + +// node_modules/autoprefixer/lib/supports.js +var require_supports = __commonJS({ + "node_modules/autoprefixer/lib/supports.js"(exports2, module2) { + var featureQueries = require_css_featurequeries(); + var { feature } = require_unpacker(); + var { parse } = require_postcss(); + var Browsers = require_browsers3(); + var brackets = require_brackets(); + var Value = require_value(); + var utils = require_utils(); + var data = feature(featureQueries); + var supported = []; + for (let browser in data.stats) { + let versions = data.stats[browser]; + for (let version in versions) { + let support = versions[version]; + if (/y/.test(support)) { + supported.push(browser + " " + version); + } + } + } + var Supports = class { + constructor(Prefixes, all) { + this.Prefixes = Prefixes; + this.all = all; + } + prefixer() { + if (this.prefixerCache) { + return this.prefixerCache; + } + let filtered = this.all.browsers.selected.filter((i) => { + return supported.includes(i); + }); + let browsers = new Browsers( + this.all.browsers.data, + filtered, + this.all.options + ); + this.prefixerCache = new this.Prefixes( + this.all.data, + browsers, + this.all.options + ); + return this.prefixerCache; + } + parse(str) { + let parts = str.split(":"); + let prop = parts[0]; + let value = parts[1]; + if (!value) + value = ""; + return [prop.trim(), value.trim()]; + } + virtual(str) { + let [prop, value] = this.parse(str); + let rule = parse("a{}").first; + rule.append({ prop, value, raws: { before: "" } }); + return rule; + } + prefixed(str) { + let rule = this.virtual(str); + if (this.disabled(rule.first)) { + return rule.nodes; + } + let result = { warn: () => null }; + let prefixer = this.prefixer().add[rule.first.prop]; + prefixer && prefixer.process && prefixer.process(rule.first, result); + for (let decl of rule.nodes) { + for (let value of this.prefixer().values("add", rule.first.prop)) { + value.process(decl); + } + Value.save(this.all, decl); + } + return rule.nodes; + } + isNot(node) { + return typeof node === "string" && /not\s*/i.test(node); + } + isOr(node) { + return typeof node === "string" && /\s*or\s*/i.test(node); + } + isProp(node) { + return typeof node === "object" && node.length === 1 && typeof node[0] === "string"; + } + isHack(all, unprefixed) { + let check = new RegExp(`(\\(|\\s)${utils.escapeRegexp(unprefixed)}:`); + return !check.test(all); + } + toRemove(str, all) { + let [prop, value] = this.parse(str); + let unprefixed = this.all.unprefixed(prop); + let cleaner = this.all.cleaner(); + if (cleaner.remove[prop] && cleaner.remove[prop].remove && !this.isHack(all, unprefixed)) { + return true; + } + for (let checker of cleaner.values("remove", unprefixed)) { + if (checker.check(value)) { + return true; + } + } + return false; + } + remove(nodes, all) { + let i = 0; + while (i < nodes.length) { + if (!this.isNot(nodes[i - 1]) && this.isProp(nodes[i]) && this.isOr(nodes[i + 1])) { + if (this.toRemove(nodes[i][0], all)) { + nodes.splice(i, 2); + continue; + } + i += 2; + continue; + } + if (typeof nodes[i] === "object") { + nodes[i] = this.remove(nodes[i], all); + } + i += 1; + } + return nodes; + } + cleanBrackets(nodes) { + return nodes.map((i) => { + if (typeof i !== "object") { + return i; + } + if (i.length === 1 && typeof i[0] === "object") { + return this.cleanBrackets(i[0]); + } + return this.cleanBrackets(i); + }); + } + convert(progress) { + let result = [""]; + for (let i of progress) { + result.push([`${i.prop}: ${i.value}`]); + result.push(" or "); + } + result[result.length - 1] = ""; + return result; + } + normalize(nodes) { + if (typeof nodes !== "object") { + return nodes; + } + nodes = nodes.filter((i) => i !== ""); + if (typeof nodes[0] === "string") { + let firstNode = nodes[0].trim(); + if (firstNode.includes(":") || firstNode === "selector" || firstNode === "not selector") { + return [brackets.stringify(nodes)]; + } + } + return nodes.map((i) => this.normalize(i)); + } + add(nodes, all) { + return nodes.map((i) => { + if (this.isProp(i)) { + let prefixed = this.prefixed(i[0]); + if (prefixed.length > 1) { + return this.convert(prefixed); + } + return i; + } + if (typeof i === "object") { + return this.add(i, all); + } + return i; + }); + } + process(rule) { + let ast = brackets.parse(rule.params); + ast = this.normalize(ast); + ast = this.remove(ast, rule.params); + ast = this.add(ast, rule.params); + ast = this.cleanBrackets(ast); + rule.params = brackets.stringify(ast); + } + disabled(node) { + if (!this.all.options.grid) { + if (node.prop === "display" && node.value.includes("grid")) { + return true; + } + if (node.prop.includes("grid") || node.prop === "justify-items") { + return true; + } + } + if (this.all.options.flexbox === false) { + if (node.prop === "display" && node.value.includes("flex")) { + return true; + } + let other = ["order", "justify-content", "align-items", "align-content"]; + if (node.prop.includes("flex") || other.includes(node.prop)) { + return true; + } + } + return false; + } + }; + module2.exports = Supports; + } +}); + +// node_modules/autoprefixer/lib/old-selector.js +var require_old_selector = __commonJS({ + "node_modules/autoprefixer/lib/old-selector.js"(exports2, module2) { + var OldSelector = class { + constructor(selector, prefix) { + this.prefix = prefix; + this.prefixed = selector.prefixed(this.prefix); + this.regexp = selector.regexp(this.prefix); + this.prefixeds = selector.possible().map((x) => [selector.prefixed(x), selector.regexp(x)]); + this.unprefixed = selector.name; + this.nameRegexp = selector.regexp(); + } + isHack(rule) { + let index = rule.parent.index(rule) + 1; + let rules = rule.parent.nodes; + while (index < rules.length) { + let before = rules[index].selector; + if (!before) { + return true; + } + if (before.includes(this.unprefixed) && before.match(this.nameRegexp)) { + return false; + } + let some = false; + for (let [string, regexp] of this.prefixeds) { + if (before.includes(string) && before.match(regexp)) { + some = true; + break; + } + } + if (!some) { + return true; + } + index += 1; + } + return true; + } + check(rule) { + if (!rule.selector.includes(this.prefixed)) { + return false; + } + if (!rule.selector.match(this.regexp)) { + return false; + } + if (this.isHack(rule)) { + return false; + } + return true; + } + }; + module2.exports = OldSelector; + } +}); + +// node_modules/autoprefixer/lib/selector.js +var require_selector = __commonJS({ + "node_modules/autoprefixer/lib/selector.js"(exports2, module2) { + var { list } = require_postcss(); + var OldSelector = require_old_selector(); + var Prefixer = require_prefixer(); + var Browsers = require_browsers3(); + var utils = require_utils(); + var Selector = class extends Prefixer { + constructor(name, prefixes, all) { + super(name, prefixes, all); + this.regexpCache = /* @__PURE__ */ new Map(); + } + check(rule) { + if (rule.selector.includes(this.name)) { + return !!rule.selector.match(this.regexp()); + } + return false; + } + prefixed(prefix) { + return this.name.replace(/^(\W*)/, `$1${prefix}`); + } + regexp(prefix) { + if (!this.regexpCache.has(prefix)) { + let name = prefix ? this.prefixed(prefix) : this.name; + this.regexpCache.set( + prefix, + new RegExp(`(^|[^:"'=])${utils.escapeRegexp(name)}`, "gi") + ); + } + return this.regexpCache.get(prefix); + } + possible() { + return Browsers.prefixes(); + } + prefixeds(rule) { + if (rule._autoprefixerPrefixeds) { + if (rule._autoprefixerPrefixeds[this.name]) { + return rule._autoprefixerPrefixeds; + } + } else { + rule._autoprefixerPrefixeds = {}; + } + let prefixeds = {}; + if (rule.selector.includes(",")) { + let ruleParts = list.comma(rule.selector); + let toProcess = ruleParts.filter((el) => el.includes(this.name)); + for (let prefix of this.possible()) { + prefixeds[prefix] = toProcess.map((el) => this.replace(el, prefix)).join(", "); + } + } else { + for (let prefix of this.possible()) { + prefixeds[prefix] = this.replace(rule.selector, prefix); + } + } + rule._autoprefixerPrefixeds[this.name] = prefixeds; + return rule._autoprefixerPrefixeds; + } + already(rule, prefixeds, prefix) { + let index = rule.parent.index(rule) - 1; + while (index >= 0) { + let before = rule.parent.nodes[index]; + if (before.type !== "rule") { + return false; + } + let some = false; + for (let key in prefixeds[this.name]) { + let prefixed = prefixeds[this.name][key]; + if (before.selector === prefixed) { + if (prefix === key) { + return true; + } else { + some = true; + break; + } + } + } + if (!some) { + return false; + } + index -= 1; + } + return false; + } + replace(selector, prefix) { + return selector.replace(this.regexp(), `$1${this.prefixed(prefix)}`); + } + add(rule, prefix) { + let prefixeds = this.prefixeds(rule); + if (this.already(rule, prefixeds, prefix)) { + return; + } + let cloned = this.clone(rule, { selector: prefixeds[this.name][prefix] }); + rule.parent.insertBefore(rule, cloned); + } + old(prefix) { + return new OldSelector(this, prefix); + } + }; + module2.exports = Selector; + } +}); + +// node_modules/autoprefixer/lib/at-rule.js +var require_at_rule2 = __commonJS({ + "node_modules/autoprefixer/lib/at-rule.js"(exports2, module2) { + var Prefixer = require_prefixer(); + var AtRule = class extends Prefixer { + add(rule, prefix) { + let prefixed = prefix + rule.name; + let already = rule.parent.some( + (i) => i.name === prefixed && i.params === rule.params + ); + if (already) { + return void 0; + } + let cloned = this.clone(rule, { name: prefixed }); + return rule.parent.insertBefore(rule, cloned); + } + process(node) { + let parent = this.parentPrefix(node); + for (let prefix of this.prefixes) { + if (!parent || parent === prefix) { + this.add(node, prefix); + } + } + } + }; + module2.exports = AtRule; + } +}); + +// node_modules/autoprefixer/lib/hacks/fullscreen.js +var require_fullscreen2 = __commonJS({ + "node_modules/autoprefixer/lib/hacks/fullscreen.js"(exports2, module2) { + var Selector = require_selector(); + var Fullscreen = class extends Selector { + prefixed(prefix) { + if (prefix === "-webkit-") { + return ":-webkit-full-screen"; + } + if (prefix === "-moz-") { + return ":-moz-full-screen"; + } + return `:${prefix}fullscreen`; + } + }; + Fullscreen.names = [":fullscreen"]; + module2.exports = Fullscreen; + } +}); + +// node_modules/autoprefixer/lib/hacks/placeholder.js +var require_placeholder = __commonJS({ + "node_modules/autoprefixer/lib/hacks/placeholder.js"(exports2, module2) { + var Selector = require_selector(); + var Placeholder = class extends Selector { + possible() { + return super.possible().concat(["-moz- old", "-ms- old"]); + } + prefixed(prefix) { + if (prefix === "-webkit-") { + return "::-webkit-input-placeholder"; + } + if (prefix === "-ms-") { + return "::-ms-input-placeholder"; + } + if (prefix === "-ms- old") { + return ":-ms-input-placeholder"; + } + if (prefix === "-moz- old") { + return ":-moz-placeholder"; + } + return `::${prefix}placeholder`; + } + }; + Placeholder.names = ["::placeholder"]; + module2.exports = Placeholder; + } +}); + +// node_modules/autoprefixer/lib/hacks/placeholder-shown.js +var require_placeholder_shown = __commonJS({ + "node_modules/autoprefixer/lib/hacks/placeholder-shown.js"(exports2, module2) { + var Selector = require_selector(); + var PlaceholderShown = class extends Selector { + prefixed(prefix) { + if (prefix === "-ms-") { + return ":-ms-input-placeholder"; + } + return `:${prefix}placeholder-shown`; + } + }; + PlaceholderShown.names = [":placeholder-shown"]; + module2.exports = PlaceholderShown; + } +}); + +// node_modules/autoprefixer/lib/hacks/file-selector-button.js +var require_file_selector_button = __commonJS({ + "node_modules/autoprefixer/lib/hacks/file-selector-button.js"(exports2, module2) { + var Selector = require_selector(); + var utils = require_utils(); + var FileSelectorButton = class extends Selector { + constructor(name, prefixes, all) { + super(name, prefixes, all); + if (this.prefixes) { + this.prefixes = utils.uniq(this.prefixes.map(() => "-webkit-")); + } + } + prefixed(prefix) { + if (prefix === "-webkit-") { + return "::-webkit-file-upload-button"; + } + return `::${prefix}file-selector-button`; + } + }; + FileSelectorButton.names = ["::file-selector-button"]; + module2.exports = FileSelectorButton; + } +}); + +// node_modules/autoprefixer/lib/hacks/flex-spec.js +var require_flex_spec = __commonJS({ + "node_modules/autoprefixer/lib/hacks/flex-spec.js"(exports2, module2) { + module2.exports = function(prefix) { + let spec; + if (prefix === "-webkit- 2009" || prefix === "-moz-") { + spec = 2009; + } else if (prefix === "-ms-") { + spec = 2012; + } else if (prefix === "-webkit-") { + spec = "final"; + } + if (prefix === "-webkit- 2009") { + prefix = "-webkit-"; + } + return [spec, prefix]; + }; + } +}); + +// node_modules/autoprefixer/lib/hacks/flex.js +var require_flex = __commonJS({ + "node_modules/autoprefixer/lib/hacks/flex.js"(exports2, module2) { + var list = require_postcss().list; + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var Flex = class extends Declaration { + prefixed(prop, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2009) { + return prefix + "box-flex"; + } + return super.prefixed(prop, prefix); + } + normalize() { + return "flex"; + } + set(decl, prefix) { + let spec = flexSpec(prefix)[0]; + if (spec === 2009) { + decl.value = list.space(decl.value)[0]; + decl.value = Flex.oldValues[decl.value] || decl.value; + return super.set(decl, prefix); + } + if (spec === 2012) { + let components = list.space(decl.value); + if (components.length === 3 && components[2] === "0") { + decl.value = components.slice(0, 2).concat("0px").join(" "); + } + } + return super.set(decl, prefix); + } + }; + Flex.names = ["flex", "box-flex"]; + Flex.oldValues = { + auto: "1", + none: "0" + }; + module2.exports = Flex; + } +}); + +// node_modules/autoprefixer/lib/hacks/order.js +var require_order = __commonJS({ + "node_modules/autoprefixer/lib/hacks/order.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var Order = class extends Declaration { + prefixed(prop, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2009) { + return prefix + "box-ordinal-group"; + } + if (spec === 2012) { + return prefix + "flex-order"; + } + return super.prefixed(prop, prefix); + } + normalize() { + return "order"; + } + set(decl, prefix) { + let spec = flexSpec(prefix)[0]; + if (spec === 2009 && /\d/.test(decl.value)) { + decl.value = (parseInt(decl.value) + 1).toString(); + return super.set(decl, prefix); + } + return super.set(decl, prefix); + } + }; + Order.names = ["order", "flex-order", "box-ordinal-group"]; + module2.exports = Order; + } +}); + +// node_modules/autoprefixer/lib/hacks/filter.js +var require_filter = __commonJS({ + "node_modules/autoprefixer/lib/hacks/filter.js"(exports2, module2) { + var Declaration = require_declaration2(); + var Filter = class extends Declaration { + check(decl) { + let v = decl.value; + return !v.toLowerCase().includes("alpha(") && !v.includes("DXImageTransform.Microsoft") && !v.includes("data:image/svg+xml"); + } + }; + Filter.names = ["filter"]; + module2.exports = Filter; + } +}); + +// node_modules/autoprefixer/lib/hacks/grid-end.js +var require_grid_end = __commonJS({ + "node_modules/autoprefixer/lib/hacks/grid-end.js"(exports2, module2) { + var Declaration = require_declaration2(); + var { isPureNumber } = require_utils(); + var GridEnd = class extends Declaration { + insert(decl, prefix, prefixes, result) { + if (prefix !== "-ms-") + return super.insert(decl, prefix, prefixes); + let clonedDecl = this.clone(decl); + let startProp = decl.prop.replace(/end$/, "start"); + let spanProp = prefix + decl.prop.replace(/end$/, "span"); + if (decl.parent.some((i) => i.prop === spanProp)) { + return void 0; + } + clonedDecl.prop = spanProp; + if (decl.value.includes("span")) { + clonedDecl.value = decl.value.replace(/span\s/i, ""); + } else { + let startDecl; + decl.parent.walkDecls(startProp, (d) => { + startDecl = d; + }); + if (startDecl) { + if (isPureNumber(startDecl.value)) { + let value = Number(decl.value) - Number(startDecl.value) + ""; + clonedDecl.value = value; + } else { + return void 0; + } + } else { + decl.warn( + result, + `Can not prefix ${decl.prop} (${startProp} is not found)` + ); + } + } + decl.cloneBefore(clonedDecl); + return void 0; + } + }; + GridEnd.names = ["grid-row-end", "grid-column-end"]; + module2.exports = GridEnd; + } +}); + +// node_modules/autoprefixer/lib/hacks/animation.js +var require_animation = __commonJS({ + "node_modules/autoprefixer/lib/hacks/animation.js"(exports2, module2) { + var Declaration = require_declaration2(); + var Animation = class extends Declaration { + check(decl) { + return !decl.value.split(/\s+/).some((i) => { + let lower = i.toLowerCase(); + return lower === "reverse" || lower === "alternate-reverse"; + }); + } + }; + Animation.names = ["animation", "animation-direction"]; + module2.exports = Animation; + } +}); + +// node_modules/autoprefixer/lib/hacks/flex-flow.js +var require_flex_flow = __commonJS({ + "node_modules/autoprefixer/lib/hacks/flex-flow.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var FlexFlow = class extends Declaration { + insert(decl, prefix, prefixes) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec !== 2009) { + return super.insert(decl, prefix, prefixes); + } + let values = decl.value.split(/\s+/).filter((i) => i !== "wrap" && i !== "nowrap" && "wrap-reverse"); + if (values.length === 0) { + return void 0; + } + let already = decl.parent.some( + (i) => i.prop === prefix + "box-orient" || i.prop === prefix + "box-direction" + ); + if (already) { + return void 0; + } + let value = values[0]; + let orient = value.includes("row") ? "horizontal" : "vertical"; + let dir = value.includes("reverse") ? "reverse" : "normal"; + let cloned = this.clone(decl); + cloned.prop = prefix + "box-orient"; + cloned.value = orient; + if (this.needCascade(decl)) { + cloned.raws.before = this.calcBefore(prefixes, decl, prefix); + } + decl.parent.insertBefore(decl, cloned); + cloned = this.clone(decl); + cloned.prop = prefix + "box-direction"; + cloned.value = dir; + if (this.needCascade(decl)) { + cloned.raws.before = this.calcBefore(prefixes, decl, prefix); + } + return decl.parent.insertBefore(decl, cloned); + } + }; + FlexFlow.names = ["flex-flow", "box-direction", "box-orient"]; + module2.exports = FlexFlow; + } +}); + +// node_modules/autoprefixer/lib/hacks/flex-grow.js +var require_flex_grow = __commonJS({ + "node_modules/autoprefixer/lib/hacks/flex-grow.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var Flex = class extends Declaration { + normalize() { + return "flex"; + } + prefixed(prop, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2009) { + return prefix + "box-flex"; + } + if (spec === 2012) { + return prefix + "flex-positive"; + } + return super.prefixed(prop, prefix); + } + }; + Flex.names = ["flex-grow", "flex-positive"]; + module2.exports = Flex; + } +}); + +// node_modules/autoprefixer/lib/hacks/flex-wrap.js +var require_flex_wrap = __commonJS({ + "node_modules/autoprefixer/lib/hacks/flex-wrap.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var FlexWrap = class extends Declaration { + set(decl, prefix) { + let spec = flexSpec(prefix)[0]; + if (spec !== 2009) { + return super.set(decl, prefix); + } + return void 0; + } + }; + FlexWrap.names = ["flex-wrap"]; + module2.exports = FlexWrap; + } +}); + +// node_modules/autoprefixer/lib/hacks/grid-area.js +var require_grid_area = __commonJS({ + "node_modules/autoprefixer/lib/hacks/grid-area.js"(exports2, module2) { + var Declaration = require_declaration2(); + var utils = require_grid_utils(); + var GridArea = class extends Declaration { + insert(decl, prefix, prefixes, result) { + if (prefix !== "-ms-") + return super.insert(decl, prefix, prefixes); + let values = utils.parse(decl); + let [rowStart, rowSpan] = utils.translate(values, 0, 2); + let [columnStart, columnSpan] = utils.translate(values, 1, 3); + [ + ["grid-row", rowStart], + ["grid-row-span", rowSpan], + ["grid-column", columnStart], + ["grid-column-span", columnSpan] + ].forEach(([prop, value]) => { + utils.insertDecl(decl, prop, value); + }); + utils.warnTemplateSelectorNotFound(decl, result); + utils.warnIfGridRowColumnExists(decl, result); + return void 0; + } + }; + GridArea.names = ["grid-area"]; + module2.exports = GridArea; + } +}); + +// node_modules/autoprefixer/lib/hacks/place-self.js +var require_place_self = __commonJS({ + "node_modules/autoprefixer/lib/hacks/place-self.js"(exports2, module2) { + var Declaration = require_declaration2(); + var utils = require_grid_utils(); + var PlaceSelf = class extends Declaration { + insert(decl, prefix, prefixes) { + if (prefix !== "-ms-") + return super.insert(decl, prefix, prefixes); + if (decl.parent.some((i) => i.prop === "-ms-grid-row-align")) { + return void 0; + } + let [[first, second]] = utils.parse(decl); + if (second) { + utils.insertDecl(decl, "grid-row-align", first); + utils.insertDecl(decl, "grid-column-align", second); + } else { + utils.insertDecl(decl, "grid-row-align", first); + utils.insertDecl(decl, "grid-column-align", first); + } + return void 0; + } + }; + PlaceSelf.names = ["place-self"]; + module2.exports = PlaceSelf; + } +}); + +// node_modules/autoprefixer/lib/hacks/grid-start.js +var require_grid_start = __commonJS({ + "node_modules/autoprefixer/lib/hacks/grid-start.js"(exports2, module2) { + var Declaration = require_declaration2(); + var GridStart = class extends Declaration { + check(decl) { + let value = decl.value; + return !value.includes("/") && !value.includes("span"); + } + normalize(prop) { + return prop.replace("-start", ""); + } + prefixed(prop, prefix) { + let result = super.prefixed(prop, prefix); + if (prefix === "-ms-") { + result = result.replace("-start", ""); + } + return result; + } + }; + GridStart.names = ["grid-row-start", "grid-column-start"]; + module2.exports = GridStart; + } +}); + +// node_modules/autoprefixer/lib/hacks/align-self.js +var require_align_self = __commonJS({ + "node_modules/autoprefixer/lib/hacks/align-self.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var AlignSelf = class extends Declaration { + check(decl) { + return decl.parent && !decl.parent.some((i) => { + return i.prop && i.prop.startsWith("grid-"); + }); + } + prefixed(prop, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2012) { + return prefix + "flex-item-align"; + } + return super.prefixed(prop, prefix); + } + normalize() { + return "align-self"; + } + set(decl, prefix) { + let spec = flexSpec(prefix)[0]; + if (spec === 2012) { + decl.value = AlignSelf.oldValues[decl.value] || decl.value; + return super.set(decl, prefix); + } + if (spec === "final") { + return super.set(decl, prefix); + } + return void 0; + } + }; + AlignSelf.names = ["align-self", "flex-item-align"]; + AlignSelf.oldValues = { + "flex-end": "end", + "flex-start": "start" + }; + module2.exports = AlignSelf; + } +}); + +// node_modules/autoprefixer/lib/hacks/appearance.js +var require_appearance = __commonJS({ + "node_modules/autoprefixer/lib/hacks/appearance.js"(exports2, module2) { + var Declaration = require_declaration2(); + var utils = require_utils(); + var Appearance = class extends Declaration { + constructor(name, prefixes, all) { + super(name, prefixes, all); + if (this.prefixes) { + this.prefixes = utils.uniq( + this.prefixes.map((i) => { + if (i === "-ms-") { + return "-webkit-"; + } + return i; + }) + ); + } + } + }; + Appearance.names = ["appearance"]; + module2.exports = Appearance; + } +}); + +// node_modules/autoprefixer/lib/hacks/flex-basis.js +var require_flex_basis = __commonJS({ + "node_modules/autoprefixer/lib/hacks/flex-basis.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var FlexBasis = class extends Declaration { + normalize() { + return "flex-basis"; + } + prefixed(prop, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2012) { + return prefix + "flex-preferred-size"; + } + return super.prefixed(prop, prefix); + } + set(decl, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2012 || spec === "final") { + return super.set(decl, prefix); + } + return void 0; + } + }; + FlexBasis.names = ["flex-basis", "flex-preferred-size"]; + module2.exports = FlexBasis; + } +}); + +// node_modules/autoprefixer/lib/hacks/mask-border.js +var require_mask_border = __commonJS({ + "node_modules/autoprefixer/lib/hacks/mask-border.js"(exports2, module2) { + var Declaration = require_declaration2(); + var MaskBorder = class extends Declaration { + normalize() { + return this.name.replace("box-image", "border"); + } + prefixed(prop, prefix) { + let result = super.prefixed(prop, prefix); + if (prefix === "-webkit-") { + result = result.replace("border", "box-image"); + } + return result; + } + }; + MaskBorder.names = [ + "mask-border", + "mask-border-source", + "mask-border-slice", + "mask-border-width", + "mask-border-outset", + "mask-border-repeat", + "mask-box-image", + "mask-box-image-source", + "mask-box-image-slice", + "mask-box-image-width", + "mask-box-image-outset", + "mask-box-image-repeat" + ]; + module2.exports = MaskBorder; + } +}); + +// node_modules/autoprefixer/lib/hacks/mask-composite.js +var require_mask_composite = __commonJS({ + "node_modules/autoprefixer/lib/hacks/mask-composite.js"(exports2, module2) { + var Declaration = require_declaration2(); + var MaskComposite = class extends Declaration { + insert(decl, prefix, prefixes) { + let isCompositeProp = decl.prop === "mask-composite"; + let compositeValues; + if (isCompositeProp) { + compositeValues = decl.value.split(","); + } else { + compositeValues = decl.value.match(MaskComposite.regexp) || []; + } + compositeValues = compositeValues.map((el) => el.trim()).filter((el) => el); + let hasCompositeValues = compositeValues.length; + let compositeDecl; + if (hasCompositeValues) { + compositeDecl = this.clone(decl); + compositeDecl.value = compositeValues.map((value) => MaskComposite.oldValues[value] || value).join(", "); + if (compositeValues.includes("intersect")) { + compositeDecl.value += ", xor"; + } + compositeDecl.prop = prefix + "mask-composite"; + } + if (isCompositeProp) { + if (!hasCompositeValues) { + return void 0; + } + if (this.needCascade(decl)) { + compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix); + } + return decl.parent.insertBefore(decl, compositeDecl); + } + let cloned = this.clone(decl); + cloned.prop = prefix + cloned.prop; + if (hasCompositeValues) { + cloned.value = cloned.value.replace(MaskComposite.regexp, ""); + } + if (this.needCascade(decl)) { + cloned.raws.before = this.calcBefore(prefixes, decl, prefix); + } + decl.parent.insertBefore(decl, cloned); + if (!hasCompositeValues) { + return decl; + } + if (this.needCascade(decl)) { + compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix); + } + return decl.parent.insertBefore(decl, compositeDecl); + } + }; + MaskComposite.names = ["mask", "mask-composite"]; + MaskComposite.oldValues = { + add: "source-over", + subtract: "source-out", + intersect: "source-in", + exclude: "xor" + }; + MaskComposite.regexp = new RegExp( + `\\s+(${Object.keys(MaskComposite.oldValues).join( + "|" + )})\\b(?!\\))\\s*(?=[,])`, + "ig" + ); + module2.exports = MaskComposite; + } +}); + +// node_modules/autoprefixer/lib/hacks/align-items.js +var require_align_items = __commonJS({ + "node_modules/autoprefixer/lib/hacks/align-items.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var AlignItems = class extends Declaration { + prefixed(prop, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2009) { + return prefix + "box-align"; + } + if (spec === 2012) { + return prefix + "flex-align"; + } + return super.prefixed(prop, prefix); + } + normalize() { + return "align-items"; + } + set(decl, prefix) { + let spec = flexSpec(prefix)[0]; + if (spec === 2009 || spec === 2012) { + decl.value = AlignItems.oldValues[decl.value] || decl.value; + } + return super.set(decl, prefix); + } + }; + AlignItems.names = ["align-items", "flex-align", "box-align"]; + AlignItems.oldValues = { + "flex-end": "end", + "flex-start": "start" + }; + module2.exports = AlignItems; + } +}); + +// node_modules/autoprefixer/lib/hacks/user-select.js +var require_user_select = __commonJS({ + "node_modules/autoprefixer/lib/hacks/user-select.js"(exports2, module2) { + var Declaration = require_declaration2(); + var UserSelect = class extends Declaration { + set(decl, prefix) { + if (prefix === "-ms-" && decl.value === "contain") { + decl.value = "element"; + } + return super.set(decl, prefix); + } + insert(decl, prefix, prefixes) { + if (decl.value === "all" && prefix === "-ms-") { + return void 0; + } else { + return super.insert(decl, prefix, prefixes); + } + } + }; + UserSelect.names = ["user-select"]; + module2.exports = UserSelect; + } +}); + +// node_modules/autoprefixer/lib/hacks/flex-shrink.js +var require_flex_shrink = __commonJS({ + "node_modules/autoprefixer/lib/hacks/flex-shrink.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var FlexShrink = class extends Declaration { + normalize() { + return "flex-shrink"; + } + prefixed(prop, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2012) { + return prefix + "flex-negative"; + } + return super.prefixed(prop, prefix); + } + set(decl, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2012 || spec === "final") { + return super.set(decl, prefix); + } + return void 0; + } + }; + FlexShrink.names = ["flex-shrink", "flex-negative"]; + module2.exports = FlexShrink; + } +}); + +// node_modules/autoprefixer/lib/hacks/break-props.js +var require_break_props = __commonJS({ + "node_modules/autoprefixer/lib/hacks/break-props.js"(exports2, module2) { + var Declaration = require_declaration2(); + var BreakProps = class extends Declaration { + prefixed(prop, prefix) { + return `${prefix}column-${prop}`; + } + normalize(prop) { + if (prop.includes("inside")) { + return "break-inside"; + } + if (prop.includes("before")) { + return "break-before"; + } + return "break-after"; + } + set(decl, prefix) { + if (decl.prop === "break-inside" && decl.value === "avoid-column" || decl.value === "avoid-page") { + decl.value = "avoid"; + } + return super.set(decl, prefix); + } + insert(decl, prefix, prefixes) { + if (decl.prop !== "break-inside") { + return super.insert(decl, prefix, prefixes); + } + if (/region/i.test(decl.value) || /page/i.test(decl.value)) { + return void 0; + } + return super.insert(decl, prefix, prefixes); + } + }; + BreakProps.names = [ + "break-inside", + "page-break-inside", + "column-break-inside", + "break-before", + "page-break-before", + "column-break-before", + "break-after", + "page-break-after", + "column-break-after" + ]; + module2.exports = BreakProps; + } +}); + +// node_modules/autoprefixer/lib/hacks/writing-mode.js +var require_writing_mode = __commonJS({ + "node_modules/autoprefixer/lib/hacks/writing-mode.js"(exports2, module2) { + var Declaration = require_declaration2(); + var WritingMode = class extends Declaration { + insert(decl, prefix, prefixes) { + if (prefix === "-ms-") { + let cloned = this.set(this.clone(decl), prefix); + if (this.needCascade(decl)) { + cloned.raws.before = this.calcBefore(prefixes, decl, prefix); + } + let direction = "ltr"; + decl.parent.nodes.forEach((i) => { + if (i.prop === "direction") { + if (i.value === "rtl" || i.value === "ltr") + direction = i.value; + } + }); + cloned.value = WritingMode.msValues[direction][decl.value] || decl.value; + return decl.parent.insertBefore(decl, cloned); + } + return super.insert(decl, prefix, prefixes); + } + }; + WritingMode.names = ["writing-mode"]; + WritingMode.msValues = { + ltr: { + "horizontal-tb": "lr-tb", + "vertical-rl": "tb-rl", + "vertical-lr": "tb-lr" + }, + rtl: { + "horizontal-tb": "rl-tb", + "vertical-rl": "bt-rl", + "vertical-lr": "bt-lr" + } + }; + module2.exports = WritingMode; + } +}); + +// node_modules/autoprefixer/lib/hacks/border-image.js +var require_border_image2 = __commonJS({ + "node_modules/autoprefixer/lib/hacks/border-image.js"(exports2, module2) { + var Declaration = require_declaration2(); + var BorderImage = class extends Declaration { + set(decl, prefix) { + decl.value = decl.value.replace(/\s+fill(\s)/, "$1"); + return super.set(decl, prefix); + } + }; + BorderImage.names = ["border-image"]; + module2.exports = BorderImage; + } +}); + +// node_modules/autoprefixer/lib/hacks/align-content.js +var require_align_content = __commonJS({ + "node_modules/autoprefixer/lib/hacks/align-content.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var AlignContent = class extends Declaration { + prefixed(prop, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2012) { + return prefix + "flex-line-pack"; + } + return super.prefixed(prop, prefix); + } + normalize() { + return "align-content"; + } + set(decl, prefix) { + let spec = flexSpec(prefix)[0]; + if (spec === 2012) { + decl.value = AlignContent.oldValues[decl.value] || decl.value; + return super.set(decl, prefix); + } + if (spec === "final") { + return super.set(decl, prefix); + } + return void 0; + } + }; + AlignContent.names = ["align-content", "flex-line-pack"]; + AlignContent.oldValues = { + "flex-end": "end", + "flex-start": "start", + "space-between": "justify", + "space-around": "distribute" + }; + module2.exports = AlignContent; + } +}); + +// node_modules/autoprefixer/lib/hacks/border-radius.js +var require_border_radius2 = __commonJS({ + "node_modules/autoprefixer/lib/hacks/border-radius.js"(exports2, module2) { + var Declaration = require_declaration2(); + var BorderRadius = class extends Declaration { + prefixed(prop, prefix) { + if (prefix === "-moz-") { + return prefix + (BorderRadius.toMozilla[prop] || prop); + } + return super.prefixed(prop, prefix); + } + normalize(prop) { + return BorderRadius.toNormal[prop] || prop; + } + }; + BorderRadius.names = ["border-radius"]; + BorderRadius.toMozilla = {}; + BorderRadius.toNormal = {}; + for (let ver of ["top", "bottom"]) { + for (let hor of ["left", "right"]) { + let normal = `border-${ver}-${hor}-radius`; + let mozilla = `border-radius-${ver}${hor}`; + BorderRadius.names.push(normal); + BorderRadius.names.push(mozilla); + BorderRadius.toMozilla[normal] = mozilla; + BorderRadius.toNormal[mozilla] = normal; + } + } + module2.exports = BorderRadius; + } +}); + +// node_modules/autoprefixer/lib/hacks/block-logical.js +var require_block_logical = __commonJS({ + "node_modules/autoprefixer/lib/hacks/block-logical.js"(exports2, module2) { + var Declaration = require_declaration2(); + var BlockLogical = class extends Declaration { + prefixed(prop, prefix) { + if (prop.includes("-start")) { + return prefix + prop.replace("-block-start", "-before"); + } + return prefix + prop.replace("-block-end", "-after"); + } + normalize(prop) { + if (prop.includes("-before")) { + return prop.replace("-before", "-block-start"); + } + return prop.replace("-after", "-block-end"); + } + }; + BlockLogical.names = [ + "border-block-start", + "border-block-end", + "margin-block-start", + "margin-block-end", + "padding-block-start", + "padding-block-end", + "border-before", + "border-after", + "margin-before", + "margin-after", + "padding-before", + "padding-after" + ]; + module2.exports = BlockLogical; + } +}); + +// node_modules/autoprefixer/lib/hacks/grid-template.js +var require_grid_template = __commonJS({ + "node_modules/autoprefixer/lib/hacks/grid-template.js"(exports2, module2) { + var Declaration = require_declaration2(); + var { + parseTemplate, + warnMissedAreas, + getGridGap, + warnGridGap, + inheritGridGap + } = require_grid_utils(); + var GridTemplate = class extends Declaration { + insert(decl, prefix, prefixes, result) { + if (prefix !== "-ms-") + return super.insert(decl, prefix, prefixes); + if (decl.parent.some((i) => i.prop === "-ms-grid-rows")) { + return void 0; + } + let gap = getGridGap(decl); + let inheritedGap = inheritGridGap(decl, gap); + let { rows, columns, areas } = parseTemplate({ + decl, + gap: inheritedGap || gap + }); + let hasAreas = Object.keys(areas).length > 0; + let hasRows = Boolean(rows); + let hasColumns = Boolean(columns); + warnGridGap({ + gap, + hasColumns, + decl, + result + }); + warnMissedAreas(areas, decl, result); + if (hasRows && hasColumns || hasAreas) { + decl.cloneBefore({ + prop: "-ms-grid-rows", + value: rows, + raws: {} + }); + } + if (hasColumns) { + decl.cloneBefore({ + prop: "-ms-grid-columns", + value: columns, + raws: {} + }); + } + return decl; + } + }; + GridTemplate.names = ["grid-template"]; + module2.exports = GridTemplate; + } +}); + +// node_modules/autoprefixer/lib/hacks/inline-logical.js +var require_inline_logical = __commonJS({ + "node_modules/autoprefixer/lib/hacks/inline-logical.js"(exports2, module2) { + var Declaration = require_declaration2(); + var InlineLogical = class extends Declaration { + prefixed(prop, prefix) { + return prefix + prop.replace("-inline", ""); + } + normalize(prop) { + return prop.replace(/(margin|padding|border)-(start|end)/, "$1-inline-$2"); + } + }; + InlineLogical.names = [ + "border-inline-start", + "border-inline-end", + "margin-inline-start", + "margin-inline-end", + "padding-inline-start", + "padding-inline-end", + "border-start", + "border-end", + "margin-start", + "margin-end", + "padding-start", + "padding-end" + ]; + module2.exports = InlineLogical; + } +}); + +// node_modules/autoprefixer/lib/hacks/grid-row-align.js +var require_grid_row_align = __commonJS({ + "node_modules/autoprefixer/lib/hacks/grid-row-align.js"(exports2, module2) { + var Declaration = require_declaration2(); + var GridRowAlign = class extends Declaration { + check(decl) { + return !decl.value.includes("flex-") && decl.value !== "baseline"; + } + prefixed(prop, prefix) { + return prefix + "grid-row-align"; + } + normalize() { + return "align-self"; + } + }; + GridRowAlign.names = ["grid-row-align"]; + module2.exports = GridRowAlign; + } +}); + +// node_modules/autoprefixer/lib/hacks/transform-decl.js +var require_transform_decl = __commonJS({ + "node_modules/autoprefixer/lib/hacks/transform-decl.js"(exports2, module2) { + var Declaration = require_declaration2(); + var TransformDecl = class extends Declaration { + keyframeParents(decl) { + let { parent } = decl; + while (parent) { + if (parent.type === "atrule" && parent.name === "keyframes") { + return true; + } + ; + ({ parent } = parent); + } + return false; + } + contain3d(decl) { + if (decl.prop === "transform-origin") { + return false; + } + for (let func of TransformDecl.functions3d) { + if (decl.value.includes(`${func}(`)) { + return true; + } + } + return false; + } + set(decl, prefix) { + decl = super.set(decl, prefix); + if (prefix === "-ms-") { + decl.value = decl.value.replace(/rotatez/gi, "rotate"); + } + return decl; + } + insert(decl, prefix, prefixes) { + if (prefix === "-ms-") { + if (!this.contain3d(decl) && !this.keyframeParents(decl)) { + return super.insert(decl, prefix, prefixes); + } + } else if (prefix === "-o-") { + if (!this.contain3d(decl)) { + return super.insert(decl, prefix, prefixes); + } + } else { + return super.insert(decl, prefix, prefixes); + } + return void 0; + } + }; + TransformDecl.names = ["transform", "transform-origin"]; + TransformDecl.functions3d = [ + "matrix3d", + "translate3d", + "translateZ", + "scale3d", + "scaleZ", + "rotate3d", + "rotateX", + "rotateY", + "perspective" + ]; + module2.exports = TransformDecl; + } +}); + +// node_modules/autoprefixer/lib/hacks/flex-direction.js +var require_flex_direction = __commonJS({ + "node_modules/autoprefixer/lib/hacks/flex-direction.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var FlexDirection = class extends Declaration { + normalize() { + return "flex-direction"; + } + insert(decl, prefix, prefixes) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec !== 2009) { + return super.insert(decl, prefix, prefixes); + } + let already = decl.parent.some( + (i) => i.prop === prefix + "box-orient" || i.prop === prefix + "box-direction" + ); + if (already) { + return void 0; + } + let v = decl.value; + let orient, dir; + if (v === "inherit" || v === "initial" || v === "unset") { + orient = v; + dir = v; + } else { + orient = v.includes("row") ? "horizontal" : "vertical"; + dir = v.includes("reverse") ? "reverse" : "normal"; + } + let cloned = this.clone(decl); + cloned.prop = prefix + "box-orient"; + cloned.value = orient; + if (this.needCascade(decl)) { + cloned.raws.before = this.calcBefore(prefixes, decl, prefix); + } + decl.parent.insertBefore(decl, cloned); + cloned = this.clone(decl); + cloned.prop = prefix + "box-direction"; + cloned.value = dir; + if (this.needCascade(decl)) { + cloned.raws.before = this.calcBefore(prefixes, decl, prefix); + } + return decl.parent.insertBefore(decl, cloned); + } + old(prop, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2009) { + return [prefix + "box-orient", prefix + "box-direction"]; + } else { + return super.old(prop, prefix); + } + } + }; + FlexDirection.names = ["flex-direction", "box-direction", "box-orient"]; + module2.exports = FlexDirection; + } +}); + +// node_modules/autoprefixer/lib/hacks/image-rendering.js +var require_image_rendering = __commonJS({ + "node_modules/autoprefixer/lib/hacks/image-rendering.js"(exports2, module2) { + var Declaration = require_declaration2(); + var ImageRendering = class extends Declaration { + check(decl) { + return decl.value === "pixelated"; + } + prefixed(prop, prefix) { + if (prefix === "-ms-") { + return "-ms-interpolation-mode"; + } + return super.prefixed(prop, prefix); + } + set(decl, prefix) { + if (prefix !== "-ms-") + return super.set(decl, prefix); + decl.prop = "-ms-interpolation-mode"; + decl.value = "nearest-neighbor"; + return decl; + } + normalize() { + return "image-rendering"; + } + process(node, result) { + return super.process(node, result); + } + }; + ImageRendering.names = ["image-rendering", "interpolation-mode"]; + module2.exports = ImageRendering; + } +}); + +// node_modules/autoprefixer/lib/hacks/backdrop-filter.js +var require_backdrop_filter = __commonJS({ + "node_modules/autoprefixer/lib/hacks/backdrop-filter.js"(exports2, module2) { + var Declaration = require_declaration2(); + var utils = require_utils(); + var BackdropFilter = class extends Declaration { + constructor(name, prefixes, all) { + super(name, prefixes, all); + if (this.prefixes) { + this.prefixes = utils.uniq( + this.prefixes.map((i) => { + return i === "-ms-" ? "-webkit-" : i; + }) + ); + } + } + }; + BackdropFilter.names = ["backdrop-filter"]; + module2.exports = BackdropFilter; + } +}); + +// node_modules/autoprefixer/lib/hacks/background-clip.js +var require_background_clip = __commonJS({ + "node_modules/autoprefixer/lib/hacks/background-clip.js"(exports2, module2) { + var Declaration = require_declaration2(); + var utils = require_utils(); + var BackgroundClip = class extends Declaration { + constructor(name, prefixes, all) { + super(name, prefixes, all); + if (this.prefixes) { + this.prefixes = utils.uniq( + this.prefixes.map((i) => { + return i === "-ms-" ? "-webkit-" : i; + }) + ); + } + } + check(decl) { + return decl.value.toLowerCase() === "text"; + } + }; + BackgroundClip.names = ["background-clip"]; + module2.exports = BackgroundClip; + } +}); + +// node_modules/autoprefixer/lib/hacks/text-decoration.js +var require_text_decoration2 = __commonJS({ + "node_modules/autoprefixer/lib/hacks/text-decoration.js"(exports2, module2) { + var Declaration = require_declaration2(); + var BASIC = [ + "none", + "underline", + "overline", + "line-through", + "blink", + "inherit", + "initial", + "unset" + ]; + var TextDecoration = class extends Declaration { + check(decl) { + return decl.value.split(/\s+/).some((i) => !BASIC.includes(i)); + } + }; + TextDecoration.names = ["text-decoration"]; + module2.exports = TextDecoration; + } +}); + +// node_modules/autoprefixer/lib/hacks/justify-content.js +var require_justify_content = __commonJS({ + "node_modules/autoprefixer/lib/hacks/justify-content.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var Declaration = require_declaration2(); + var JustifyContent = class extends Declaration { + prefixed(prop, prefix) { + let spec; + [spec, prefix] = flexSpec(prefix); + if (spec === 2009) { + return prefix + "box-pack"; + } + if (spec === 2012) { + return prefix + "flex-pack"; + } + return super.prefixed(prop, prefix); + } + normalize() { + return "justify-content"; + } + set(decl, prefix) { + let spec = flexSpec(prefix)[0]; + if (spec === 2009 || spec === 2012) { + let value = JustifyContent.oldValues[decl.value] || decl.value; + decl.value = value; + if (spec !== 2009 || value !== "distribute") { + return super.set(decl, prefix); + } + } else if (spec === "final") { + return super.set(decl, prefix); + } + return void 0; + } + }; + JustifyContent.names = ["justify-content", "flex-pack", "box-pack"]; + JustifyContent.oldValues = { + "flex-end": "end", + "flex-start": "start", + "space-between": "justify", + "space-around": "distribute" + }; + module2.exports = JustifyContent; + } +}); + +// node_modules/autoprefixer/lib/hacks/background-size.js +var require_background_size = __commonJS({ + "node_modules/autoprefixer/lib/hacks/background-size.js"(exports2, module2) { + var Declaration = require_declaration2(); + var BackgroundSize = class extends Declaration { + set(decl, prefix) { + let value = decl.value.toLowerCase(); + if (prefix === "-webkit-" && !value.includes(" ") && value !== "contain" && value !== "cover") { + decl.value = decl.value + " " + decl.value; + } + return super.set(decl, prefix); + } + }; + BackgroundSize.names = ["background-size"]; + module2.exports = BackgroundSize; + } +}); + +// node_modules/autoprefixer/lib/hacks/grid-row-column.js +var require_grid_row_column = __commonJS({ + "node_modules/autoprefixer/lib/hacks/grid-row-column.js"(exports2, module2) { + var Declaration = require_declaration2(); + var utils = require_grid_utils(); + var GridRowColumn = class extends Declaration { + insert(decl, prefix, prefixes) { + if (prefix !== "-ms-") + return super.insert(decl, prefix, prefixes); + let values = utils.parse(decl); + let [start, span] = utils.translate(values, 0, 1); + let hasStartValueSpan = values[0] && values[0].includes("span"); + if (hasStartValueSpan) { + span = values[0].join("").replace(/\D/g, ""); + } + ; + [ + [decl.prop, start], + [`${decl.prop}-span`, span] + ].forEach(([prop, value]) => { + utils.insertDecl(decl, prop, value); + }); + return void 0; + } + }; + GridRowColumn.names = ["grid-row", "grid-column"]; + module2.exports = GridRowColumn; + } +}); + +// node_modules/autoprefixer/lib/hacks/grid-rows-columns.js +var require_grid_rows_columns = __commonJS({ + "node_modules/autoprefixer/lib/hacks/grid-rows-columns.js"(exports2, module2) { + var Declaration = require_declaration2(); + var { + prefixTrackProp, + prefixTrackValue, + autoplaceGridItems, + getGridGap, + inheritGridGap + } = require_grid_utils(); + var Processor = require_processor2(); + var GridRowsColumns = class extends Declaration { + prefixed(prop, prefix) { + if (prefix === "-ms-") { + return prefixTrackProp({ prop, prefix }); + } + return super.prefixed(prop, prefix); + } + normalize(prop) { + return prop.replace(/^grid-(rows|columns)/, "grid-template-$1"); + } + insert(decl, prefix, prefixes, result) { + if (prefix !== "-ms-") + return super.insert(decl, prefix, prefixes); + let { parent, prop, value } = decl; + let isRowProp = prop.includes("rows"); + let isColumnProp = prop.includes("columns"); + let hasGridTemplate = parent.some( + (i) => i.prop === "grid-template" || i.prop === "grid-template-areas" + ); + if (hasGridTemplate && isRowProp) { + return false; + } + let processor = new Processor({ options: {} }); + let status = processor.gridStatus(parent, result); + let gap = getGridGap(decl); + gap = inheritGridGap(decl, gap) || gap; + let gapValue = isRowProp ? gap.row : gap.column; + if ((status === "no-autoplace" || status === true) && !hasGridTemplate) { + gapValue = null; + } + let prefixValue = prefixTrackValue({ + value, + gap: gapValue + }); + decl.cloneBefore({ + prop: prefixTrackProp({ prop, prefix }), + value: prefixValue + }); + let autoflow = parent.nodes.find((i) => i.prop === "grid-auto-flow"); + let autoflowValue = "row"; + if (autoflow && !processor.disabled(autoflow, result)) { + autoflowValue = autoflow.value.trim(); + } + if (status === "autoplace") { + let rowDecl = parent.nodes.find((i) => i.prop === "grid-template-rows"); + if (!rowDecl && hasGridTemplate) { + return void 0; + } else if (!rowDecl && !hasGridTemplate) { + decl.warn( + result, + "Autoplacement does not work without grid-template-rows property" + ); + return void 0; + } + let columnDecl = parent.nodes.find((i) => { + return i.prop === "grid-template-columns"; + }); + if (!columnDecl && !hasGridTemplate) { + decl.warn( + result, + "Autoplacement does not work without grid-template-columns property" + ); + } + if (isColumnProp && !hasGridTemplate) { + autoplaceGridItems(decl, result, gap, autoflowValue); + } + } + return void 0; + } + }; + GridRowsColumns.names = [ + "grid-template-rows", + "grid-template-columns", + "grid-rows", + "grid-columns" + ]; + module2.exports = GridRowsColumns; + } +}); + +// node_modules/autoprefixer/lib/hacks/grid-column-align.js +var require_grid_column_align = __commonJS({ + "node_modules/autoprefixer/lib/hacks/grid-column-align.js"(exports2, module2) { + var Declaration = require_declaration2(); + var GridColumnAlign = class extends Declaration { + check(decl) { + return !decl.value.includes("flex-") && decl.value !== "baseline"; + } + prefixed(prop, prefix) { + return prefix + "grid-column-align"; + } + normalize() { + return "justify-self"; + } + }; + GridColumnAlign.names = ["grid-column-align"]; + module2.exports = GridColumnAlign; + } +}); + +// node_modules/autoprefixer/lib/hacks/print-color-adjust.js +var require_print_color_adjust = __commonJS({ + "node_modules/autoprefixer/lib/hacks/print-color-adjust.js"(exports2, module2) { + var Declaration = require_declaration2(); + var PrintColorAdjust = class extends Declaration { + prefixed(prop, prefix) { + if (prefix === "-moz-") { + return "color-adjust"; + } else { + return prefix + "print-color-adjust"; + } + } + normalize() { + return "print-color-adjust"; + } + }; + PrintColorAdjust.names = ["print-color-adjust", "color-adjust"]; + module2.exports = PrintColorAdjust; + } +}); + +// node_modules/autoprefixer/lib/hacks/overscroll-behavior.js +var require_overscroll_behavior = __commonJS({ + "node_modules/autoprefixer/lib/hacks/overscroll-behavior.js"(exports2, module2) { + var Declaration = require_declaration2(); + var OverscrollBehavior = class extends Declaration { + prefixed(prop, prefix) { + return prefix + "scroll-chaining"; + } + normalize() { + return "overscroll-behavior"; + } + set(decl, prefix) { + if (decl.value === "auto") { + decl.value = "chained"; + } else if (decl.value === "none" || decl.value === "contain") { + decl.value = "none"; + } + return super.set(decl, prefix); + } + }; + OverscrollBehavior.names = ["overscroll-behavior", "scroll-chaining"]; + module2.exports = OverscrollBehavior; + } +}); + +// node_modules/autoprefixer/lib/hacks/grid-template-areas.js +var require_grid_template_areas = __commonJS({ + "node_modules/autoprefixer/lib/hacks/grid-template-areas.js"(exports2, module2) { + var Declaration = require_declaration2(); + var { + parseGridAreas, + warnMissedAreas, + prefixTrackProp, + prefixTrackValue, + getGridGap, + warnGridGap, + inheritGridGap + } = require_grid_utils(); + function getGridRows(tpl) { + return tpl.trim().slice(1, -1).split(/["']\s*["']?/g); + } + var GridTemplateAreas = class extends Declaration { + insert(decl, prefix, prefixes, result) { + if (prefix !== "-ms-") + return super.insert(decl, prefix, prefixes); + let hasColumns = false; + let hasRows = false; + let parent = decl.parent; + let gap = getGridGap(decl); + gap = inheritGridGap(decl, gap) || gap; + parent.walkDecls(/-ms-grid-rows/, (i) => i.remove()); + parent.walkDecls(/grid-template-(rows|columns)/, (trackDecl) => { + if (trackDecl.prop === "grid-template-rows") { + hasRows = true; + let { prop, value } = trackDecl; + trackDecl.cloneBefore({ + prop: prefixTrackProp({ prop, prefix }), + value: prefixTrackValue({ value, gap: gap.row }) + }); + } else { + hasColumns = true; + } + }); + let gridRows = getGridRows(decl.value); + if (hasColumns && !hasRows && gap.row && gridRows.length > 1) { + decl.cloneBefore({ + prop: "-ms-grid-rows", + value: prefixTrackValue({ + value: `repeat(${gridRows.length}, auto)`, + gap: gap.row + }), + raws: {} + }); + } + warnGridGap({ + gap, + hasColumns, + decl, + result + }); + let areas = parseGridAreas({ + rows: gridRows, + gap + }); + warnMissedAreas(areas, decl, result); + return decl; + } + }; + GridTemplateAreas.names = ["grid-template-areas"]; + module2.exports = GridTemplateAreas; + } +}); + +// node_modules/autoprefixer/lib/hacks/text-emphasis-position.js +var require_text_emphasis_position = __commonJS({ + "node_modules/autoprefixer/lib/hacks/text-emphasis-position.js"(exports2, module2) { + var Declaration = require_declaration2(); + var TextEmphasisPosition = class extends Declaration { + set(decl, prefix) { + if (prefix === "-webkit-") { + decl.value = decl.value.replace(/\s*(right|left)\s*/i, ""); + } + return super.set(decl, prefix); + } + }; + TextEmphasisPosition.names = ["text-emphasis-position"]; + module2.exports = TextEmphasisPosition; + } +}); + +// node_modules/autoprefixer/lib/hacks/text-decoration-skip-ink.js +var require_text_decoration_skip_ink = __commonJS({ + "node_modules/autoprefixer/lib/hacks/text-decoration-skip-ink.js"(exports2, module2) { + var Declaration = require_declaration2(); + var TextDecorationSkipInk = class extends Declaration { + set(decl, prefix) { + if (decl.prop === "text-decoration-skip-ink" && decl.value === "auto") { + decl.prop = prefix + "text-decoration-skip"; + decl.value = "ink"; + return decl; + } else { + return super.set(decl, prefix); + } + } + }; + TextDecorationSkipInk.names = [ + "text-decoration-skip-ink", + "text-decoration-skip" + ]; + module2.exports = TextDecorationSkipInk; + } +}); + +// node_modules/normalize-range/index.js +var require_normalize_range = __commonJS({ + "node_modules/normalize-range/index.js"(exports2, module2) { + "use strict"; + module2.exports = { + wrap: wrapRange, + limit: limitRange, + validate: validateRange, + test: testRange, + curry, + name + }; + function wrapRange(min, max, value) { + var maxLessMin = max - min; + return ((value - min) % maxLessMin + maxLessMin) % maxLessMin + min; + } + function limitRange(min, max, value) { + return Math.max(min, Math.min(max, value)); + } + function validateRange(min, max, value, minExclusive, maxExclusive) { + if (!testRange(min, max, value, minExclusive, maxExclusive)) { + throw new Error(value + " is outside of range [" + min + "," + max + ")"); + } + return value; + } + function testRange(min, max, value, minExclusive, maxExclusive) { + return !(value < min || value > max || maxExclusive && value === max || minExclusive && value === min); + } + function name(min, max, minExcl, maxExcl) { + return (minExcl ? "(" : "[") + min + "," + max + (maxExcl ? ")" : "]"); + } + function curry(min, max, minExclusive, maxExclusive) { + var boundNameFn = name.bind(null, min, max, minExclusive, maxExclusive); + return { + wrap: wrapRange.bind(null, min, max), + limit: limitRange.bind(null, min, max), + validate: function(value) { + return validateRange(min, max, value, minExclusive, maxExclusive); + }, + test: function(value) { + return testRange(min, max, value, minExclusive, maxExclusive); + }, + toString: boundNameFn, + name: boundNameFn + }; + } + } +}); + +// node_modules/autoprefixer/lib/hacks/gradient.js +var require_gradient = __commonJS({ + "node_modules/autoprefixer/lib/hacks/gradient.js"(exports2, module2) { + var parser = require_lib(); + var range = require_normalize_range(); + var OldValue = require_old_value(); + var Value = require_value(); + var utils = require_utils(); + var IS_DIRECTION = /top|left|right|bottom/gi; + var Gradient = class extends Value { + replace(string, prefix) { + let ast = parser(string); + for (let node of ast.nodes) { + let gradientName = this.name; + if (node.type === "function" && node.value === gradientName) { + node.nodes = this.newDirection(node.nodes); + node.nodes = this.normalize(node.nodes, gradientName); + if (prefix === "-webkit- old") { + let changes = this.oldWebkit(node); + if (!changes) { + return false; + } + } else { + node.nodes = this.convertDirection(node.nodes); + node.value = prefix + node.value; + } + } + } + return ast.toString(); + } + replaceFirst(params, ...words) { + let prefix = words.map((i) => { + if (i === " ") { + return { type: "space", value: i }; + } + return { type: "word", value: i }; + }); + return prefix.concat(params.slice(1)); + } + normalizeUnit(str, full) { + let num = parseFloat(str); + let deg = num / full * 360; + return `${deg}deg`; + } + normalize(nodes, gradientName) { + if (!nodes[0]) + return nodes; + if (/-?\d+(.\d+)?grad/.test(nodes[0].value)) { + nodes[0].value = this.normalizeUnit(nodes[0].value, 400); + } else if (/-?\d+(.\d+)?rad/.test(nodes[0].value)) { + nodes[0].value = this.normalizeUnit(nodes[0].value, 2 * Math.PI); + } else if (/-?\d+(.\d+)?turn/.test(nodes[0].value)) { + nodes[0].value = this.normalizeUnit(nodes[0].value, 1); + } else if (nodes[0].value.includes("deg")) { + let num = parseFloat(nodes[0].value); + num = range.wrap(0, 360, num); + nodes[0].value = `${num}deg`; + } + if (gradientName === "linear-gradient" || gradientName === "repeating-linear-gradient") { + let direction = nodes[0].value; + if (direction === "0deg" || direction === "0") { + nodes = this.replaceFirst(nodes, "to", " ", "top"); + } else if (direction === "90deg") { + nodes = this.replaceFirst(nodes, "to", " ", "right"); + } else if (direction === "180deg") { + nodes = this.replaceFirst(nodes, "to", " ", "bottom"); + } else if (direction === "270deg") { + nodes = this.replaceFirst(nodes, "to", " ", "left"); + } + } + return nodes; + } + newDirection(params) { + if (params[0].value === "to") { + return params; + } + IS_DIRECTION.lastIndex = 0; + if (!IS_DIRECTION.test(params[0].value)) { + return params; + } + params.unshift( + { + type: "word", + value: "to" + }, + { + type: "space", + value: " " + } + ); + for (let i = 2; i < params.length; i++) { + if (params[i].type === "div") { + break; + } + if (params[i].type === "word") { + params[i].value = this.revertDirection(params[i].value); + } + } + return params; + } + isRadial(params) { + let state = "before"; + for (let param of params) { + if (state === "before" && param.type === "space") { + state = "at"; + } else if (state === "at" && param.value === "at") { + state = "after"; + } else if (state === "after" && param.type === "space") { + return true; + } else if (param.type === "div") { + break; + } else { + state = "before"; + } + } + return false; + } + convertDirection(params) { + if (params.length > 0) { + if (params[0].value === "to") { + this.fixDirection(params); + } else if (params[0].value.includes("deg")) { + this.fixAngle(params); + } else if (this.isRadial(params)) { + this.fixRadial(params); + } + } + return params; + } + fixDirection(params) { + params.splice(0, 2); + for (let param of params) { + if (param.type === "div") { + break; + } + if (param.type === "word") { + param.value = this.revertDirection(param.value); + } + } + } + fixAngle(params) { + let first = params[0].value; + first = parseFloat(first); + first = Math.abs(450 - first) % 360; + first = this.roundFloat(first, 3); + params[0].value = `${first}deg`; + } + fixRadial(params) { + let first = []; + let second = []; + let a, b, c, i, next; + for (i = 0; i < params.length - 2; i++) { + a = params[i]; + b = params[i + 1]; + c = params[i + 2]; + if (a.type === "space" && b.value === "at" && c.type === "space") { + next = i + 3; + break; + } else { + first.push(a); + } + } + let div; + for (i = next; i < params.length; i++) { + if (params[i].type === "div") { + div = params[i]; + break; + } else { + second.push(params[i]); + } + } + params.splice(0, i, ...second, div, ...first); + } + revertDirection(word) { + return Gradient.directions[word.toLowerCase()] || word; + } + roundFloat(float, digits) { + return parseFloat(float.toFixed(digits)); + } + oldWebkit(node) { + let { nodes } = node; + let string = parser.stringify(node.nodes); + if (this.name !== "linear-gradient") { + return false; + } + if (nodes[0] && nodes[0].value.includes("deg")) { + return false; + } + if (string.includes("px") || string.includes("-corner") || string.includes("-side")) { + return false; + } + let params = [[]]; + for (let i of nodes) { + params[params.length - 1].push(i); + if (i.type === "div" && i.value === ",") { + params.push([]); + } + } + this.oldDirection(params); + this.colorStops(params); + node.nodes = []; + for (let param of params) { + node.nodes = node.nodes.concat(param); + } + node.nodes.unshift( + { type: "word", value: "linear" }, + this.cloneDiv(node.nodes) + ); + node.value = "-webkit-gradient"; + return true; + } + oldDirection(params) { + let div = this.cloneDiv(params[0]); + if (params[0][0].value !== "to") { + return params.unshift([ + { type: "word", value: Gradient.oldDirections.bottom }, + div + ]); + } else { + let words = []; + for (let node of params[0].slice(2)) { + if (node.type === "word") { + words.push(node.value.toLowerCase()); + } + } + words = words.join(" "); + let old = Gradient.oldDirections[words] || words; + params[0] = [{ type: "word", value: old }, div]; + return params[0]; + } + } + cloneDiv(params) { + for (let i of params) { + if (i.type === "div" && i.value === ",") { + return i; + } + } + return { type: "div", value: ",", after: " " }; + } + colorStops(params) { + let result = []; + for (let i = 0; i < params.length; i++) { + let pos; + let param = params[i]; + let item; + if (i === 0) { + continue; + } + let color = parser.stringify(param[0]); + if (param[1] && param[1].type === "word") { + pos = param[1].value; + } else if (param[2] && param[2].type === "word") { + pos = param[2].value; + } + let stop; + if (i === 1 && (!pos || pos === "0%")) { + stop = `from(${color})`; + } else if (i === params.length - 1 && (!pos || pos === "100%")) { + stop = `to(${color})`; + } else if (pos) { + stop = `color-stop(${pos}, ${color})`; + } else { + stop = `color-stop(${color})`; + } + let div = param[param.length - 1]; + params[i] = [{ type: "word", value: stop }]; + if (div.type === "div" && div.value === ",") { + item = params[i].push(div); + } + result.push(item); + } + return result; + } + old(prefix) { + if (prefix === "-webkit-") { + let type; + if (this.name === "linear-gradient") { + type = "linear"; + } else if (this.name === "repeating-linear-gradient") { + type = "repeating-linear"; + } else if (this.name === "repeating-radial-gradient") { + type = "repeating-radial"; + } else { + type = "radial"; + } + let string = "-gradient"; + let regexp = utils.regexp( + `-webkit-(${type}-gradient|gradient\\(\\s*${type})`, + false + ); + return new OldValue(this.name, prefix + this.name, string, regexp); + } else { + return super.old(prefix); + } + } + add(decl, prefix) { + let p = decl.prop; + if (p.includes("mask")) { + if (prefix === "-webkit-" || prefix === "-webkit- old") { + return super.add(decl, prefix); + } + } else if (p === "list-style" || p === "list-style-image" || p === "content") { + if (prefix === "-webkit-" || prefix === "-webkit- old") { + return super.add(decl, prefix); + } + } else { + return super.add(decl, prefix); + } + return void 0; + } + }; + Gradient.names = [ + "linear-gradient", + "repeating-linear-gradient", + "radial-gradient", + "repeating-radial-gradient" + ]; + Gradient.directions = { + top: "bottom", + left: "right", + bottom: "top", + right: "left" + }; + Gradient.oldDirections = { + "top": "left bottom, left top", + "left": "right top, left top", + "bottom": "left top, left bottom", + "right": "left top, right top", + "top right": "left bottom, right top", + "top left": "right bottom, left top", + "right top": "left bottom, right top", + "right bottom": "left top, right bottom", + "bottom right": "left top, right bottom", + "bottom left": "right top, left bottom", + "left top": "right bottom, left top", + "left bottom": "right top, left bottom" + }; + module2.exports = Gradient; + } +}); + +// node_modules/autoprefixer/lib/hacks/intrinsic.js +var require_intrinsic = __commonJS({ + "node_modules/autoprefixer/lib/hacks/intrinsic.js"(exports2, module2) { + var OldValue = require_old_value(); + var Value = require_value(); + function regexp(name) { + return new RegExp(`(^|[\\s,(])(${name}($|[\\s),]))`, "gi"); + } + var Intrinsic = class extends Value { + regexp() { + if (!this.regexpCache) + this.regexpCache = regexp(this.name); + return this.regexpCache; + } + isStretch() { + return this.name === "stretch" || this.name === "fill" || this.name === "fill-available"; + } + replace(string, prefix) { + if (prefix === "-moz-" && this.isStretch()) { + return string.replace(this.regexp(), "$1-moz-available$3"); + } + if (prefix === "-webkit-" && this.isStretch()) { + return string.replace(this.regexp(), "$1-webkit-fill-available$3"); + } + return super.replace(string, prefix); + } + old(prefix) { + let prefixed = prefix + this.name; + if (this.isStretch()) { + if (prefix === "-moz-") { + prefixed = "-moz-available"; + } else if (prefix === "-webkit-") { + prefixed = "-webkit-fill-available"; + } + } + return new OldValue(this.name, prefixed, prefixed, regexp(prefixed)); + } + add(decl, prefix) { + if (decl.prop.includes("grid") && prefix !== "-webkit-") { + return void 0; + } + return super.add(decl, prefix); + } + }; + Intrinsic.names = [ + "max-content", + "min-content", + "fit-content", + "fill", + "fill-available", + "stretch" + ]; + module2.exports = Intrinsic; + } +}); + +// node_modules/autoprefixer/lib/hacks/pixelated.js +var require_pixelated = __commonJS({ + "node_modules/autoprefixer/lib/hacks/pixelated.js"(exports2, module2) { + var OldValue = require_old_value(); + var Value = require_value(); + var Pixelated = class extends Value { + replace(string, prefix) { + if (prefix === "-webkit-") { + return string.replace(this.regexp(), "$1-webkit-optimize-contrast"); + } + if (prefix === "-moz-") { + return string.replace(this.regexp(), "$1-moz-crisp-edges"); + } + return super.replace(string, prefix); + } + old(prefix) { + if (prefix === "-webkit-") { + return new OldValue(this.name, "-webkit-optimize-contrast"); + } + if (prefix === "-moz-") { + return new OldValue(this.name, "-moz-crisp-edges"); + } + return super.old(prefix); + } + }; + Pixelated.names = ["pixelated"]; + module2.exports = Pixelated; + } +}); + +// node_modules/autoprefixer/lib/hacks/image-set.js +var require_image_set = __commonJS({ + "node_modules/autoprefixer/lib/hacks/image-set.js"(exports2, module2) { + var Value = require_value(); + var ImageSet = class extends Value { + replace(string, prefix) { + let fixed = super.replace(string, prefix); + if (prefix === "-webkit-") { + fixed = fixed.replace(/("[^"]+"|'[^']+')(\s+\d+\w)/gi, "url($1)$2"); + } + return fixed; + } + }; + ImageSet.names = ["image-set"]; + module2.exports = ImageSet; + } +}); + +// node_modules/autoprefixer/lib/hacks/cross-fade.js +var require_cross_fade = __commonJS({ + "node_modules/autoprefixer/lib/hacks/cross-fade.js"(exports2, module2) { + var list = require_postcss().list; + var Value = require_value(); + var CrossFade = class extends Value { + replace(string, prefix) { + return list.space(string).map((value) => { + if (value.slice(0, +this.name.length + 1) !== this.name + "(") { + return value; + } + let close = value.lastIndexOf(")"); + let after = value.slice(close + 1); + let args = value.slice(this.name.length + 1, close); + if (prefix === "-webkit-") { + let match = args.match(/\d*.?\d+%?/); + if (match) { + args = args.slice(match[0].length).trim(); + args += `, ${match[0]}`; + } else { + args += ", 0.5"; + } + } + return prefix + this.name + "(" + args + ")" + after; + }).join(" "); + } + }; + CrossFade.names = ["cross-fade"]; + module2.exports = CrossFade; + } +}); + +// node_modules/autoprefixer/lib/hacks/display-flex.js +var require_display_flex = __commonJS({ + "node_modules/autoprefixer/lib/hacks/display-flex.js"(exports2, module2) { + var flexSpec = require_flex_spec(); + var OldValue = require_old_value(); + var Value = require_value(); + var DisplayFlex = class extends Value { + constructor(name, prefixes) { + super(name, prefixes); + if (name === "display-flex") { + this.name = "flex"; + } + } + check(decl) { + return decl.prop === "display" && decl.value === this.name; + } + prefixed(prefix) { + let spec, value; + [spec, prefix] = flexSpec(prefix); + if (spec === 2009) { + if (this.name === "flex") { + value = "box"; + } else { + value = "inline-box"; + } + } else if (spec === 2012) { + if (this.name === "flex") { + value = "flexbox"; + } else { + value = "inline-flexbox"; + } + } else if (spec === "final") { + value = this.name; + } + return prefix + value; + } + replace(string, prefix) { + return this.prefixed(prefix); + } + old(prefix) { + let prefixed = this.prefixed(prefix); + if (!prefixed) + return void 0; + return new OldValue(this.name, prefixed); + } + }; + DisplayFlex.names = ["display-flex", "inline-flex"]; + module2.exports = DisplayFlex; + } +}); + +// node_modules/autoprefixer/lib/hacks/display-grid.js +var require_display_grid = __commonJS({ + "node_modules/autoprefixer/lib/hacks/display-grid.js"(exports2, module2) { + var Value = require_value(); + var DisplayGrid = class extends Value { + constructor(name, prefixes) { + super(name, prefixes); + if (name === "display-grid") { + this.name = "grid"; + } + } + check(decl) { + return decl.prop === "display" && decl.value === this.name; + } + }; + DisplayGrid.names = ["display-grid", "inline-grid"]; + module2.exports = DisplayGrid; + } +}); + +// node_modules/autoprefixer/lib/hacks/filter-value.js +var require_filter_value = __commonJS({ + "node_modules/autoprefixer/lib/hacks/filter-value.js"(exports2, module2) { + var Value = require_value(); + var FilterValue = class extends Value { + constructor(name, prefixes) { + super(name, prefixes); + if (name === "filter-function") { + this.name = "filter"; + } + } + }; + FilterValue.names = ["filter", "filter-function"]; + module2.exports = FilterValue; + } +}); + +// node_modules/autoprefixer/lib/hacks/autofill.js +var require_autofill = __commonJS({ + "node_modules/autoprefixer/lib/hacks/autofill.js"(exports2, module2) { + var Selector = require_selector(); + var utils = require_utils(); + var Autofill = class extends Selector { + constructor(name, prefixes, all) { + super(name, prefixes, all); + if (this.prefixes) { + this.prefixes = utils.uniq(this.prefixes.map(() => "-webkit-")); + } + } + prefixed(prefix) { + if (prefix === "-webkit-") { + return ":-webkit-autofill"; + } + return `:${prefix}autofill`; + } + }; + Autofill.names = [":autofill"]; + module2.exports = Autofill; + } +}); + +// node_modules/autoprefixer/lib/prefixes.js +var require_prefixes = __commonJS({ + "node_modules/autoprefixer/lib/prefixes.js"(exports2, module2) { + var vendor = require_vendor(); + var Declaration = require_declaration2(); + var Resolution = require_resolution(); + var Transition = require_transition(); + var Processor = require_processor2(); + var Supports = require_supports(); + var Browsers = require_browsers3(); + var Selector = require_selector(); + var AtRule = require_at_rule2(); + var Value = require_value(); + var utils = require_utils(); + var hackFullscreen = require_fullscreen2(); + var hackPlaceholder = require_placeholder(); + var hackPlaceholderShown = require_placeholder_shown(); + var hackFileSelectorButton = require_file_selector_button(); + var hackFlex = require_flex(); + var hackOrder = require_order(); + var hackFilter = require_filter(); + var hackGridEnd = require_grid_end(); + var hackAnimation = require_animation(); + var hackFlexFlow = require_flex_flow(); + var hackFlexGrow = require_flex_grow(); + var hackFlexWrap = require_flex_wrap(); + var hackGridArea = require_grid_area(); + var hackPlaceSelf = require_place_self(); + var hackGridStart = require_grid_start(); + var hackAlignSelf = require_align_self(); + var hackAppearance = require_appearance(); + var hackFlexBasis = require_flex_basis(); + var hackMaskBorder = require_mask_border(); + var hackMaskComposite = require_mask_composite(); + var hackAlignItems = require_align_items(); + var hackUserSelect = require_user_select(); + var hackFlexShrink = require_flex_shrink(); + var hackBreakProps = require_break_props(); + var hackWritingMode = require_writing_mode(); + var hackBorderImage = require_border_image2(); + var hackAlignContent = require_align_content(); + var hackBorderRadius = require_border_radius2(); + var hackBlockLogical = require_block_logical(); + var hackGridTemplate = require_grid_template(); + var hackInlineLogical = require_inline_logical(); + var hackGridRowAlign = require_grid_row_align(); + var hackTransformDecl = require_transform_decl(); + var hackFlexDirection = require_flex_direction(); + var hackImageRendering = require_image_rendering(); + var hackBackdropFilter = require_backdrop_filter(); + var hackBackgroundClip = require_background_clip(); + var hackTextDecoration = require_text_decoration2(); + var hackJustifyContent = require_justify_content(); + var hackBackgroundSize = require_background_size(); + var hackGridRowColumn = require_grid_row_column(); + var hackGridRowsColumns = require_grid_rows_columns(); + var hackGridColumnAlign = require_grid_column_align(); + var hackPrintColorAdjust = require_print_color_adjust(); + var hackOverscrollBehavior = require_overscroll_behavior(); + var hackGridTemplateAreas = require_grid_template_areas(); + var hackTextEmphasisPosition = require_text_emphasis_position(); + var hackTextDecorationSkipInk = require_text_decoration_skip_ink(); + var hackGradient = require_gradient(); + var hackIntrinsic = require_intrinsic(); + var hackPixelated = require_pixelated(); + var hackImageSet = require_image_set(); + var hackCrossFade = require_cross_fade(); + var hackDisplayFlex = require_display_flex(); + var hackDisplayGrid = require_display_grid(); + var hackFilterValue = require_filter_value(); + var hackAutofill = require_autofill(); + Selector.hack(hackAutofill); + Selector.hack(hackFullscreen); + Selector.hack(hackPlaceholder); + Selector.hack(hackPlaceholderShown); + Selector.hack(hackFileSelectorButton); + Declaration.hack(hackFlex); + Declaration.hack(hackOrder); + Declaration.hack(hackFilter); + Declaration.hack(hackGridEnd); + Declaration.hack(hackAnimation); + Declaration.hack(hackFlexFlow); + Declaration.hack(hackFlexGrow); + Declaration.hack(hackFlexWrap); + Declaration.hack(hackGridArea); + Declaration.hack(hackPlaceSelf); + Declaration.hack(hackGridStart); + Declaration.hack(hackAlignSelf); + Declaration.hack(hackAppearance); + Declaration.hack(hackFlexBasis); + Declaration.hack(hackMaskBorder); + Declaration.hack(hackMaskComposite); + Declaration.hack(hackAlignItems); + Declaration.hack(hackUserSelect); + Declaration.hack(hackFlexShrink); + Declaration.hack(hackBreakProps); + Declaration.hack(hackWritingMode); + Declaration.hack(hackBorderImage); + Declaration.hack(hackAlignContent); + Declaration.hack(hackBorderRadius); + Declaration.hack(hackBlockLogical); + Declaration.hack(hackGridTemplate); + Declaration.hack(hackInlineLogical); + Declaration.hack(hackGridRowAlign); + Declaration.hack(hackTransformDecl); + Declaration.hack(hackFlexDirection); + Declaration.hack(hackImageRendering); + Declaration.hack(hackBackdropFilter); + Declaration.hack(hackBackgroundClip); + Declaration.hack(hackTextDecoration); + Declaration.hack(hackJustifyContent); + Declaration.hack(hackBackgroundSize); + Declaration.hack(hackGridRowColumn); + Declaration.hack(hackGridRowsColumns); + Declaration.hack(hackGridColumnAlign); + Declaration.hack(hackOverscrollBehavior); + Declaration.hack(hackGridTemplateAreas); + Declaration.hack(hackPrintColorAdjust); + Declaration.hack(hackTextEmphasisPosition); + Declaration.hack(hackTextDecorationSkipInk); + Value.hack(hackGradient); + Value.hack(hackIntrinsic); + Value.hack(hackPixelated); + Value.hack(hackImageSet); + Value.hack(hackCrossFade); + Value.hack(hackDisplayFlex); + Value.hack(hackDisplayGrid); + Value.hack(hackFilterValue); + var declsCache = /* @__PURE__ */ new Map(); + var Prefixes = class { + constructor(data, browsers, options = {}) { + this.data = data; + this.browsers = browsers; + this.options = options; + [this.add, this.remove] = this.preprocess(this.select(this.data)); + this.transition = new Transition(this); + this.processor = new Processor(this); + } + cleaner() { + if (this.cleanerCache) { + return this.cleanerCache; + } + if (this.browsers.selected.length) { + let empty = new Browsers(this.browsers.data, []); + this.cleanerCache = new Prefixes(this.data, empty, this.options); + } else { + return this; + } + return this.cleanerCache; + } + select(list) { + let selected = { add: {}, remove: {} }; + for (let name in list) { + let data = list[name]; + let add = data.browsers.map((i) => { + let params = i.split(" "); + return { + browser: `${params[0]} ${params[1]}`, + note: params[2] + }; + }); + let notes = add.filter((i) => i.note).map((i) => `${this.browsers.prefix(i.browser)} ${i.note}`); + notes = utils.uniq(notes); + add = add.filter((i) => this.browsers.isSelected(i.browser)).map((i) => { + let prefix = this.browsers.prefix(i.browser); + if (i.note) { + return `${prefix} ${i.note}`; + } else { + return prefix; + } + }); + add = this.sort(utils.uniq(add)); + if (this.options.flexbox === "no-2009") { + add = add.filter((i) => !i.includes("2009")); + } + let all = data.browsers.map((i) => this.browsers.prefix(i)); + if (data.mistakes) { + all = all.concat(data.mistakes); + } + all = all.concat(notes); + all = utils.uniq(all); + if (add.length) { + selected.add[name] = add; + if (add.length < all.length) { + selected.remove[name] = all.filter((i) => !add.includes(i)); + } + } else { + selected.remove[name] = all; + } + } + return selected; + } + sort(prefixes) { + return prefixes.sort((a, b) => { + let aLength = utils.removeNote(a).length; + let bLength = utils.removeNote(b).length; + if (aLength === bLength) { + return b.length - a.length; + } else { + return bLength - aLength; + } + }); + } + preprocess(selected) { + let add = { + "selectors": [], + "@supports": new Supports(Prefixes, this) + }; + for (let name in selected.add) { + let prefixes = selected.add[name]; + if (name === "@keyframes" || name === "@viewport") { + add[name] = new AtRule(name, prefixes, this); + } else if (name === "@resolution") { + add[name] = new Resolution(name, prefixes, this); + } else if (this.data[name].selector) { + add.selectors.push(Selector.load(name, prefixes, this)); + } else { + let props = this.data[name].props; + if (props) { + let value = Value.load(name, prefixes, this); + for (let prop of props) { + if (!add[prop]) { + add[prop] = { values: [] }; + } + add[prop].values.push(value); + } + } else { + let values = add[name] && add[name].values || []; + add[name] = Declaration.load(name, prefixes, this); + add[name].values = values; + } + } + } + let remove = { selectors: [] }; + for (let name in selected.remove) { + let prefixes = selected.remove[name]; + if (this.data[name].selector) { + let selector = Selector.load(name, prefixes); + for (let prefix of prefixes) { + remove.selectors.push(selector.old(prefix)); + } + } else if (name === "@keyframes" || name === "@viewport") { + for (let prefix of prefixes) { + let prefixed = `@${prefix}${name.slice(1)}`; + remove[prefixed] = { remove: true }; + } + } else if (name === "@resolution") { + remove[name] = new Resolution(name, prefixes, this); + } else { + let props = this.data[name].props; + if (props) { + let value = Value.load(name, [], this); + for (let prefix of prefixes) { + let old = value.old(prefix); + if (old) { + for (let prop of props) { + if (!remove[prop]) { + remove[prop] = {}; + } + if (!remove[prop].values) { + remove[prop].values = []; + } + remove[prop].values.push(old); + } + } + } + } else { + for (let p of prefixes) { + let olds = this.decl(name).old(name, p); + if (name === "align-self") { + let a = add[name] && add[name].prefixes; + if (a) { + if (p === "-webkit- 2009" && a.includes("-webkit-")) { + continue; + } else if (p === "-webkit-" && a.includes("-webkit- 2009")) { + continue; + } + } + } + for (let prefixed of olds) { + if (!remove[prefixed]) { + remove[prefixed] = {}; + } + remove[prefixed].remove = true; + } + } + } + } + } + return [add, remove]; + } + decl(prop) { + if (!declsCache.has(prop)) { + declsCache.set(prop, Declaration.load(prop)); + } + return declsCache.get(prop); + } + unprefixed(prop) { + let value = this.normalize(vendor.unprefixed(prop)); + if (value === "flex-direction") { + value = "flex-flow"; + } + return value; + } + normalize(prop) { + return this.decl(prop).normalize(prop); + } + prefixed(prop, prefix) { + prop = vendor.unprefixed(prop); + return this.decl(prop).prefixed(prop, prefix); + } + values(type, prop) { + let data = this[type]; + let global2 = data["*"] && data["*"].values; + let values = data[prop] && data[prop].values; + if (global2 && values) { + return utils.uniq(global2.concat(values)); + } else { + return global2 || values || []; + } + } + group(decl) { + let rule = decl.parent; + let index = rule.index(decl); + let { length } = rule.nodes; + let unprefixed = this.unprefixed(decl.prop); + let checker = (step, callback) => { + index += step; + while (index >= 0 && index < length) { + let other = rule.nodes[index]; + if (other.type === "decl") { + if (step === -1 && other.prop === unprefixed) { + if (!Browsers.withPrefix(other.value)) { + break; + } + } + if (this.unprefixed(other.prop) !== unprefixed) { + break; + } else if (callback(other) === true) { + return true; + } + if (step === 1 && other.prop === unprefixed) { + if (!Browsers.withPrefix(other.value)) { + break; + } + } + } + index += step; + } + return false; + }; + return { + up(callback) { + return checker(-1, callback); + }, + down(callback) { + return checker(1, callback); + } + }; + } + }; + module2.exports = Prefixes; + } +}); + +// node_modules/autoprefixer/data/prefixes.js +var require_prefixes2 = __commonJS({ + "node_modules/autoprefixer/data/prefixes.js"(exports2, module2) { + var unpack = require_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])); + } + } + 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)); + } + var 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); + } + } + module2.exports = result; + var prefixBorderRadius = require_border_radius(); + f( + prefixBorderRadius, + (browsers) => prefix( + [ + "border-radius", + "border-top-left-radius", + "border-top-right-radius", + "border-bottom-right-radius", + "border-bottom-left-radius" + ], + { + mistakes: ["-khtml-", "-ms-", "-o-"], + feature: "border-radius", + browsers + } + ) + ); + var prefixBoxshadow = require_css_boxshadow(); + f( + prefixBoxshadow, + (browsers) => prefix(["box-shadow"], { + mistakes: ["-khtml-"], + feature: "css-boxshadow", + browsers + }) + ); + var prefixAnimation = require_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" + ], + { + mistakes: ["-khtml-", "-ms-"], + feature: "css-animation", + browsers + } + ) + ); + var prefixTransition = require_css_transitions(); + f( + prefixTransition, + (browsers) => prefix( + [ + "transition", + "transition-property", + "transition-duration", + "transition-delay", + "transition-timing-function" + ], + { + mistakes: ["-khtml-", "-ms-"], + browsers, + feature: "css-transitions" + } + ) + ); + var prefixTransform2d = require_transforms2d(); + f( + prefixTransform2d, + (browsers) => prefix(["transform", "transform-origin"], { + feature: "transforms2d", + browsers + }) + ); + var prefixTransforms3d = require_transforms3d(); + f(prefixTransforms3d, (browsers) => { + prefix(["perspective", "perspective-origin"], { + feature: "transforms3d", + browsers + }); + return prefix(["transform-style"], { + mistakes: ["-ms-", "-o-"], + browsers, + feature: "transforms3d" + }); + }); + f( + prefixTransforms3d, + { match: /y\sx|y\s#2/ }, + (browsers) => prefix(["backface-visibility"], { + mistakes: ["-ms-", "-o-"], + feature: "transforms3d", + browsers + }) + ); + var prefixGradients = require_css_gradients(); + f( + prefixGradients, + { match: /y\sx/ }, + (browsers) => prefix( + [ + "linear-gradient", + "repeating-linear-gradient", + "radial-gradient", + "repeating-radial-gradient" + ], + { + props: [ + "background", + "background-image", + "border-image", + "mask", + "list-style", + "list-style-image", + "content", + "mask-image" + ], + mistakes: ["-ms-"], + feature: "css-gradients", + browsers + } + ) + ); + 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" + ], + { + feature: "css-gradients", + browsers + } + ); + }); + var prefixBoxsizing = require_css3_boxsizing(); + f( + prefixBoxsizing, + (browsers) => prefix(["box-sizing"], { + feature: "css3-boxsizing", + browsers + }) + ); + var prefixFilters = require_css_filters(); + f( + prefixFilters, + (browsers) => prefix(["filter"], { + feature: "css-filters", + browsers + }) + ); + var prefixFilterFunction = require_css_filter_function(); + f( + prefixFilterFunction, + (browsers) => prefix(["filter-function"], { + props: [ + "background", + "background-image", + "border-image", + "mask", + "list-style", + "list-style-image", + "content", + "mask-image" + ], + feature: "css-filter-function", + browsers + }) + ); + var prefixBackdrop = require_css_backdrop_filter(); + f( + prefixBackdrop, + { match: /y\sx|y\s#2/ }, + (browsers) => prefix(["backdrop-filter"], { + feature: "css-backdrop-filter", + browsers + }) + ); + var prefixElementFunction = require_css_element_function(); + f( + prefixElementFunction, + (browsers) => prefix(["element"], { + props: [ + "background", + "background-image", + "border-image", + "mask", + "list-style", + "list-style-image", + "content", + "mask-image" + ], + feature: "css-element-function", + browsers + }) + ); + var prefixMulticolumns = require_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" + ], + { + feature: "multicolumn", + browsers + } + ); + let noff = browsers.filter((i) => !/firefox/.test(i)); + prefix(["break-before", "break-after", "break-inside"], { + feature: "multicolumn", + browsers: noff + }); + }); + var prefixUserSelect = require_user_select_none(); + f( + prefixUserSelect, + (browsers) => prefix(["user-select"], { + mistakes: ["-khtml-"], + feature: "user-select-none", + browsers + }) + ); + var prefixFlexbox = require_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"], { + props: ["display"], + feature: "flexbox", + browsers + }); + prefix(["flex", "flex-grow", "flex-shrink", "flex-basis"], { + feature: "flexbox", + browsers + }); + prefix( + [ + "flex-direction", + "flex-wrap", + "flex-flow", + "justify-content", + "order", + "align-items", + "align-self", + "align-content" + ], + { + feature: "flexbox", + browsers + } + ); + }); + f(prefixFlexbox, { match: /y\sx/ }, (browsers) => { + add(["display-flex", "inline-flex"], { + feature: "flexbox", + browsers + }); + add(["flex", "flex-grow", "flex-shrink", "flex-basis"], { + feature: "flexbox", + browsers + }); + add( + [ + "flex-direction", + "flex-wrap", + "flex-flow", + "justify-content", + "order", + "align-items", + "align-self", + "align-content" + ], + { + feature: "flexbox", + browsers + } + ); + }); + var prefixCalc = require_calc(); + f( + prefixCalc, + (browsers) => prefix(["calc"], { + props: ["*"], + feature: "calc", + browsers + }) + ); + var prefixBackgroundOptions = require_background_img_opts(); + f( + prefixBackgroundOptions, + (browsers) => prefix(["background-origin", "background-size"], { + feature: "background-img-opts", + browsers + }) + ); + var prefixBackgroundClipText = require_background_clip_text(); + f( + prefixBackgroundClipText, + (browsers) => prefix(["background-clip"], { + feature: "background-clip-text", + browsers + }) + ); + var prefixFontFeature = require_font_feature(); + f( + prefixFontFeature, + (browsers) => prefix( + [ + "font-feature-settings", + "font-variant-ligatures", + "font-language-override" + ], + { + feature: "font-feature", + browsers + } + ) + ); + var prefixFontKerning = require_font_kerning(); + f( + prefixFontKerning, + (browsers) => prefix(["font-kerning"], { + feature: "font-kerning", + browsers + }) + ); + var prefixBorderImage = require_border_image(); + f( + prefixBorderImage, + (browsers) => prefix(["border-image"], { + feature: "border-image", + browsers + }) + ); + var prefixSelection = require_css_selection(); + f( + prefixSelection, + (browsers) => prefix(["::selection"], { + selector: true, + feature: "css-selection", + browsers + }) + ); + var prefixPlaceholder = require_css_placeholder(); + f(prefixPlaceholder, (browsers) => { + prefix(["::placeholder"], { + selector: true, + feature: "css-placeholder", + browsers: browsers.concat(["ie 10 old", "ie 11 old", "firefox 18 old"]) + }); + }); + var prefixPlaceholderShown = require_css_placeholder_shown(); + f(prefixPlaceholderShown, (browsers) => { + prefix([":placeholder-shown"], { + selector: true, + feature: "css-placeholder-shown", + browsers + }); + }); + var prefixHyphens = require_css_hyphens(); + f( + prefixHyphens, + (browsers) => prefix(["hyphens"], { + feature: "css-hyphens", + browsers + }) + ); + var prefixFullscreen = require_fullscreen(); + f( + prefixFullscreen, + (browsers) => prefix([":fullscreen"], { + selector: true, + feature: "fullscreen", + browsers + }) + ); + f( + prefixFullscreen, + { match: /x(\s#2|$)/ }, + (browsers) => prefix(["::backdrop"], { + selector: true, + feature: "fullscreen", + browsers + }) + ); + var prefixFileSelectorButton = require_css_file_selector_button(); + f( + prefixFileSelectorButton, + (browsers) => prefix(["::file-selector-button"], { + selector: true, + feature: "file-selector-button", + browsers + }) + ); + var prefixAutofill = require_css_autofill(); + f( + prefixAutofill, + (browsers) => prefix([":autofill"], { + selector: true, + feature: "css-autofill", + browsers + }) + ); + var prefixTabsize = require_css3_tabsize(); + f( + prefixTabsize, + (browsers) => prefix(["tab-size"], { + feature: "css3-tabsize", + browsers + }) + ); + var prefixIntrinsic = require_intrinsic_width(); + var 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"], { + props: sizeProps, + feature: "intrinsic-width", + browsers + }) + ); + f( + prefixIntrinsic, + { match: /x|\s#4/ }, + (browsers) => prefix(["fill", "fill-available"], { + props: sizeProps, + feature: "intrinsic-width", + browsers + }) + ); + f( + prefixIntrinsic, + { match: /x|\s#5/ }, + (browsers) => prefix(["fit-content"], { + props: sizeProps, + feature: "intrinsic-width", + browsers + }) + ); + var prefixStretch = require_css_width_stretch(); + f( + prefixStretch, + (browsers) => prefix(["stretch"], { + props: sizeProps, + feature: "css-width-stretch", + browsers + }) + ); + var prefixCursorsNewer = require_css3_cursors_newer(); + f( + prefixCursorsNewer, + (browsers) => prefix(["zoom-in", "zoom-out"], { + props: ["cursor"], + feature: "css3-cursors-newer", + browsers + }) + ); + var prefixCursorsGrab = require_css3_cursors_grab(); + f( + prefixCursorsGrab, + (browsers) => prefix(["grab", "grabbing"], { + props: ["cursor"], + feature: "css3-cursors-grab", + browsers + }) + ); + var prefixSticky = require_css_sticky(); + f( + prefixSticky, + (browsers) => prefix(["sticky"], { + props: ["position"], + feature: "css-sticky", + browsers + }) + ); + var prefixPointer = require_pointer(); + f( + prefixPointer, + (browsers) => prefix(["touch-action"], { + feature: "pointer", + browsers + }) + ); + var prefixDecoration = require_text_decoration(); + f( + prefixDecoration, + { match: /x.*#[235]/ }, + (browsers) => prefix(["text-decoration-skip", "text-decoration-skip-ink"], { + feature: "text-decoration", + browsers + }) + ); + var prefixDecorationShorthand = require_mdn_text_decoration_shorthand(); + f( + prefixDecorationShorthand, + (browsers) => prefix(["text-decoration"], { + feature: "text-decoration", + browsers + }) + ); + var prefixDecorationColor = require_mdn_text_decoration_color(); + f( + prefixDecorationColor, + (browsers) => prefix(["text-decoration-color"], { + feature: "text-decoration", + browsers + }) + ); + var prefixDecorationLine = require_mdn_text_decoration_line(); + f( + prefixDecorationLine, + (browsers) => prefix(["text-decoration-line"], { + feature: "text-decoration", + browsers + }) + ); + var prefixDecorationStyle = require_mdn_text_decoration_style(); + f( + prefixDecorationStyle, + (browsers) => prefix(["text-decoration-style"], { + feature: "text-decoration", + browsers + }) + ); + var prefixTextSizeAdjust = require_text_size_adjust(); + f( + prefixTextSizeAdjust, + (browsers) => prefix(["text-size-adjust"], { + feature: "text-size-adjust", + browsers + }) + ); + var prefixCssMasks = require_css_masks(); + f(prefixCssMasks, (browsers) => { + prefix( + [ + "mask-clip", + "mask-composite", + "mask-image", + "mask-origin", + "mask-repeat", + "mask-border-repeat", + "mask-border-source" + ], + { + feature: "css-masks", + browsers + } + ); + prefix( + [ + "mask", + "mask-position", + "mask-size", + "mask-border", + "mask-border-outset", + "mask-border-width", + "mask-border-slice" + ], + { + feature: "css-masks", + browsers + } + ); + }); + var prefixClipPath = require_css_clip_path(); + f( + prefixClipPath, + (browsers) => prefix(["clip-path"], { + feature: "css-clip-path", + browsers + }) + ); + var prefixBoxdecoration = require_css_boxdecorationbreak(); + f( + prefixBoxdecoration, + (browsers) => prefix(["box-decoration-break"], { + feature: "css-boxdecorationbreak", + browsers + }) + ); + var prefixObjectFit = require_object_fit(); + f( + prefixObjectFit, + (browsers) => prefix(["object-fit", "object-position"], { + feature: "object-fit", + browsers + }) + ); + var prefixShapes = require_css_shapes(); + f( + prefixShapes, + (browsers) => prefix(["shape-margin", "shape-outside", "shape-image-threshold"], { + feature: "css-shapes", + browsers + }) + ); + var prefixTextOverflow = require_text_overflow(); + f( + prefixTextOverflow, + (browsers) => prefix(["text-overflow"], { + feature: "text-overflow", + browsers + }) + ); + var prefixDeviceadaptation = require_css_deviceadaptation(); + f( + prefixDeviceadaptation, + (browsers) => prefix(["@viewport"], { + feature: "css-deviceadaptation", + browsers + }) + ); + var prefixResolut = require_css_media_resolution(); + f( + prefixResolut, + { match: /( x($| )|a #2)/ }, + (browsers) => prefix(["@resolution"], { + feature: "css-media-resolution", + browsers + }) + ); + var prefixTextAlignLast = require_css_text_align_last(); + f( + prefixTextAlignLast, + (browsers) => prefix(["text-align-last"], { + feature: "css-text-align-last", + browsers + }) + ); + var prefixCrispedges = require_css_crisp_edges(); + f( + prefixCrispedges, + { match: /y x|a x #1/ }, + (browsers) => prefix(["pixelated"], { + props: ["image-rendering"], + feature: "css-crisp-edges", + browsers + }) + ); + f( + prefixCrispedges, + { match: /a x #2/ }, + (browsers) => prefix(["image-rendering"], { + feature: "css-crisp-edges", + browsers + }) + ); + var prefixLogicalProps = require_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" + ], + { + feature: "css-logical-props", + browsers + } + ) + ); + 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" + ], + { + feature: "css-logical-props", + browsers + } + ) + ); + var prefixAppearance = require_css_appearance(); + f( + prefixAppearance, + { match: /#2|x/ }, + (browsers) => prefix(["appearance"], { + feature: "css-appearance", + browsers + }) + ); + var prefixSnappoints = require_css_snappoints(); + f( + prefixSnappoints, + (browsers) => prefix( + [ + "scroll-snap-type", + "scroll-snap-coordinate", + "scroll-snap-destination", + "scroll-snap-points-x", + "scroll-snap-points-y" + ], + { + feature: "css-snappoints", + browsers + } + ) + ); + var prefixRegions = require_css_regions(); + f( + prefixRegions, + (browsers) => prefix(["flow-into", "flow-from", "region-fragment"], { + feature: "css-regions", + browsers + }) + ); + var prefixImageSet = require_css_image_set(); + f( + prefixImageSet, + (browsers) => prefix(["image-set"], { + props: [ + "background", + "background-image", + "border-image", + "cursor", + "mask", + "mask-image", + "list-style", + "list-style-image", + "content" + ], + feature: "css-image-set", + browsers + }) + ); + var prefixWritingMode = require_css_writing_mode(); + f( + prefixWritingMode, + { match: /a|x/ }, + (browsers) => prefix(["writing-mode"], { + feature: "css-writing-mode", + browsers + }) + ); + var prefixCrossFade = require_css_cross_fade(); + f( + prefixCrossFade, + (browsers) => prefix(["cross-fade"], { + props: [ + "background", + "background-image", + "border-image", + "mask", + "list-style", + "list-style-image", + "content", + "mask-image" + ], + feature: "css-cross-fade", + browsers + }) + ); + var prefixReadOnly = require_css_read_only_write(); + f( + prefixReadOnly, + (browsers) => prefix([":read-only", ":read-write"], { + selector: true, + feature: "css-read-only-write", + browsers + }) + ); + var prefixTextEmphasis = require_text_emphasis(); + f( + prefixTextEmphasis, + (browsers) => prefix( + [ + "text-emphasis", + "text-emphasis-position", + "text-emphasis-style", + "text-emphasis-color" + ], + { + feature: "text-emphasis", + browsers + } + ) + ); + var prefixGrid = require_css_grid(); + f(prefixGrid, (browsers) => { + prefix(["display-grid", "inline-grid"], { + props: ["display"], + feature: "css-grid", + browsers + }); + 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" + ], + { + feature: "css-grid", + browsers + } + ); + }); + f( + prefixGrid, + { match: /a x/ }, + (browsers) => prefix(["grid-column-align", "grid-row-align"], { + feature: "css-grid", + browsers + }) + ); + var prefixTextSpacing = require_css_text_spacing(); + f( + prefixTextSpacing, + (browsers) => prefix(["text-spacing"], { + feature: "css-text-spacing", + browsers + }) + ); + var prefixAnyLink = require_css_any_link(); + f( + prefixAnyLink, + (browsers) => prefix([":any-link"], { + selector: true, + feature: "css-any-link", + browsers + }) + ); + var bidiIsolate = require_mdn_css_unicode_bidi_isolate(); + f( + bidiIsolate, + (browsers) => prefix(["isolate"], { + props: ["unicode-bidi"], + feature: "css-unicode-bidi", + browsers + }) + ); + var bidiPlaintext = require_mdn_css_unicode_bidi_plaintext(); + f( + bidiPlaintext, + (browsers) => prefix(["plaintext"], { + props: ["unicode-bidi"], + feature: "css-unicode-bidi", + browsers + }) + ); + var bidiOverride = require_mdn_css_unicode_bidi_isolate_override(); + f( + bidiOverride, + { match: /y x/ }, + (browsers) => prefix(["isolate-override"], { + props: ["unicode-bidi"], + feature: "css-unicode-bidi", + browsers + }) + ); + var prefixOverscroll = require_css_overscroll_behavior(); + f( + prefixOverscroll, + { match: /a #1/ }, + (browsers) => prefix(["overscroll-behavior"], { + feature: "css-overscroll-behavior", + browsers + }) + ); + var prefixTextOrientation = require_css_text_orientation(); + f( + prefixTextOrientation, + (browsers) => prefix(["text-orientation"], { + feature: "css-text-orientation", + browsers + }) + ); + var prefixPrintAdjust = require_css_print_color_adjust(); + f( + prefixPrintAdjust, + (browsers) => prefix(["print-color-adjust", "color-adjust"], { + feature: "css-print-color-adjust", + browsers + }) + ); + } +}); + +// node_modules/autoprefixer/lib/info.js +var require_info = __commonJS({ + "node_modules/autoprefixer/lib/info.js"(exports2, module2) { + var browserslist = require_browserslist(); + function capitalize(str) { + return str.slice(0, 1).toUpperCase() + str.slice(1); + } + var NAMES = { + ie: "IE", + ie_mob: "IE Mobile", + ios_saf: "iOS Safari", + op_mini: "Opera Mini", + op_mob: "Opera Mobile", + and_chr: "Chrome for Android", + and_ff: "Firefox for Android", + and_uc: "UC for Android", + and_qq: "QQ Browser", + kaios: "KaiOS Browser", + baidu: "Baidu Browser", + samsung: "Samsung Internet" + }; + function prefix(name, prefixes, note) { + let out = ` ${name}`; + if (note) + out += " *"; + out += ": "; + out += prefixes.map((i) => i.replace(/^-(.*)-$/g, "$1")).join(", "); + out += "\n"; + return out; + } + module2.exports = function(prefixes) { + if (prefixes.browsers.selected.length === 0) { + return "No browsers selected"; + } + let versions = {}; + for (let browser of prefixes.browsers.selected) { + let parts = browser.split(" "); + let name = parts[0]; + let version = parts[1]; + name = NAMES[name] || capitalize(name); + if (versions[name]) { + versions[name].push(version); + } else { + versions[name] = [version]; + } + } + let out = "Browsers:\n"; + for (let browser in versions) { + let list = versions[browser]; + list = list.sort((a, b) => parseFloat(b) - parseFloat(a)); + out += ` ${browser}: ${list.join(", ")} +`; + } + let coverage = browserslist.coverage(prefixes.browsers.selected); + let round = Math.round(coverage * 100) / 100; + out += ` +These browsers account for ${round}% of all users globally +`; + let atrules = []; + for (let name in prefixes.add) { + let data = prefixes.add[name]; + if (name[0] === "@" && data.prefixes) { + atrules.push(prefix(name, data.prefixes)); + } + } + if (atrules.length > 0) { + out += ` +At-Rules: +${atrules.sort().join("")}`; + } + let selectors = []; + for (let selector of prefixes.add.selectors) { + if (selector.prefixes) { + selectors.push(prefix(selector.name, selector.prefixes)); + } + } + if (selectors.length > 0) { + out += ` +Selectors: +${selectors.sort().join("")}`; + } + let values = []; + let props = []; + let hadGrid = false; + for (let name in prefixes.add) { + let data = prefixes.add[name]; + if (name[0] !== "@" && data.prefixes) { + let grid = name.indexOf("grid-") === 0; + if (grid) + hadGrid = true; + props.push(prefix(name, data.prefixes, grid)); + } + if (!Array.isArray(data.values)) { + continue; + } + for (let value of data.values) { + let grid = value.name.includes("grid"); + if (grid) + hadGrid = true; + let string = prefix(value.name, value.prefixes, grid); + if (!values.includes(string)) { + values.push(string); + } + } + } + if (props.length > 0) { + out += ` +Properties: +${props.sort().join("")}`; + } + if (values.length > 0) { + out += ` +Values: +${values.sort().join("")}`; + } + if (hadGrid) { + out += "\n* - Prefixes will be added only on grid: true option.\n"; + } + if (!atrules.length && !selectors.length && !props.length && !values.length) { + out += "\nAwesome! Your browsers don't require any vendor prefixes.\nNow you can remove Autoprefixer from build steps."; + } + return out; + }; + } +}); + +// node_modules/autoprefixer/lib/autoprefixer.js +var require_autoprefixer = __commonJS({ + "node_modules/autoprefixer/lib/autoprefixer.js"(exports2, module2) { + var browserslist = require_browserslist(); + var { agents } = require_unpacker(); + var pico = require_picocolors(); + var Browsers = require_browsers3(); + var Prefixes = require_prefixes(); + var dataPrefixes = require_prefixes2(); + var getInfo = require_info(); + var autoprefixerData = { browsers: agents, prefixes: dataPrefixes }; + var WARNING = "\n Replace Autoprefixer `browsers` option to Browserslist config.\n Use `browserslist` key in `package.json` or `.browserslistrc` file.\n\n Using `browsers` option can cause errors. Browserslist config can\n be used for Babel, Autoprefixer, postcss-normalize and other tools.\n\n If you really need to use option, rename it to `overrideBrowserslist`.\n\n Learn more at:\n https://github.com/browserslist/browserslist#readme\n https://twitter.com/browserslist\n\n"; + function isPlainObject(obj) { + return Object.prototype.toString.apply(obj) === "[object Object]"; + } + var cache = /* @__PURE__ */ new Map(); + function timeCapsule(result, prefixes) { + if (prefixes.browsers.selected.length === 0) { + return; + } + if (prefixes.add.selectors.length > 0) { + return; + } + if (Object.keys(prefixes.add).length > 2) { + return; + } + result.warn( + "Autoprefixer target browsers do not need any prefixes.You do not need Autoprefixer anymore.\nCheck your Browserslist config to be sure that your targets are set up correctly.\n\n Learn more at:\n https://github.com/postcss/autoprefixer#readme\n https://github.com/browserslist/browserslist#readme\n\n" + ); + } + module2.exports = plugin; + function plugin(...reqs) { + let options; + if (reqs.length === 1 && isPlainObject(reqs[0])) { + options = reqs[0]; + reqs = void 0; + } else if (reqs.length === 0 || reqs.length === 1 && !reqs[0]) { + reqs = void 0; + } else if (reqs.length <= 2 && (Array.isArray(reqs[0]) || !reqs[0])) { + options = reqs[1]; + reqs = reqs[0]; + } else if (typeof reqs[reqs.length - 1] === "object") { + options = reqs.pop(); + } + if (!options) { + options = {}; + } + if (options.browser) { + throw new Error( + "Change `browser` option to `overrideBrowserslist` in Autoprefixer" + ); + } else if (options.browserslist) { + throw new Error( + "Change `browserslist` option to `overrideBrowserslist` in Autoprefixer" + ); + } + if (options.overrideBrowserslist) { + reqs = options.overrideBrowserslist; + } else if (options.browsers) { + if (typeof console !== "undefined" && console.warn) { + console.warn( + pico.red(WARNING.replace(/`[^`]+`/g, (i) => pico.yellow(i.slice(1, -1)))) + ); + } + reqs = options.browsers; + } + let brwlstOpts = { + ignoreUnknownVersions: options.ignoreUnknownVersions, + stats: options.stats, + env: options.env + }; + function loadPrefixes(opts) { + let d = autoprefixerData; + let browsers = new Browsers(d.browsers, reqs, opts, brwlstOpts); + let key = browsers.selected.join(", ") + JSON.stringify(options); + if (!cache.has(key)) { + cache.set(key, new Prefixes(d.prefixes, browsers, options)); + } + return cache.get(key); + } + return { + postcssPlugin: "autoprefixer", + prepare(result) { + let prefixes = loadPrefixes({ + from: result.opts.from, + env: options.env + }); + return { + OnceExit(root) { + timeCapsule(result, prefixes); + if (options.remove !== false) { + prefixes.processor.remove(root, result); + } + if (options.add !== false) { + prefixes.processor.add(root, result); + } + } + }; + }, + info(opts) { + opts = opts || {}; + opts.from = opts.from || process.cwd(); + return getInfo(loadPrefixes(opts)); + }, + options, + browsers: reqs + }; + } + plugin.postcss = true; + plugin.data = autoprefixerData; + plugin.defaults = browserslist.defaults; + plugin.info = () => plugin().info(); + } +}); + +// node_modules/yaml/dist/PlainValue-ec8e588e.js +var require_PlainValue_ec8e588e = __commonJS({ + "node_modules/yaml/dist/PlainValue-ec8e588e.js"(exports2) { + "use strict"; + var Char = { + ANCHOR: "&", + COMMENT: "#", + TAG: "!", + DIRECTIVES_END: "-", + DOCUMENT_END: "." + }; + var Type = { + ALIAS: "ALIAS", + BLANK_LINE: "BLANK_LINE", + BLOCK_FOLDED: "BLOCK_FOLDED", + BLOCK_LITERAL: "BLOCK_LITERAL", + COMMENT: "COMMENT", + DIRECTIVE: "DIRECTIVE", + DOCUMENT: "DOCUMENT", + FLOW_MAP: "FLOW_MAP", + FLOW_SEQ: "FLOW_SEQ", + MAP: "MAP", + MAP_KEY: "MAP_KEY", + MAP_VALUE: "MAP_VALUE", + PLAIN: "PLAIN", + QUOTE_DOUBLE: "QUOTE_DOUBLE", + QUOTE_SINGLE: "QUOTE_SINGLE", + SEQ: "SEQ", + SEQ_ITEM: "SEQ_ITEM" + }; + var defaultTagPrefix = "tag:yaml.org,2002:"; + var defaultTags = { + MAP: "tag:yaml.org,2002:map", + SEQ: "tag:yaml.org,2002:seq", + STR: "tag:yaml.org,2002:str" + }; + function findLineStarts(src) { + const ls = [0]; + let offset = src.indexOf("\n"); + while (offset !== -1) { + offset += 1; + ls.push(offset); + offset = src.indexOf("\n", offset); + } + return ls; + } + function getSrcInfo(cst) { + let lineStarts, src; + if (typeof cst === "string") { + lineStarts = findLineStarts(cst); + src = cst; + } else { + if (Array.isArray(cst)) + cst = cst[0]; + if (cst && cst.context) { + if (!cst.lineStarts) + cst.lineStarts = findLineStarts(cst.context.src); + lineStarts = cst.lineStarts; + src = cst.context.src; + } + } + return { + lineStarts, + src + }; + } + function getLinePos(offset, cst) { + if (typeof offset !== "number" || offset < 0) + return null; + const { + lineStarts, + src + } = getSrcInfo(cst); + if (!lineStarts || !src || offset > src.length) + return null; + for (let i = 0; i < lineStarts.length; ++i) { + const start = lineStarts[i]; + if (offset < start) { + return { + line: i, + col: offset - lineStarts[i - 1] + 1 + }; + } + if (offset === start) + return { + line: i + 1, + col: 1 + }; + } + const line = lineStarts.length; + return { + line, + col: offset - lineStarts[line - 1] + 1 + }; + } + function getLine(line, cst) { + const { + lineStarts, + src + } = getSrcInfo(cst); + if (!lineStarts || !(line >= 1) || line > lineStarts.length) + return null; + const start = lineStarts[line - 1]; + let end = lineStarts[line]; + while (end && end > start && src[end - 1] === "\n") + --end; + return src.slice(start, end); + } + function getPrettyContext({ + start, + end + }, cst, maxWidth = 80) { + let src = getLine(start.line, cst); + if (!src) + return null; + let { + col + } = start; + if (src.length > maxWidth) { + if (col <= maxWidth - 10) { + src = src.substr(0, maxWidth - 1) + "\u2026"; + } else { + const halfWidth = Math.round(maxWidth / 2); + if (src.length > col + halfWidth) + src = src.substr(0, col + halfWidth - 1) + "\u2026"; + col -= src.length - maxWidth; + src = "\u2026" + src.substr(1 - maxWidth); + } + } + let errLen = 1; + let errEnd = ""; + if (end) { + if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) { + errLen = end.col - start.col; + } else { + errLen = Math.min(src.length + 1, maxWidth) - col; + errEnd = "\u2026"; + } + } + const offset = col > 1 ? " ".repeat(col - 1) : ""; + const err = "^".repeat(errLen); + return `${src} +${offset}${err}${errEnd}`; + } + var Range = class { + static copy(orig) { + return new Range(orig.start, orig.end); + } + constructor(start, end) { + this.start = start; + this.end = end || start; + } + isEmpty() { + return typeof this.start !== "number" || !this.end || this.end <= this.start; + } + setOrigRange(cr, offset) { + const { + start, + end + } = this; + if (cr.length === 0 || end <= cr[0]) { + this.origStart = start; + this.origEnd = end; + return offset; + } + let i = offset; + while (i < cr.length) { + if (cr[i] > start) + break; + else + ++i; + } + this.origStart = start + i; + const nextOffset = i; + while (i < cr.length) { + if (cr[i] >= end) + break; + else + ++i; + } + this.origEnd = end + i; + return nextOffset; + } + }; + var Node = class { + static addStringTerminator(src, offset, str) { + if (str[str.length - 1] === "\n") + return str; + const next = Node.endOfWhiteSpace(src, offset); + return next >= src.length || src[next] === "\n" ? str + "\n" : str; + } + static atDocumentBoundary(src, offset, sep) { + const ch0 = src[offset]; + if (!ch0) + return true; + const prev = src[offset - 1]; + if (prev && prev !== "\n") + return false; + if (sep) { + if (ch0 !== sep) + return false; + } else { + if (ch0 !== Char.DIRECTIVES_END && ch0 !== Char.DOCUMENT_END) + return false; + } + const ch1 = src[offset + 1]; + const ch2 = src[offset + 2]; + if (ch1 !== ch0 || ch2 !== ch0) + return false; + const ch3 = src[offset + 3]; + return !ch3 || ch3 === "\n" || ch3 === " " || ch3 === " "; + } + static endOfIdentifier(src, offset) { + let ch = src[offset]; + const isVerbatim = ch === "<"; + const notOk = isVerbatim ? ["\n", " ", " ", ">"] : ["\n", " ", " ", "[", "]", "{", "}", ","]; + while (ch && notOk.indexOf(ch) === -1) + ch = src[offset += 1]; + if (isVerbatim && ch === ">") + offset += 1; + return offset; + } + static endOfIndent(src, offset) { + let ch = src[offset]; + while (ch === " ") + ch = src[offset += 1]; + return offset; + } + static endOfLine(src, offset) { + let ch = src[offset]; + while (ch && ch !== "\n") + ch = src[offset += 1]; + return offset; + } + static endOfWhiteSpace(src, offset) { + let ch = src[offset]; + while (ch === " " || ch === " ") + ch = src[offset += 1]; + return offset; + } + static startOfLine(src, offset) { + let ch = src[offset - 1]; + if (ch === "\n") + return offset; + while (ch && ch !== "\n") + ch = src[offset -= 1]; + return offset + 1; + } + static endOfBlockIndent(src, indent, lineStart) { + const inEnd = Node.endOfIndent(src, lineStart); + if (inEnd > lineStart + indent) { + return inEnd; + } else { + const wsEnd = Node.endOfWhiteSpace(src, inEnd); + const ch = src[wsEnd]; + if (!ch || ch === "\n") + return wsEnd; + } + return null; + } + static atBlank(src, offset, endAsBlank) { + const ch = src[offset]; + return ch === "\n" || ch === " " || ch === " " || endAsBlank && !ch; + } + static nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) { + if (!ch || indentDiff < 0) + return false; + if (indentDiff > 0) + return true; + return indicatorAsIndent && ch === "-"; + } + static normalizeOffset(src, offset) { + const ch = src[offset]; + return !ch ? offset : ch !== "\n" && src[offset - 1] === "\n" ? offset - 1 : Node.endOfWhiteSpace(src, offset); + } + static foldNewline(src, offset, indent) { + let inCount = 0; + let error = false; + let fold = ""; + let ch = src[offset + 1]; + while (ch === " " || ch === " " || ch === "\n") { + switch (ch) { + case "\n": + inCount = 0; + offset += 1; + fold += "\n"; + break; + case " ": + if (inCount <= indent) + error = true; + offset = Node.endOfWhiteSpace(src, offset + 2) - 1; + break; + case " ": + inCount += 1; + offset += 1; + break; + } + ch = src[offset + 1]; + } + if (!fold) + fold = " "; + if (ch && inCount <= indent) + error = true; + return { + fold, + offset, + error + }; + } + constructor(type, props, context) { + Object.defineProperty(this, "context", { + value: context || null, + writable: true + }); + this.error = null; + this.range = null; + this.valueRange = null; + this.props = props || []; + this.type = type; + this.value = null; + } + getPropValue(idx, key, skipKey) { + if (!this.context) + return null; + const { + src + } = this.context; + const prop = this.props[idx]; + return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null; + } + get anchor() { + for (let i = 0; i < this.props.length; ++i) { + const anchor = this.getPropValue(i, Char.ANCHOR, true); + if (anchor != null) + return anchor; + } + return null; + } + get comment() { + const comments = []; + for (let i = 0; i < this.props.length; ++i) { + const comment = this.getPropValue(i, Char.COMMENT, true); + if (comment != null) + comments.push(comment); + } + return comments.length > 0 ? comments.join("\n") : null; + } + commentHasRequiredWhitespace(start) { + const { + src + } = this.context; + if (this.header && start === this.header.end) + return false; + if (!this.valueRange) + return false; + const { + end + } = this.valueRange; + return start !== end || Node.atBlank(src, end - 1); + } + get hasComment() { + if (this.context) { + const { + src + } = this.context; + for (let i = 0; i < this.props.length; ++i) { + if (src[this.props[i].start] === Char.COMMENT) + return true; + } + } + return false; + } + get hasProps() { + if (this.context) { + const { + src + } = this.context; + for (let i = 0; i < this.props.length; ++i) { + if (src[this.props[i].start] !== Char.COMMENT) + return true; + } + } + return false; + } + get includesTrailingLines() { + return false; + } + get jsonLike() { + const jsonLikeTypes = [Type.FLOW_MAP, Type.FLOW_SEQ, Type.QUOTE_DOUBLE, Type.QUOTE_SINGLE]; + return jsonLikeTypes.indexOf(this.type) !== -1; + } + get rangeAsLinePos() { + if (!this.range || !this.context) + return void 0; + const start = getLinePos(this.range.start, this.context.root); + if (!start) + return void 0; + const end = getLinePos(this.range.end, this.context.root); + return { + start, + end + }; + } + get rawValue() { + if (!this.valueRange || !this.context) + return null; + const { + start, + end + } = this.valueRange; + return this.context.src.slice(start, end); + } + get tag() { + for (let i = 0; i < this.props.length; ++i) { + const tag = this.getPropValue(i, Char.TAG, false); + if (tag != null) { + if (tag[1] === "<") { + return { + verbatim: tag.slice(2, -1) + }; + } else { + const [_, handle, suffix] = tag.match(/^(.*!)([^!]*)$/); + return { + handle, + suffix + }; + } + } + } + return null; + } + get valueRangeContainsNewline() { + if (!this.valueRange || !this.context) + return false; + const { + start, + end + } = this.valueRange; + const { + src + } = this.context; + for (let i = start; i < end; ++i) { + if (src[i] === "\n") + return true; + } + return false; + } + parseComment(start) { + const { + src + } = this.context; + if (src[start] === Char.COMMENT) { + const end = Node.endOfLine(src, start + 1); + const commentRange = new Range(start, end); + this.props.push(commentRange); + return end; + } + return start; + } + setOrigRanges(cr, offset) { + if (this.range) + offset = this.range.setOrigRange(cr, offset); + if (this.valueRange) + this.valueRange.setOrigRange(cr, offset); + this.props.forEach((prop) => prop.setOrigRange(cr, offset)); + return offset; + } + toString() { + const { + context: { + src + }, + range, + value + } = this; + if (value != null) + return value; + const str = src.slice(range.start, range.end); + return Node.addStringTerminator(src, range.end, str); + } + }; + var YAMLError = class extends Error { + constructor(name, source, message) { + if (!message || !(source instanceof Node)) + throw new Error(`Invalid arguments for new ${name}`); + super(); + this.name = name; + this.message = message; + this.source = source; + } + makePretty() { + if (!this.source) + return; + this.nodeType = this.source.type; + const cst = this.source.context && this.source.context.root; + if (typeof this.offset === "number") { + this.range = new Range(this.offset, this.offset + 1); + const start = cst && getLinePos(this.offset, cst); + if (start) { + const end = { + line: start.line, + col: start.col + 1 + }; + this.linePos = { + start, + end + }; + } + delete this.offset; + } else { + this.range = this.source.range; + this.linePos = this.source.rangeAsLinePos; + } + if (this.linePos) { + const { + line, + col + } = this.linePos.start; + this.message += ` at line ${line}, column ${col}`; + const ctx = cst && getPrettyContext(this.linePos, cst); + if (ctx) + this.message += `: + +${ctx} +`; + } + delete this.source; + } + }; + var YAMLReferenceError = class extends YAMLError { + constructor(source, message) { + super("YAMLReferenceError", source, message); + } + }; + var YAMLSemanticError = class extends YAMLError { + constructor(source, message) { + super("YAMLSemanticError", source, message); + } + }; + var YAMLSyntaxError = class extends YAMLError { + constructor(source, message) { + super("YAMLSyntaxError", source, message); + } + }; + var YAMLWarning = class extends YAMLError { + constructor(source, message) { + super("YAMLWarning", source, message); + } + }; + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; + } + var PlainValue = class extends Node { + static endOfLine(src, start, inFlow) { + let ch = src[start]; + let offset = start; + while (ch && ch !== "\n") { + if (inFlow && (ch === "[" || ch === "]" || ch === "{" || ch === "}" || ch === ",")) + break; + const next = src[offset + 1]; + if (ch === ":" && (!next || next === "\n" || next === " " || next === " " || inFlow && next === ",")) + break; + if ((ch === " " || ch === " ") && next === "#") + break; + offset += 1; + ch = next; + } + return offset; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + let { + start, + end + } = this.valueRange; + const { + src + } = this.context; + let ch = src[end - 1]; + while (start < end && (ch === "\n" || ch === " " || ch === " ")) + ch = src[--end - 1]; + let str = ""; + for (let i = start; i < end; ++i) { + const ch2 = src[i]; + if (ch2 === "\n") { + const { + fold, + offset + } = Node.foldNewline(src, i, -1); + str += fold; + i = offset; + } else if (ch2 === " " || ch2 === " ") { + const wsStart = i; + let next = src[i + 1]; + while (i < end && (next === " " || next === " ")) { + i += 1; + next = src[i + 1]; + } + if (next !== "\n") + str += i > wsStart ? src.slice(wsStart, i + 1) : ch2; + } else { + str += ch2; + } + } + const ch0 = src[start]; + switch (ch0) { + case " ": { + const msg = "Plain value cannot start with a tab character"; + const errors = [new YAMLSemanticError(this, msg)]; + return { + errors, + str + }; + } + case "@": + case "`": { + const msg = `Plain value cannot start with reserved character ${ch0}`; + const errors = [new YAMLSemanticError(this, msg)]; + return { + errors, + str + }; + } + default: + return str; + } + } + parseBlockValue(start) { + const { + indent, + inFlow, + src + } = this.context; + let offset = start; + let valueEnd = start; + for (let ch = src[offset]; ch === "\n"; ch = src[offset]) { + if (Node.atDocumentBoundary(src, offset + 1)) + break; + const end = Node.endOfBlockIndent(src, indent, offset + 1); + if (end === null || src[end] === "#") + break; + if (src[end] === "\n") { + offset = end; + } else { + valueEnd = PlainValue.endOfLine(src, end, inFlow); + offset = valueEnd; + } + } + if (this.valueRange.isEmpty()) + this.valueRange.start = start; + this.valueRange.end = valueEnd; + return valueEnd; + } + parse(context, start) { + this.context = context; + const { + inFlow, + src + } = context; + let offset = start; + const ch = src[offset]; + if (ch && ch !== "#" && ch !== "\n") { + offset = PlainValue.endOfLine(src, start, inFlow); + } + this.valueRange = new Range(start, offset); + offset = Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + if (!this.hasComment || this.valueRange.isEmpty()) { + offset = this.parseBlockValue(offset); + } + return offset; + } + }; + exports2.Char = Char; + exports2.Node = Node; + exports2.PlainValue = PlainValue; + exports2.Range = Range; + exports2.Type = Type; + exports2.YAMLError = YAMLError; + exports2.YAMLReferenceError = YAMLReferenceError; + exports2.YAMLSemanticError = YAMLSemanticError; + exports2.YAMLSyntaxError = YAMLSyntaxError; + exports2.YAMLWarning = YAMLWarning; + exports2._defineProperty = _defineProperty; + exports2.defaultTagPrefix = defaultTagPrefix; + exports2.defaultTags = defaultTags; + } +}); + +// node_modules/yaml/dist/parse-cst.js +var require_parse_cst = __commonJS({ + "node_modules/yaml/dist/parse-cst.js"(exports2) { + "use strict"; + var PlainValue = require_PlainValue_ec8e588e(); + var BlankLine = class extends PlainValue.Node { + constructor() { + super(PlainValue.Type.BLANK_LINE); + } + get includesTrailingLines() { + return true; + } + parse(context, start) { + this.context = context; + this.range = new PlainValue.Range(start, start + 1); + return start + 1; + } + }; + var CollectionItem = class extends PlainValue.Node { + constructor(type, props) { + super(type, props); + this.node = null; + } + get includesTrailingLines() { + return !!this.node && this.node.includesTrailingLines; + } + parse(context, start) { + this.context = context; + const { + parseNode, + src + } = context; + let { + atLineStart, + lineStart + } = context; + if (!atLineStart && this.type === PlainValue.Type.SEQ_ITEM) + this.error = new PlainValue.YAMLSemanticError(this, "Sequence items must not have preceding content on the same line"); + const indent = atLineStart ? start - lineStart : context.indent; + let offset = PlainValue.Node.endOfWhiteSpace(src, start + 1); + let ch = src[offset]; + const inlineComment = ch === "#"; + const comments = []; + let blankLine = null; + while (ch === "\n" || ch === "#") { + if (ch === "#") { + const end2 = PlainValue.Node.endOfLine(src, offset + 1); + comments.push(new PlainValue.Range(offset, end2)); + offset = end2; + } else { + atLineStart = true; + lineStart = offset + 1; + const wsEnd = PlainValue.Node.endOfWhiteSpace(src, lineStart); + if (src[wsEnd] === "\n" && comments.length === 0) { + blankLine = new BlankLine(); + lineStart = blankLine.parse({ + src + }, lineStart); + } + offset = PlainValue.Node.endOfIndent(src, lineStart); + } + ch = src[offset]; + } + if (PlainValue.Node.nextNodeIsIndented(ch, offset - (lineStart + indent), this.type !== PlainValue.Type.SEQ_ITEM)) { + this.node = parseNode({ + atLineStart, + inCollection: false, + indent, + lineStart, + parent: this + }, offset); + } else if (ch && lineStart > start + 1) { + offset = lineStart - 1; + } + if (this.node) { + if (blankLine) { + const items = context.parent.items || context.parent.contents; + if (items) + items.push(blankLine); + } + if (comments.length) + Array.prototype.push.apply(this.props, comments); + offset = this.node.range.end; + } else { + if (inlineComment) { + const c = comments[0]; + this.props.push(c); + offset = c.end; + } else { + offset = PlainValue.Node.endOfLine(src, start + 1); + } + } + const end = this.node ? this.node.valueRange.end : offset; + this.valueRange = new PlainValue.Range(start, end); + return offset; + } + setOrigRanges(cr, offset) { + offset = super.setOrigRanges(cr, offset); + return this.node ? this.node.setOrigRanges(cr, offset) : offset; + } + toString() { + const { + context: { + src + }, + node, + range, + value + } = this; + if (value != null) + return value; + const str = node ? src.slice(range.start, node.range.start) + String(node) : src.slice(range.start, range.end); + return PlainValue.Node.addStringTerminator(src, range.end, str); + } + }; + var Comment = class extends PlainValue.Node { + constructor() { + super(PlainValue.Type.COMMENT); + } + parse(context, start) { + this.context = context; + const offset = this.parseComment(start); + this.range = new PlainValue.Range(start, offset); + return offset; + } + }; + function grabCollectionEndComments(node) { + let cnode = node; + while (cnode instanceof CollectionItem) + cnode = cnode.node; + if (!(cnode instanceof Collection)) + return null; + const len = cnode.items.length; + let ci = -1; + for (let i = len - 1; i >= 0; --i) { + const n = cnode.items[i]; + if (n.type === PlainValue.Type.COMMENT) { + const { + indent, + lineStart + } = n.context; + if (indent > 0 && n.range.start >= lineStart + indent) + break; + ci = i; + } else if (n.type === PlainValue.Type.BLANK_LINE) + ci = i; + else + break; + } + if (ci === -1) + return null; + const ca = cnode.items.splice(ci, len - ci); + const prevEnd = ca[0].range.start; + while (true) { + cnode.range.end = prevEnd; + if (cnode.valueRange && cnode.valueRange.end > prevEnd) + cnode.valueRange.end = prevEnd; + if (cnode === node) + break; + cnode = cnode.context.parent; + } + return ca; + } + var Collection = class extends PlainValue.Node { + static nextContentHasIndent(src, offset, indent) { + const lineStart = PlainValue.Node.endOfLine(src, offset) + 1; + offset = PlainValue.Node.endOfWhiteSpace(src, lineStart); + const ch = src[offset]; + if (!ch) + return false; + if (offset >= lineStart + indent) + return true; + if (ch !== "#" && ch !== "\n") + return false; + return Collection.nextContentHasIndent(src, offset, indent); + } + constructor(firstItem) { + super(firstItem.type === PlainValue.Type.SEQ_ITEM ? PlainValue.Type.SEQ : PlainValue.Type.MAP); + for (let i = firstItem.props.length - 1; i >= 0; --i) { + if (firstItem.props[i].start < firstItem.context.lineStart) { + this.props = firstItem.props.slice(0, i + 1); + firstItem.props = firstItem.props.slice(i + 1); + const itemRange = firstItem.props[0] || firstItem.valueRange; + firstItem.range.start = itemRange.start; + break; + } + } + this.items = [firstItem]; + const ec = grabCollectionEndComments(firstItem); + if (ec) + Array.prototype.push.apply(this.items, ec); + } + get includesTrailingLines() { + return this.items.length > 0; + } + parse(context, start) { + this.context = context; + const { + parseNode, + src + } = context; + let lineStart = PlainValue.Node.startOfLine(src, start); + const firstItem = this.items[0]; + firstItem.context.parent = this; + this.valueRange = PlainValue.Range.copy(firstItem.valueRange); + const indent = firstItem.range.start - firstItem.context.lineStart; + let offset = start; + offset = PlainValue.Node.normalizeOffset(src, offset); + let ch = src[offset]; + let atLineStart = PlainValue.Node.endOfWhiteSpace(src, lineStart) === offset; + let prevIncludesTrailingLines = false; + while (ch) { + while (ch === "\n" || ch === "#") { + if (atLineStart && ch === "\n" && !prevIncludesTrailingLines) { + const blankLine = new BlankLine(); + offset = blankLine.parse({ + src + }, offset); + this.valueRange.end = offset; + if (offset >= src.length) { + ch = null; + break; + } + this.items.push(blankLine); + offset -= 1; + } else if (ch === "#") { + if (offset < lineStart + indent && !Collection.nextContentHasIndent(src, offset, indent)) { + return offset; + } + const comment = new Comment(); + offset = comment.parse({ + indent, + lineStart, + src + }, offset); + this.items.push(comment); + this.valueRange.end = offset; + if (offset >= src.length) { + ch = null; + break; + } + } + lineStart = offset + 1; + offset = PlainValue.Node.endOfIndent(src, lineStart); + if (PlainValue.Node.atBlank(src, offset)) { + const wsEnd = PlainValue.Node.endOfWhiteSpace(src, offset); + const next = src[wsEnd]; + if (!next || next === "\n" || next === "#") { + offset = wsEnd; + } + } + ch = src[offset]; + atLineStart = true; + } + if (!ch) { + break; + } + if (offset !== lineStart + indent && (atLineStart || ch !== ":")) { + if (offset < lineStart + indent) { + if (lineStart > start) + offset = lineStart; + break; + } else if (!this.error) { + const msg = "All collection items must start at the same column"; + this.error = new PlainValue.YAMLSyntaxError(this, msg); + } + } + if (firstItem.type === PlainValue.Type.SEQ_ITEM) { + if (ch !== "-") { + if (lineStart > start) + offset = lineStart; + break; + } + } else if (ch === "-" && !this.error) { + const next = src[offset + 1]; + if (!next || next === "\n" || next === " " || next === " ") { + const msg = "A collection cannot be both a mapping and a sequence"; + this.error = new PlainValue.YAMLSyntaxError(this, msg); + } + } + const node = parseNode({ + atLineStart, + inCollection: true, + indent, + lineStart, + parent: this + }, offset); + if (!node) + return offset; + this.items.push(node); + this.valueRange.end = node.valueRange.end; + offset = PlainValue.Node.normalizeOffset(src, node.range.end); + ch = src[offset]; + atLineStart = false; + prevIncludesTrailingLines = node.includesTrailingLines; + if (ch) { + let ls = offset - 1; + let prev = src[ls]; + while (prev === " " || prev === " ") + prev = src[--ls]; + if (prev === "\n") { + lineStart = ls + 1; + atLineStart = true; + } + } + const ec = grabCollectionEndComments(node); + if (ec) + Array.prototype.push.apply(this.items, ec); + } + return offset; + } + setOrigRanges(cr, offset) { + offset = super.setOrigRanges(cr, offset); + this.items.forEach((node) => { + offset = node.setOrigRanges(cr, offset); + }); + return offset; + } + toString() { + const { + context: { + src + }, + items, + range, + value + } = this; + if (value != null) + return value; + let str = src.slice(range.start, items[0].range.start) + String(items[0]); + for (let i = 1; i < items.length; ++i) { + const item = items[i]; + const { + atLineStart, + indent + } = item.context; + if (atLineStart) + for (let i2 = 0; i2 < indent; ++i2) + str += " "; + str += String(item); + } + return PlainValue.Node.addStringTerminator(src, range.end, str); + } + }; + var Directive = class extends PlainValue.Node { + constructor() { + super(PlainValue.Type.DIRECTIVE); + this.name = null; + } + get parameters() { + const raw = this.rawValue; + return raw ? raw.trim().split(/[ \t]+/) : []; + } + parseName(start) { + const { + src + } = this.context; + let offset = start; + let ch = src[offset]; + while (ch && ch !== "\n" && ch !== " " && ch !== " ") + ch = src[offset += 1]; + this.name = src.slice(start, offset); + return offset; + } + parseParameters(start) { + const { + src + } = this.context; + let offset = start; + let ch = src[offset]; + while (ch && ch !== "\n" && ch !== "#") + ch = src[offset += 1]; + this.valueRange = new PlainValue.Range(start, offset); + return offset; + } + parse(context, start) { + this.context = context; + let offset = this.parseName(start + 1); + offset = this.parseParameters(offset); + offset = this.parseComment(offset); + this.range = new PlainValue.Range(start, offset); + return offset; + } + }; + var Document = class extends PlainValue.Node { + static startCommentOrEndBlankLine(src, start) { + const offset = PlainValue.Node.endOfWhiteSpace(src, start); + const ch = src[offset]; + return ch === "#" || ch === "\n" ? offset : start; + } + constructor() { + super(PlainValue.Type.DOCUMENT); + this.directives = null; + this.contents = null; + this.directivesEndMarker = null; + this.documentEndMarker = null; + } + parseDirectives(start) { + const { + src + } = this.context; + this.directives = []; + let atLineStart = true; + let hasDirectives = false; + let offset = start; + while (!PlainValue.Node.atDocumentBoundary(src, offset, PlainValue.Char.DIRECTIVES_END)) { + offset = Document.startCommentOrEndBlankLine(src, offset); + switch (src[offset]) { + case "\n": + if (atLineStart) { + const blankLine = new BlankLine(); + offset = blankLine.parse({ + src + }, offset); + if (offset < src.length) { + this.directives.push(blankLine); + } + } else { + offset += 1; + atLineStart = true; + } + break; + case "#": + { + const comment = new Comment(); + offset = comment.parse({ + src + }, offset); + this.directives.push(comment); + atLineStart = false; + } + break; + case "%": + { + const directive = new Directive(); + offset = directive.parse({ + parent: this, + src + }, offset); + this.directives.push(directive); + hasDirectives = true; + atLineStart = false; + } + break; + default: + if (hasDirectives) { + this.error = new PlainValue.YAMLSemanticError(this, "Missing directives-end indicator line"); + } else if (this.directives.length > 0) { + this.contents = this.directives; + this.directives = []; + } + return offset; + } + } + if (src[offset]) { + this.directivesEndMarker = new PlainValue.Range(offset, offset + 3); + return offset + 3; + } + if (hasDirectives) { + this.error = new PlainValue.YAMLSemanticError(this, "Missing directives-end indicator line"); + } else if (this.directives.length > 0) { + this.contents = this.directives; + this.directives = []; + } + return offset; + } + parseContents(start) { + const { + parseNode, + src + } = this.context; + if (!this.contents) + this.contents = []; + let lineStart = start; + while (src[lineStart - 1] === "-") + lineStart -= 1; + let offset = PlainValue.Node.endOfWhiteSpace(src, start); + let atLineStart = lineStart === start; + this.valueRange = new PlainValue.Range(offset); + while (!PlainValue.Node.atDocumentBoundary(src, offset, PlainValue.Char.DOCUMENT_END)) { + switch (src[offset]) { + case "\n": + if (atLineStart) { + const blankLine = new BlankLine(); + offset = blankLine.parse({ + src + }, offset); + if (offset < src.length) { + this.contents.push(blankLine); + } + } else { + offset += 1; + atLineStart = true; + } + lineStart = offset; + break; + case "#": + { + const comment = new Comment(); + offset = comment.parse({ + src + }, offset); + this.contents.push(comment); + atLineStart = false; + } + break; + default: { + const iEnd = PlainValue.Node.endOfIndent(src, offset); + const context = { + atLineStart, + indent: -1, + inFlow: false, + inCollection: false, + lineStart, + parent: this + }; + const node = parseNode(context, iEnd); + if (!node) + return this.valueRange.end = iEnd; + this.contents.push(node); + offset = node.range.end; + atLineStart = false; + const ec = grabCollectionEndComments(node); + if (ec) + Array.prototype.push.apply(this.contents, ec); + } + } + offset = Document.startCommentOrEndBlankLine(src, offset); + } + this.valueRange.end = offset; + if (src[offset]) { + this.documentEndMarker = new PlainValue.Range(offset, offset + 3); + offset += 3; + if (src[offset]) { + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + if (src[offset] === "#") { + const comment = new Comment(); + offset = comment.parse({ + src + }, offset); + this.contents.push(comment); + } + switch (src[offset]) { + case "\n": + offset += 1; + break; + case void 0: + break; + default: + this.error = new PlainValue.YAMLSyntaxError(this, "Document end marker line cannot have a non-comment suffix"); + } + } + } + return offset; + } + parse(context, start) { + context.root = this; + this.context = context; + const { + src + } = context; + let offset = src.charCodeAt(start) === 65279 ? start + 1 : start; + offset = this.parseDirectives(offset); + offset = this.parseContents(offset); + return offset; + } + setOrigRanges(cr, offset) { + offset = super.setOrigRanges(cr, offset); + this.directives.forEach((node) => { + offset = node.setOrigRanges(cr, offset); + }); + if (this.directivesEndMarker) + offset = this.directivesEndMarker.setOrigRange(cr, offset); + this.contents.forEach((node) => { + offset = node.setOrigRanges(cr, offset); + }); + if (this.documentEndMarker) + offset = this.documentEndMarker.setOrigRange(cr, offset); + return offset; + } + toString() { + const { + contents, + directives, + value + } = this; + if (value != null) + return value; + let str = directives.join(""); + if (contents.length > 0) { + if (directives.length > 0 || contents[0].type === PlainValue.Type.COMMENT) + str += "---\n"; + str += contents.join(""); + } + if (str[str.length - 1] !== "\n") + str += "\n"; + return str; + } + }; + var Alias = class extends PlainValue.Node { + parse(context, start) { + this.context = context; + const { + src + } = context; + let offset = PlainValue.Node.endOfIdentifier(src, start + 1); + this.valueRange = new PlainValue.Range(start + 1, offset); + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + return offset; + } + }; + var Chomp = { + CLIP: "CLIP", + KEEP: "KEEP", + STRIP: "STRIP" + }; + var BlockValue = class extends PlainValue.Node { + constructor(type, props) { + super(type, props); + this.blockIndent = null; + this.chomping = Chomp.CLIP; + this.header = null; + } + get includesTrailingLines() { + return this.chomping === Chomp.KEEP; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + let { + start, + end + } = this.valueRange; + const { + indent, + src + } = this.context; + if (this.valueRange.isEmpty()) + return ""; + let lastNewLine = null; + let ch = src[end - 1]; + while (ch === "\n" || ch === " " || ch === " ") { + end -= 1; + if (end <= start) { + if (this.chomping === Chomp.KEEP) + break; + else + return ""; + } + if (ch === "\n") + lastNewLine = end; + ch = src[end - 1]; + } + let keepStart = end + 1; + if (lastNewLine) { + if (this.chomping === Chomp.KEEP) { + keepStart = lastNewLine; + end = this.valueRange.end; + } else { + end = lastNewLine; + } + } + const bi = indent + this.blockIndent; + const folded = this.type === PlainValue.Type.BLOCK_FOLDED; + let atStart = true; + let str = ""; + let sep = ""; + let prevMoreIndented = false; + for (let i = start; i < end; ++i) { + for (let j = 0; j < bi; ++j) { + if (src[i] !== " ") + break; + i += 1; + } + const ch2 = src[i]; + if (ch2 === "\n") { + if (sep === "\n") + str += "\n"; + else + sep = "\n"; + } else { + const lineEnd = PlainValue.Node.endOfLine(src, i); + const line = src.slice(i, lineEnd); + i = lineEnd; + if (folded && (ch2 === " " || ch2 === " ") && i < keepStart) { + if (sep === " ") + sep = "\n"; + else if (!prevMoreIndented && !atStart && sep === "\n") + sep = "\n\n"; + str += sep + line; + sep = lineEnd < end && src[lineEnd] || ""; + prevMoreIndented = true; + } else { + str += sep + line; + sep = folded && i < keepStart ? " " : "\n"; + prevMoreIndented = false; + } + if (atStart && line !== "") + atStart = false; + } + } + return this.chomping === Chomp.STRIP ? str : str + "\n"; + } + parseBlockHeader(start) { + const { + src + } = this.context; + let offset = start + 1; + let bi = ""; + while (true) { + const ch = src[offset]; + switch (ch) { + case "-": + this.chomping = Chomp.STRIP; + break; + case "+": + this.chomping = Chomp.KEEP; + break; + case "0": + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + bi += ch; + break; + default: + this.blockIndent = Number(bi) || null; + this.header = new PlainValue.Range(start, offset); + return offset; + } + offset += 1; + } + } + parseBlockValue(start) { + const { + indent, + src + } = this.context; + const explicit = !!this.blockIndent; + let offset = start; + let valueEnd = start; + let minBlockIndent = 1; + for (let ch = src[offset]; ch === "\n"; ch = src[offset]) { + offset += 1; + if (PlainValue.Node.atDocumentBoundary(src, offset)) + break; + const end = PlainValue.Node.endOfBlockIndent(src, indent, offset); + if (end === null) + break; + const ch2 = src[end]; + const lineIndent = end - (offset + indent); + if (!this.blockIndent) { + if (src[end] !== "\n") { + if (lineIndent < minBlockIndent) { + const msg = "Block scalars with more-indented leading empty lines must use an explicit indentation indicator"; + this.error = new PlainValue.YAMLSemanticError(this, msg); + } + this.blockIndent = lineIndent; + } else if (lineIndent > minBlockIndent) { + minBlockIndent = lineIndent; + } + } else if (ch2 && ch2 !== "\n" && lineIndent < this.blockIndent) { + if (src[end] === "#") + break; + if (!this.error) { + const src2 = explicit ? "explicit indentation indicator" : "first line"; + const msg = `Block scalars must not be less indented than their ${src2}`; + this.error = new PlainValue.YAMLSemanticError(this, msg); + } + } + if (src[end] === "\n") { + offset = end; + } else { + offset = valueEnd = PlainValue.Node.endOfLine(src, end); + } + } + if (this.chomping !== Chomp.KEEP) { + offset = src[valueEnd] ? valueEnd + 1 : valueEnd; + } + this.valueRange = new PlainValue.Range(start + 1, offset); + return offset; + } + parse(context, start) { + this.context = context; + const { + src + } = context; + let offset = this.parseBlockHeader(start); + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + offset = this.parseBlockValue(offset); + return offset; + } + setOrigRanges(cr, offset) { + offset = super.setOrigRanges(cr, offset); + return this.header ? this.header.setOrigRange(cr, offset) : offset; + } + }; + var FlowCollection = class extends PlainValue.Node { + constructor(type, props) { + super(type, props); + this.items = null; + } + prevNodeIsJsonLike(idx = this.items.length) { + const node = this.items[idx - 1]; + return !!node && (node.jsonLike || node.type === PlainValue.Type.COMMENT && this.prevNodeIsJsonLike(idx - 1)); + } + parse(context, start) { + this.context = context; + const { + parseNode, + src + } = context; + let { + indent, + lineStart + } = context; + let char = src[start]; + this.items = [{ + char, + offset: start + }]; + let offset = PlainValue.Node.endOfWhiteSpace(src, start + 1); + char = src[offset]; + while (char && char !== "]" && char !== "}") { + switch (char) { + case "\n": + { + lineStart = offset + 1; + const wsEnd = PlainValue.Node.endOfWhiteSpace(src, lineStart); + if (src[wsEnd] === "\n") { + const blankLine = new BlankLine(); + lineStart = blankLine.parse({ + src + }, lineStart); + this.items.push(blankLine); + } + offset = PlainValue.Node.endOfIndent(src, lineStart); + if (offset <= lineStart + indent) { + char = src[offset]; + if (offset < lineStart + indent || char !== "]" && char !== "}") { + const msg = "Insufficient indentation in flow collection"; + this.error = new PlainValue.YAMLSemanticError(this, msg); + } + } + } + break; + case ",": + { + this.items.push({ + char, + offset + }); + offset += 1; + } + break; + case "#": + { + const comment = new Comment(); + offset = comment.parse({ + src + }, offset); + this.items.push(comment); + } + break; + case "?": + case ":": { + const next = src[offset + 1]; + if (next === "\n" || next === " " || next === " " || next === "," || char === ":" && this.prevNodeIsJsonLike()) { + this.items.push({ + char, + offset + }); + offset += 1; + break; + } + } + default: { + const node = parseNode({ + atLineStart: false, + inCollection: false, + inFlow: true, + indent: -1, + lineStart, + parent: this + }, offset); + if (!node) { + this.valueRange = new PlainValue.Range(start, offset); + return offset; + } + this.items.push(node); + offset = PlainValue.Node.normalizeOffset(src, node.range.end); + } + } + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + char = src[offset]; + } + this.valueRange = new PlainValue.Range(start, offset + 1); + if (char) { + this.items.push({ + char, + offset + }); + offset = PlainValue.Node.endOfWhiteSpace(src, offset + 1); + offset = this.parseComment(offset); + } + return offset; + } + setOrigRanges(cr, offset) { + offset = super.setOrigRanges(cr, offset); + this.items.forEach((node) => { + if (node instanceof PlainValue.Node) { + offset = node.setOrigRanges(cr, offset); + } else if (cr.length === 0) { + node.origOffset = node.offset; + } else { + let i = offset; + while (i < cr.length) { + if (cr[i] > node.offset) + break; + else + ++i; + } + node.origOffset = node.offset + i; + offset = i; + } + }); + return offset; + } + toString() { + const { + context: { + src + }, + items, + range, + value + } = this; + if (value != null) + return value; + const nodes = items.filter((item) => item instanceof PlainValue.Node); + let str = ""; + let prevEnd = range.start; + nodes.forEach((node) => { + const prefix = src.slice(prevEnd, node.range.start); + prevEnd = node.range.end; + str += prefix + String(node); + if (str[str.length - 1] === "\n" && src[prevEnd - 1] !== "\n" && src[prevEnd] === "\n") { + prevEnd += 1; + } + }); + str += src.slice(prevEnd, range.end); + return PlainValue.Node.addStringTerminator(src, range.end, str); + } + }; + var QuoteDouble = class extends PlainValue.Node { + static endOfQuote(src, offset) { + let ch = src[offset]; + while (ch && ch !== '"') { + offset += ch === "\\" ? 2 : 1; + ch = src[offset]; + } + return offset + 1; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + const errors = []; + const { + start, + end + } = this.valueRange; + const { + indent, + src + } = this.context; + if (src[end - 1] !== '"') + errors.push(new PlainValue.YAMLSyntaxError(this, 'Missing closing "quote')); + let str = ""; + for (let i = start + 1; i < end - 1; ++i) { + const ch = src[i]; + if (ch === "\n") { + if (PlainValue.Node.atDocumentBoundary(src, i + 1)) + errors.push(new PlainValue.YAMLSemanticError(this, "Document boundary indicators are not allowed within string values")); + const { + fold, + offset, + error + } = PlainValue.Node.foldNewline(src, i, indent); + str += fold; + i = offset; + if (error) + errors.push(new PlainValue.YAMLSemanticError(this, "Multi-line double-quoted string needs to be sufficiently indented")); + } else if (ch === "\\") { + i += 1; + switch (src[i]) { + case "0": + str += "\0"; + break; + case "a": + str += "\x07"; + break; + case "b": + str += "\b"; + break; + case "e": + str += "\x1B"; + break; + case "f": + str += "\f"; + break; + case "n": + str += "\n"; + break; + case "r": + str += "\r"; + break; + case "t": + str += " "; + break; + case "v": + str += "\v"; + break; + case "N": + str += "\x85"; + break; + case "_": + str += "\xA0"; + break; + case "L": + str += "\u2028"; + break; + case "P": + str += "\u2029"; + break; + case " ": + str += " "; + break; + case '"': + str += '"'; + break; + case "/": + str += "/"; + break; + case "\\": + str += "\\"; + break; + case " ": + str += " "; + break; + case "x": + str += this.parseCharCode(i + 1, 2, errors); + i += 2; + break; + case "u": + str += this.parseCharCode(i + 1, 4, errors); + i += 4; + break; + case "U": + str += this.parseCharCode(i + 1, 8, errors); + i += 8; + break; + case "\n": + while (src[i + 1] === " " || src[i + 1] === " ") + i += 1; + break; + default: + errors.push(new PlainValue.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(i - 1, 2)}`)); + str += "\\" + src[i]; + } + } else if (ch === " " || ch === " ") { + const wsStart = i; + let next = src[i + 1]; + while (next === " " || next === " ") { + i += 1; + next = src[i + 1]; + } + if (next !== "\n") + str += i > wsStart ? src.slice(wsStart, i + 1) : ch; + } else { + str += ch; + } + } + return errors.length > 0 ? { + errors, + str + } : str; + } + parseCharCode(offset, length, errors) { + const { + src + } = this.context; + const cc = src.substr(offset, length); + const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc); + const code = ok ? parseInt(cc, 16) : NaN; + if (isNaN(code)) { + errors.push(new PlainValue.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(offset - 2, length + 2)}`)); + return src.substr(offset - 2, length + 2); + } + return String.fromCodePoint(code); + } + parse(context, start) { + this.context = context; + const { + src + } = context; + let offset = QuoteDouble.endOfQuote(src, start + 1); + this.valueRange = new PlainValue.Range(start, offset); + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + return offset; + } + }; + var QuoteSingle = class extends PlainValue.Node { + static endOfQuote(src, offset) { + let ch = src[offset]; + while (ch) { + if (ch === "'") { + if (src[offset + 1] !== "'") + break; + ch = src[offset += 2]; + } else { + ch = src[offset += 1]; + } + } + return offset + 1; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + const errors = []; + const { + start, + end + } = this.valueRange; + const { + indent, + src + } = this.context; + if (src[end - 1] !== "'") + errors.push(new PlainValue.YAMLSyntaxError(this, "Missing closing 'quote")); + let str = ""; + for (let i = start + 1; i < end - 1; ++i) { + const ch = src[i]; + if (ch === "\n") { + if (PlainValue.Node.atDocumentBoundary(src, i + 1)) + errors.push(new PlainValue.YAMLSemanticError(this, "Document boundary indicators are not allowed within string values")); + const { + fold, + offset, + error + } = PlainValue.Node.foldNewline(src, i, indent); + str += fold; + i = offset; + if (error) + errors.push(new PlainValue.YAMLSemanticError(this, "Multi-line single-quoted string needs to be sufficiently indented")); + } else if (ch === "'") { + str += ch; + i += 1; + if (src[i] !== "'") + errors.push(new PlainValue.YAMLSyntaxError(this, "Unescaped single quote? This should not happen.")); + } else if (ch === " " || ch === " ") { + const wsStart = i; + let next = src[i + 1]; + while (next === " " || next === " ") { + i += 1; + next = src[i + 1]; + } + if (next !== "\n") + str += i > wsStart ? src.slice(wsStart, i + 1) : ch; + } else { + str += ch; + } + } + return errors.length > 0 ? { + errors, + str + } : str; + } + parse(context, start) { + this.context = context; + const { + src + } = context; + let offset = QuoteSingle.endOfQuote(src, start + 1); + this.valueRange = new PlainValue.Range(start, offset); + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + return offset; + } + }; + function createNewNode(type, props) { + switch (type) { + case PlainValue.Type.ALIAS: + return new Alias(type, props); + case PlainValue.Type.BLOCK_FOLDED: + case PlainValue.Type.BLOCK_LITERAL: + return new BlockValue(type, props); + case PlainValue.Type.FLOW_MAP: + case PlainValue.Type.FLOW_SEQ: + return new FlowCollection(type, props); + case PlainValue.Type.MAP_KEY: + case PlainValue.Type.MAP_VALUE: + case PlainValue.Type.SEQ_ITEM: + return new CollectionItem(type, props); + case PlainValue.Type.COMMENT: + case PlainValue.Type.PLAIN: + return new PlainValue.PlainValue(type, props); + case PlainValue.Type.QUOTE_DOUBLE: + return new QuoteDouble(type, props); + case PlainValue.Type.QUOTE_SINGLE: + return new QuoteSingle(type, props); + default: + return null; + } + } + var ParseContext = class { + static parseType(src, offset, inFlow) { + switch (src[offset]) { + case "*": + return PlainValue.Type.ALIAS; + case ">": + return PlainValue.Type.BLOCK_FOLDED; + case "|": + return PlainValue.Type.BLOCK_LITERAL; + case "{": + return PlainValue.Type.FLOW_MAP; + case "[": + return PlainValue.Type.FLOW_SEQ; + case "?": + return !inFlow && PlainValue.Node.atBlank(src, offset + 1, true) ? PlainValue.Type.MAP_KEY : PlainValue.Type.PLAIN; + case ":": + return !inFlow && PlainValue.Node.atBlank(src, offset + 1, true) ? PlainValue.Type.MAP_VALUE : PlainValue.Type.PLAIN; + case "-": + return !inFlow && PlainValue.Node.atBlank(src, offset + 1, true) ? PlainValue.Type.SEQ_ITEM : PlainValue.Type.PLAIN; + case '"': + return PlainValue.Type.QUOTE_DOUBLE; + case "'": + return PlainValue.Type.QUOTE_SINGLE; + default: + return PlainValue.Type.PLAIN; + } + } + constructor(orig = {}, { + atLineStart, + inCollection, + inFlow, + indent, + lineStart, + parent + } = {}) { + PlainValue._defineProperty(this, "parseNode", (overlay, start) => { + if (PlainValue.Node.atDocumentBoundary(this.src, start)) + return null; + const context = new ParseContext(this, overlay); + const { + props, + type, + valueStart + } = context.parseProps(start); + const node = createNewNode(type, props); + let offset = node.parse(context, valueStart); + node.range = new PlainValue.Range(start, offset); + if (offset <= start) { + node.error = new Error(`Node#parse consumed no characters`); + node.error.parseEnd = offset; + node.error.source = node; + node.range.end = start + 1; + } + if (context.nodeStartsCollection(node)) { + if (!node.error && !context.atLineStart && context.parent.type === PlainValue.Type.DOCUMENT) { + node.error = new PlainValue.YAMLSyntaxError(node, "Block collection must not have preceding content here (e.g. directives-end indicator)"); + } + const collection = new Collection(node); + offset = collection.parse(new ParseContext(context), offset); + collection.range = new PlainValue.Range(start, offset); + return collection; + } + return node; + }); + this.atLineStart = atLineStart != null ? atLineStart : orig.atLineStart || false; + this.inCollection = inCollection != null ? inCollection : orig.inCollection || false; + this.inFlow = inFlow != null ? inFlow : orig.inFlow || false; + this.indent = indent != null ? indent : orig.indent; + this.lineStart = lineStart != null ? lineStart : orig.lineStart; + this.parent = parent != null ? parent : orig.parent || {}; + this.root = orig.root; + this.src = orig.src; + } + nodeStartsCollection(node) { + const { + inCollection, + inFlow, + src + } = this; + if (inCollection || inFlow) + return false; + if (node instanceof CollectionItem) + return true; + let offset = node.range.end; + if (src[offset] === "\n" || src[offset - 1] === "\n") + return false; + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + return src[offset] === ":"; + } + parseProps(offset) { + const { + inFlow, + parent, + src + } = this; + const props = []; + let lineHasProps = false; + offset = this.atLineStart ? PlainValue.Node.endOfIndent(src, offset) : PlainValue.Node.endOfWhiteSpace(src, offset); + let ch = src[offset]; + while (ch === PlainValue.Char.ANCHOR || ch === PlainValue.Char.COMMENT || ch === PlainValue.Char.TAG || ch === "\n") { + if (ch === "\n") { + let inEnd = offset; + let lineStart; + do { + lineStart = inEnd + 1; + inEnd = PlainValue.Node.endOfIndent(src, lineStart); + } while (src[inEnd] === "\n"); + const indentDiff = inEnd - (lineStart + this.indent); + const noIndicatorAsIndent = parent.type === PlainValue.Type.SEQ_ITEM && parent.context.atLineStart; + if (src[inEnd] !== "#" && !PlainValue.Node.nextNodeIsIndented(src[inEnd], indentDiff, !noIndicatorAsIndent)) + break; + this.atLineStart = true; + this.lineStart = lineStart; + lineHasProps = false; + offset = inEnd; + } else if (ch === PlainValue.Char.COMMENT) { + const end = PlainValue.Node.endOfLine(src, offset + 1); + props.push(new PlainValue.Range(offset, end)); + offset = end; + } else { + let end = PlainValue.Node.endOfIdentifier(src, offset + 1); + if (ch === PlainValue.Char.TAG && src[end] === "," && /^[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+,\d\d\d\d(-\d\d){0,2}\/\S/.test(src.slice(offset + 1, end + 13))) { + end = PlainValue.Node.endOfIdentifier(src, end + 5); + } + props.push(new PlainValue.Range(offset, end)); + lineHasProps = true; + offset = PlainValue.Node.endOfWhiteSpace(src, end); + } + ch = src[offset]; + } + if (lineHasProps && ch === ":" && PlainValue.Node.atBlank(src, offset + 1, true)) + offset -= 1; + const type = ParseContext.parseType(src, offset, inFlow); + return { + props, + type, + valueStart: offset + }; + } + }; + function parse(src) { + const cr = []; + if (src.indexOf("\r") !== -1) { + src = src.replace(/\r\n?/g, (match, offset2) => { + if (match.length > 1) + cr.push(offset2); + return "\n"; + }); + } + const documents = []; + let offset = 0; + do { + const doc = new Document(); + const context = new ParseContext({ + src + }); + offset = doc.parse(context, offset); + documents.push(doc); + } while (offset < src.length); + documents.setOrigRanges = () => { + if (cr.length === 0) + return false; + for (let i = 1; i < cr.length; ++i) + cr[i] -= i; + let crOffset = 0; + for (let i = 0; i < documents.length; ++i) { + crOffset = documents[i].setOrigRanges(cr, crOffset); + } + cr.splice(0, cr.length); + return true; + }; + documents.toString = () => documents.join("...\n"); + return documents; + } + exports2.parse = parse; + } +}); + +// node_modules/yaml/dist/resolveSeq-d03cb037.js +var require_resolveSeq_d03cb037 = __commonJS({ + "node_modules/yaml/dist/resolveSeq-d03cb037.js"(exports2) { + "use strict"; + var PlainValue = require_PlainValue_ec8e588e(); + function addCommentBefore(str, indent, comment) { + if (!comment) + return str; + const cc = comment.replace(/[\s\S]^/gm, `$&${indent}#`); + return `#${cc} +${indent}${str}`; + } + function addComment(str, indent, comment) { + return !comment ? str : comment.indexOf("\n") === -1 ? `${str} #${comment}` : `${str} +` + comment.replace(/^/gm, `${indent || ""}#`); + } + var Node = class { + }; + function toJSON(value, arg, ctx) { + if (Array.isArray(value)) + return value.map((v, i) => toJSON(v, String(i), ctx)); + if (value && typeof value.toJSON === "function") { + const anchor = ctx && ctx.anchors && ctx.anchors.get(value); + if (anchor) + ctx.onCreate = (res2) => { + anchor.res = res2; + delete ctx.onCreate; + }; + const res = value.toJSON(arg, ctx); + if (anchor && ctx.onCreate) + ctx.onCreate(res); + return res; + } + if ((!ctx || !ctx.keep) && typeof value === "bigint") + return Number(value); + return value; + } + var Scalar = class extends Node { + constructor(value) { + super(); + this.value = value; + } + toJSON(arg, ctx) { + return ctx && ctx.keep ? this.value : toJSON(this.value, arg, ctx); + } + toString() { + return String(this.value); + } + }; + function collectionFromPath(schema, path, value) { + let v = value; + for (let i = path.length - 1; i >= 0; --i) { + const k = path[i]; + if (Number.isInteger(k) && k >= 0) { + const a = []; + a[k] = v; + v = a; + } else { + const o = {}; + Object.defineProperty(o, k, { + value: v, + writable: true, + enumerable: true, + configurable: true + }); + v = o; + } + } + return schema.createNode(v, false); + } + var isEmptyPath = (path) => path == null || typeof path === "object" && path[Symbol.iterator]().next().done; + var Collection = class extends Node { + constructor(schema) { + super(); + PlainValue._defineProperty(this, "items", []); + this.schema = schema; + } + addIn(path, value) { + if (isEmptyPath(path)) + this.add(value); + else { + const [key, ...rest] = path; + const node = this.get(key, true); + if (node instanceof Collection) + node.addIn(rest, value); + else if (node === void 0 && this.schema) + this.set(key, collectionFromPath(this.schema, rest, value)); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + } + deleteIn([key, ...rest]) { + if (rest.length === 0) + return this.delete(key); + const node = this.get(key, true); + if (node instanceof Collection) + return node.deleteIn(rest); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + getIn([key, ...rest], keepScalar) { + const node = this.get(key, true); + if (rest.length === 0) + return !keepScalar && node instanceof Scalar ? node.value : node; + else + return node instanceof Collection ? node.getIn(rest, keepScalar) : void 0; + } + hasAllNullValues() { + return this.items.every((node) => { + if (!node || node.type !== "PAIR") + return false; + const n = node.value; + return n == null || n instanceof Scalar && n.value == null && !n.commentBefore && !n.comment && !n.tag; + }); + } + hasIn([key, ...rest]) { + if (rest.length === 0) + return this.has(key); + const node = this.get(key, true); + return node instanceof Collection ? node.hasIn(rest) : false; + } + setIn([key, ...rest], value) { + if (rest.length === 0) { + this.set(key, value); + } else { + const node = this.get(key, true); + if (node instanceof Collection) + node.setIn(rest, value); + else if (node === void 0 && this.schema) + this.set(key, collectionFromPath(this.schema, rest, value)); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + } + toJSON() { + return null; + } + toString(ctx, { + blockItem, + flowChars, + isMap, + itemIndent + }, onComment, onChompKeep) { + const { + indent, + indentStep, + stringify + } = ctx; + const inFlow = this.type === PlainValue.Type.FLOW_MAP || this.type === PlainValue.Type.FLOW_SEQ || ctx.inFlow; + if (inFlow) + itemIndent += indentStep; + const allNullValues = isMap && this.hasAllNullValues(); + ctx = Object.assign({}, ctx, { + allNullValues, + indent: itemIndent, + inFlow, + type: null + }); + let chompKeep = false; + let hasItemWithNewLine = false; + const nodes = this.items.reduce((nodes2, item, i) => { + let comment; + if (item) { + if (!chompKeep && item.spaceBefore) + nodes2.push({ + type: "comment", + str: "" + }); + if (item.commentBefore) + item.commentBefore.match(/^.*$/gm).forEach((line) => { + nodes2.push({ + type: "comment", + str: `#${line}` + }); + }); + if (item.comment) + comment = item.comment; + if (inFlow && (!chompKeep && item.spaceBefore || item.commentBefore || item.comment || item.key && (item.key.commentBefore || item.key.comment) || item.value && (item.value.commentBefore || item.value.comment))) + hasItemWithNewLine = true; + } + chompKeep = false; + let str2 = stringify(item, ctx, () => comment = null, () => chompKeep = true); + if (inFlow && !hasItemWithNewLine && str2.includes("\n")) + hasItemWithNewLine = true; + if (inFlow && i < this.items.length - 1) + str2 += ","; + str2 = addComment(str2, itemIndent, comment); + if (chompKeep && (comment || inFlow)) + chompKeep = false; + nodes2.push({ + type: "item", + str: str2 + }); + return nodes2; + }, []); + let str; + if (nodes.length === 0) { + str = flowChars.start + flowChars.end; + } else if (inFlow) { + const { + start, + end + } = flowChars; + const strings = nodes.map((n) => n.str); + if (hasItemWithNewLine || strings.reduce((sum, str2) => sum + str2.length + 2, 2) > Collection.maxFlowStringSingleLineLength) { + str = start; + for (const s of strings) { + str += s ? ` +${indentStep}${indent}${s}` : "\n"; + } + str += ` +${indent}${end}`; + } else { + str = `${start} ${strings.join(" ")} ${end}`; + } + } else { + const strings = nodes.map(blockItem); + str = strings.shift(); + for (const s of strings) + str += s ? ` +${indent}${s}` : "\n"; + } + if (this.comment) { + str += "\n" + this.comment.replace(/^/gm, `${indent}#`); + if (onComment) + onComment(); + } else if (chompKeep && onChompKeep) + onChompKeep(); + return str; + } + }; + PlainValue._defineProperty(Collection, "maxFlowStringSingleLineLength", 60); + function asItemIndex(key) { + let idx = key instanceof Scalar ? key.value : key; + if (idx && typeof idx === "string") + idx = Number(idx); + return Number.isInteger(idx) && idx >= 0 ? idx : null; + } + var YAMLSeq = class extends Collection { + add(value) { + this.items.push(value); + } + delete(key) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + return false; + const del = this.items.splice(idx, 1); + return del.length > 0; + } + get(key, keepScalar) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + return void 0; + const it = this.items[idx]; + return !keepScalar && it instanceof Scalar ? it.value : it; + } + has(key) { + const idx = asItemIndex(key); + return typeof idx === "number" && idx < this.items.length; + } + set(key, value) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + throw new Error(`Expected a valid index, not ${key}.`); + this.items[idx] = value; + } + toJSON(_, ctx) { + const seq = []; + if (ctx && ctx.onCreate) + ctx.onCreate(seq); + let i = 0; + for (const item of this.items) + seq.push(toJSON(item, String(i++), ctx)); + return seq; + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + return super.toString(ctx, { + blockItem: (n) => n.type === "comment" ? n.str : `- ${n.str}`, + flowChars: { + start: "[", + end: "]" + }, + isMap: false, + itemIndent: (ctx.indent || "") + " " + }, onComment, onChompKeep); + } + }; + var stringifyKey = (key, jsKey, ctx) => { + if (jsKey === null) + return ""; + if (typeof jsKey !== "object") + return String(jsKey); + if (key instanceof Node && ctx && ctx.doc) + return key.toString({ + anchors: /* @__PURE__ */ Object.create(null), + doc: ctx.doc, + indent: "", + indentStep: ctx.indentStep, + inFlow: true, + inStringifyKey: true, + stringify: ctx.stringify + }); + return JSON.stringify(jsKey); + }; + var Pair = class extends Node { + constructor(key, value = null) { + super(); + this.key = key; + this.value = value; + this.type = Pair.Type.PAIR; + } + get commentBefore() { + return this.key instanceof Node ? this.key.commentBefore : void 0; + } + set commentBefore(cb) { + if (this.key == null) + this.key = new Scalar(null); + if (this.key instanceof Node) + this.key.commentBefore = cb; + else { + const msg = "Pair.commentBefore is an alias for Pair.key.commentBefore. To set it, the key must be a Node."; + throw new Error(msg); + } + } + addToJSMap(ctx, map) { + const key = toJSON(this.key, "", ctx); + if (map instanceof Map) { + const value = toJSON(this.value, key, ctx); + map.set(key, value); + } else if (map instanceof Set) { + map.add(key); + } else { + const stringKey = stringifyKey(this.key, key, ctx); + const value = toJSON(this.value, stringKey, ctx); + if (stringKey in map) + Object.defineProperty(map, stringKey, { + value, + writable: true, + enumerable: true, + configurable: true + }); + else + map[stringKey] = value; + } + return map; + } + toJSON(_, ctx) { + const pair = ctx && ctx.mapAsMap ? /* @__PURE__ */ new Map() : {}; + return this.addToJSMap(ctx, pair); + } + toString(ctx, onComment, onChompKeep) { + if (!ctx || !ctx.doc) + return JSON.stringify(this); + const { + indent: indentSize, + indentSeq, + simpleKeys + } = ctx.doc.options; + let { + key, + value + } = this; + let keyComment = key instanceof Node && key.comment; + if (simpleKeys) { + if (keyComment) { + throw new Error("With simple keys, key nodes cannot have comments"); + } + if (key instanceof Collection) { + const msg = "With simple keys, collection cannot be used as a key value"; + throw new Error(msg); + } + } + let explicitKey = !simpleKeys && (!key || keyComment || (key instanceof Node ? key instanceof Collection || key.type === PlainValue.Type.BLOCK_FOLDED || key.type === PlainValue.Type.BLOCK_LITERAL : typeof key === "object")); + const { + doc, + indent, + indentStep, + stringify + } = ctx; + ctx = Object.assign({}, ctx, { + implicitKey: !explicitKey, + indent: indent + indentStep + }); + let chompKeep = false; + let str = stringify(key, ctx, () => keyComment = null, () => chompKeep = true); + str = addComment(str, ctx.indent, keyComment); + if (!explicitKey && str.length > 1024) { + if (simpleKeys) + throw new Error("With simple keys, single line scalar must not span more than 1024 characters"); + explicitKey = true; + } + if (ctx.allNullValues && !simpleKeys) { + if (this.comment) { + str = addComment(str, ctx.indent, this.comment); + if (onComment) + onComment(); + } else if (chompKeep && !keyComment && onChompKeep) + onChompKeep(); + return ctx.inFlow && !explicitKey ? str : `? ${str}`; + } + str = explicitKey ? `? ${str} +${indent}:` : `${str}:`; + if (this.comment) { + str = addComment(str, ctx.indent, this.comment); + if (onComment) + onComment(); + } + let vcb = ""; + let valueComment = null; + if (value instanceof Node) { + if (value.spaceBefore) + vcb = "\n"; + if (value.commentBefore) { + const cs = value.commentBefore.replace(/^/gm, `${ctx.indent}#`); + vcb += ` +${cs}`; + } + valueComment = value.comment; + } else if (value && typeof value === "object") { + value = doc.schema.createNode(value, true); + } + ctx.implicitKey = false; + if (!explicitKey && !this.comment && value instanceof Scalar) + ctx.indentAtStart = str.length + 1; + chompKeep = false; + if (!indentSeq && indentSize >= 2 && !ctx.inFlow && !explicitKey && value instanceof YAMLSeq && value.type !== PlainValue.Type.FLOW_SEQ && !value.tag && !doc.anchors.getName(value)) { + ctx.indent = ctx.indent.substr(2); + } + const valueStr = stringify(value, ctx, () => valueComment = null, () => chompKeep = true); + let ws = " "; + if (vcb || this.comment) { + ws = `${vcb} +${ctx.indent}`; + } else if (!explicitKey && value instanceof Collection) { + const flow = valueStr[0] === "[" || valueStr[0] === "{"; + if (!flow || valueStr.includes("\n")) + ws = ` +${ctx.indent}`; + } else if (valueStr[0] === "\n") + ws = ""; + if (chompKeep && !valueComment && onChompKeep) + onChompKeep(); + return addComment(str + ws + valueStr, ctx.indent, valueComment); + } + }; + PlainValue._defineProperty(Pair, "Type", { + PAIR: "PAIR", + MERGE_PAIR: "MERGE_PAIR" + }); + var getAliasCount = (node, anchors) => { + if (node instanceof Alias) { + const anchor = anchors.get(node.source); + return anchor.count * anchor.aliasCount; + } else if (node instanceof Collection) { + let count = 0; + for (const item of node.items) { + const c = getAliasCount(item, anchors); + if (c > count) + count = c; + } + return count; + } else if (node instanceof Pair) { + const kc = getAliasCount(node.key, anchors); + const vc = getAliasCount(node.value, anchors); + return Math.max(kc, vc); + } + return 1; + }; + var Alias = class extends Node { + static stringify({ + range, + source + }, { + anchors, + doc, + implicitKey, + inStringifyKey + }) { + let anchor = Object.keys(anchors).find((a) => anchors[a] === source); + if (!anchor && inStringifyKey) + anchor = doc.anchors.getName(source) || doc.anchors.newName(); + if (anchor) + return `*${anchor}${implicitKey ? " " : ""}`; + const msg = doc.anchors.getName(source) ? "Alias node must be after source node" : "Source node not found for alias node"; + throw new Error(`${msg} [${range}]`); + } + constructor(source) { + super(); + this.source = source; + this.type = PlainValue.Type.ALIAS; + } + set tag(t) { + throw new Error("Alias nodes cannot have tags"); + } + toJSON(arg, ctx) { + if (!ctx) + return toJSON(this.source, arg, ctx); + const { + anchors, + maxAliasCount + } = ctx; + const anchor = anchors.get(this.source); + if (!anchor || anchor.res === void 0) { + const msg = "This should not happen: Alias anchor was not resolved?"; + if (this.cstNode) + throw new PlainValue.YAMLReferenceError(this.cstNode, msg); + else + throw new ReferenceError(msg); + } + if (maxAliasCount >= 0) { + anchor.count += 1; + if (anchor.aliasCount === 0) + anchor.aliasCount = getAliasCount(this.source, anchors); + if (anchor.count * anchor.aliasCount > maxAliasCount) { + const msg = "Excessive alias count indicates a resource exhaustion attack"; + if (this.cstNode) + throw new PlainValue.YAMLReferenceError(this.cstNode, msg); + else + throw new ReferenceError(msg); + } + } + return anchor.res; + } + toString(ctx) { + return Alias.stringify(this, ctx); + } + }; + PlainValue._defineProperty(Alias, "default", true); + function findPair(items, key) { + const k = key instanceof Scalar ? key.value : key; + for (const it of items) { + if (it instanceof Pair) { + if (it.key === key || it.key === k) + return it; + if (it.key && it.key.value === k) + return it; + } + } + return void 0; + } + var YAMLMap = class extends Collection { + add(pair, overwrite) { + if (!pair) + pair = new Pair(pair); + else if (!(pair instanceof Pair)) + pair = new Pair(pair.key || pair, pair.value); + const prev = findPair(this.items, pair.key); + const sortEntries = this.schema && this.schema.sortMapEntries; + if (prev) { + if (overwrite) + prev.value = pair.value; + else + throw new Error(`Key ${pair.key} already set`); + } else if (sortEntries) { + const i = this.items.findIndex((item) => sortEntries(pair, item) < 0); + if (i === -1) + this.items.push(pair); + else + this.items.splice(i, 0, pair); + } else { + this.items.push(pair); + } + } + delete(key) { + const it = findPair(this.items, key); + if (!it) + return false; + const del = this.items.splice(this.items.indexOf(it), 1); + return del.length > 0; + } + get(key, keepScalar) { + const it = findPair(this.items, key); + const node = it && it.value; + return !keepScalar && node instanceof Scalar ? node.value : node; + } + has(key) { + return !!findPair(this.items, key); + } + set(key, value) { + this.add(new Pair(key, value), true); + } + toJSON(_, ctx, Type) { + const map = Type ? new Type() : ctx && ctx.mapAsMap ? /* @__PURE__ */ new Map() : {}; + if (ctx && ctx.onCreate) + ctx.onCreate(map); + for (const item of this.items) + item.addToJSMap(ctx, map); + return map; + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + for (const item of this.items) { + if (!(item instanceof Pair)) + throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`); + } + return super.toString(ctx, { + blockItem: (n) => n.str, + flowChars: { + start: "{", + end: "}" + }, + isMap: true, + itemIndent: ctx.indent || "" + }, onComment, onChompKeep); + } + }; + var MERGE_KEY = "<<"; + var Merge = class extends Pair { + constructor(pair) { + if (pair instanceof Pair) { + let seq = pair.value; + if (!(seq instanceof YAMLSeq)) { + seq = new YAMLSeq(); + seq.items.push(pair.value); + seq.range = pair.value.range; + } + super(pair.key, seq); + this.range = pair.range; + } else { + super(new Scalar(MERGE_KEY), new YAMLSeq()); + } + this.type = Pair.Type.MERGE_PAIR; + } + addToJSMap(ctx, map) { + for (const { + source + } of this.value.items) { + if (!(source instanceof YAMLMap)) + throw new Error("Merge sources must be maps"); + const srcMap = source.toJSON(null, ctx, Map); + for (const [key, value] of srcMap) { + if (map instanceof Map) { + if (!map.has(key)) + map.set(key, value); + } else if (map instanceof Set) { + map.add(key); + } else if (!Object.prototype.hasOwnProperty.call(map, key)) { + Object.defineProperty(map, key, { + value, + writable: true, + enumerable: true, + configurable: true + }); + } + } + } + return map; + } + toString(ctx, onComment) { + const seq = this.value; + if (seq.items.length > 1) + return super.toString(ctx, onComment); + this.value = seq.items[0]; + const str = super.toString(ctx, onComment); + this.value = seq; + return str; + } + }; + var binaryOptions = { + defaultType: PlainValue.Type.BLOCK_LITERAL, + lineWidth: 76 + }; + var boolOptions = { + trueStr: "true", + falseStr: "false" + }; + var intOptions = { + asBigInt: false + }; + var nullOptions = { + nullStr: "null" + }; + var strOptions = { + defaultType: PlainValue.Type.PLAIN, + doubleQuoted: { + jsonEncoding: false, + minMultiLineLength: 40 + }, + fold: { + lineWidth: 80, + minContentWidth: 20 + } + }; + function resolveScalar(str, tags, scalarFallback) { + for (const { + format, + test, + resolve + } of tags) { + if (test) { + const match = str.match(test); + if (match) { + let res = resolve.apply(null, match); + if (!(res instanceof Scalar)) + res = new Scalar(res); + if (format) + res.format = format; + return res; + } + } + } + if (scalarFallback) + str = scalarFallback(str); + return new Scalar(str); + } + var FOLD_FLOW = "flow"; + var FOLD_BLOCK = "block"; + var FOLD_QUOTED = "quoted"; + var consumeMoreIndentedLines = (text, i) => { + let ch = text[i + 1]; + while (ch === " " || ch === " ") { + do { + ch = text[i += 1]; + } while (ch && ch !== "\n"); + ch = text[i + 1]; + } + return i; + }; + function foldFlowLines(text, indent, mode, { + indentAtStart, + lineWidth = 80, + minContentWidth = 20, + onFold, + onOverflow + }) { + if (!lineWidth || lineWidth < 0) + return text; + const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length); + if (text.length <= endStep) + return text; + const folds = []; + const escapedFolds = {}; + let end = lineWidth - indent.length; + if (typeof indentAtStart === "number") { + if (indentAtStart > lineWidth - Math.max(2, minContentWidth)) + folds.push(0); + else + end = lineWidth - indentAtStart; + } + let split = void 0; + let prev = void 0; + let overflow = false; + let i = -1; + let escStart = -1; + let escEnd = -1; + if (mode === FOLD_BLOCK) { + i = consumeMoreIndentedLines(text, i); + if (i !== -1) + end = i + endStep; + } + for (let ch; ch = text[i += 1]; ) { + if (mode === FOLD_QUOTED && ch === "\\") { + escStart = i; + switch (text[i + 1]) { + case "x": + i += 3; + break; + case "u": + i += 5; + break; + case "U": + i += 9; + break; + default: + i += 1; + } + escEnd = i; + } + if (ch === "\n") { + if (mode === FOLD_BLOCK) + i = consumeMoreIndentedLines(text, i); + end = i + endStep; + split = void 0; + } else { + if (ch === " " && prev && prev !== " " && prev !== "\n" && prev !== " ") { + const next = text[i + 1]; + if (next && next !== " " && next !== "\n" && next !== " ") + split = i; + } + if (i >= end) { + if (split) { + folds.push(split); + end = split + endStep; + split = void 0; + } else if (mode === FOLD_QUOTED) { + while (prev === " " || prev === " ") { + prev = ch; + ch = text[i += 1]; + overflow = true; + } + const j = i > escEnd + 1 ? i - 2 : escStart - 1; + if (escapedFolds[j]) + return text; + folds.push(j); + escapedFolds[j] = true; + end = j + endStep; + split = void 0; + } else { + overflow = true; + } + } + } + prev = ch; + } + if (overflow && onOverflow) + onOverflow(); + if (folds.length === 0) + return text; + if (onFold) + onFold(); + let res = text.slice(0, folds[0]); + for (let i2 = 0; i2 < folds.length; ++i2) { + const fold = folds[i2]; + const end2 = folds[i2 + 1] || text.length; + if (fold === 0) + res = ` +${indent}${text.slice(0, end2)}`; + else { + if (mode === FOLD_QUOTED && escapedFolds[fold]) + res += `${text[fold]}\\`; + res += ` +${indent}${text.slice(fold + 1, end2)}`; + } + } + return res; + } + var getFoldOptions = ({ + indentAtStart + }) => indentAtStart ? Object.assign({ + indentAtStart + }, strOptions.fold) : strOptions.fold; + var containsDocumentMarker = (str) => /^(%|---|\.\.\.)/m.test(str); + function lineLengthOverLimit(str, lineWidth, indentLength) { + if (!lineWidth || lineWidth < 0) + return false; + const limit = lineWidth - indentLength; + const strLen = str.length; + if (strLen <= limit) + return false; + for (let i = 0, start = 0; i < strLen; ++i) { + if (str[i] === "\n") { + if (i - start > limit) + return true; + start = i + 1; + if (strLen - start <= limit) + return false; + } + } + return true; + } + function doubleQuotedString(value, ctx) { + const { + implicitKey + } = ctx; + const { + jsonEncoding, + minMultiLineLength + } = strOptions.doubleQuoted; + const json = JSON.stringify(value); + if (jsonEncoding) + return json; + const indent = ctx.indent || (containsDocumentMarker(value) ? " " : ""); + let str = ""; + let start = 0; + for (let i = 0, ch = json[i]; ch; ch = json[++i]) { + if (ch === " " && json[i + 1] === "\\" && json[i + 2] === "n") { + str += json.slice(start, i) + "\\ "; + i += 1; + start = i; + ch = "\\"; + } + if (ch === "\\") + switch (json[i + 1]) { + case "u": + { + str += json.slice(start, i); + const code = json.substr(i + 2, 4); + switch (code) { + case "0000": + str += "\\0"; + break; + case "0007": + str += "\\a"; + break; + case "000b": + str += "\\v"; + break; + case "001b": + str += "\\e"; + break; + case "0085": + str += "\\N"; + break; + case "00a0": + str += "\\_"; + break; + case "2028": + str += "\\L"; + break; + case "2029": + str += "\\P"; + break; + default: + if (code.substr(0, 2) === "00") + str += "\\x" + code.substr(2); + else + str += json.substr(i, 6); + } + i += 5; + start = i + 1; + } + break; + case "n": + if (implicitKey || json[i + 2] === '"' || json.length < minMultiLineLength) { + i += 1; + } else { + str += json.slice(start, i) + "\n\n"; + while (json[i + 2] === "\\" && json[i + 3] === "n" && json[i + 4] !== '"') { + str += "\n"; + i += 2; + } + str += indent; + if (json[i + 2] === " ") + str += "\\"; + i += 1; + start = i + 1; + } + break; + default: + i += 1; + } + } + str = start ? str + json.slice(start) : json; + return implicitKey ? str : foldFlowLines(str, indent, FOLD_QUOTED, getFoldOptions(ctx)); + } + function singleQuotedString(value, ctx) { + if (ctx.implicitKey) { + if (/\n/.test(value)) + return doubleQuotedString(value, ctx); + } else { + if (/[ \t]\n|\n[ \t]/.test(value)) + return doubleQuotedString(value, ctx); + } + const indent = ctx.indent || (containsDocumentMarker(value) ? " " : ""); + const res = "'" + value.replace(/'/g, "''").replace(/\n+/g, `$& +${indent}`) + "'"; + return ctx.implicitKey ? res : foldFlowLines(res, indent, FOLD_FLOW, getFoldOptions(ctx)); + } + function blockString({ + comment, + type, + value + }, ctx, onComment, onChompKeep) { + if (/\n[\t ]+$/.test(value) || /^\s*$/.test(value)) { + return doubleQuotedString(value, ctx); + } + const indent = ctx.indent || (ctx.forceBlockIndent || containsDocumentMarker(value) ? " " : ""); + const indentSize = indent ? "2" : "1"; + const literal = type === PlainValue.Type.BLOCK_FOLDED ? false : type === PlainValue.Type.BLOCK_LITERAL ? true : !lineLengthOverLimit(value, strOptions.fold.lineWidth, indent.length); + let header = literal ? "|" : ">"; + if (!value) + return header + "\n"; + let wsStart = ""; + let wsEnd = ""; + value = value.replace(/[\n\t ]*$/, (ws) => { + const n = ws.indexOf("\n"); + if (n === -1) { + header += "-"; + } else if (value === ws || n !== ws.length - 1) { + header += "+"; + if (onChompKeep) + onChompKeep(); + } + wsEnd = ws.replace(/\n$/, ""); + return ""; + }).replace(/^[\n ]*/, (ws) => { + if (ws.indexOf(" ") !== -1) + header += indentSize; + const m = ws.match(/ +$/); + if (m) { + wsStart = ws.slice(0, -m[0].length); + return m[0]; + } else { + wsStart = ws; + return ""; + } + }); + if (wsEnd) + wsEnd = wsEnd.replace(/\n+(?!\n|$)/g, `$&${indent}`); + if (wsStart) + wsStart = wsStart.replace(/\n+/g, `$&${indent}`); + if (comment) { + header += " #" + comment.replace(/ ?[\r\n]+/g, " "); + if (onComment) + onComment(); + } + if (!value) + return `${header}${indentSize} +${indent}${wsEnd}`; + if (literal) { + value = value.replace(/\n+/g, `$&${indent}`); + return `${header} +${indent}${wsStart}${value}${wsEnd}`; + } + value = value.replace(/\n+/g, "\n$&").replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, "$1$2").replace(/\n+/g, `$&${indent}`); + const body = foldFlowLines(`${wsStart}${value}${wsEnd}`, indent, FOLD_BLOCK, strOptions.fold); + return `${header} +${indent}${body}`; + } + function plainString(item, ctx, onComment, onChompKeep) { + const { + comment, + type, + value + } = item; + const { + actualString, + implicitKey, + indent, + inFlow + } = ctx; + if (implicitKey && /[\n[\]{},]/.test(value) || inFlow && /[[\]{},]/.test(value)) { + return doubleQuotedString(value, ctx); + } + if (!value || /^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) { + return implicitKey || inFlow || value.indexOf("\n") === -1 ? value.indexOf('"') !== -1 && value.indexOf("'") === -1 ? singleQuotedString(value, ctx) : doubleQuotedString(value, ctx) : blockString(item, ctx, onComment, onChompKeep); + } + if (!implicitKey && !inFlow && type !== PlainValue.Type.PLAIN && value.indexOf("\n") !== -1) { + return blockString(item, ctx, onComment, onChompKeep); + } + if (indent === "" && containsDocumentMarker(value)) { + ctx.forceBlockIndent = true; + return blockString(item, ctx, onComment, onChompKeep); + } + const str = value.replace(/\n+/g, `$& +${indent}`); + if (actualString) { + const { + tags + } = ctx.doc.schema; + const resolved = resolveScalar(str, tags, tags.scalarFallback).value; + if (typeof resolved !== "string") + return doubleQuotedString(value, ctx); + } + const body = implicitKey ? str : foldFlowLines(str, indent, FOLD_FLOW, getFoldOptions(ctx)); + if (comment && !inFlow && (body.indexOf("\n") !== -1 || comment.indexOf("\n") !== -1)) { + if (onComment) + onComment(); + return addCommentBefore(body, indent, comment); + } + return body; + } + function stringifyString(item, ctx, onComment, onChompKeep) { + const { + defaultType + } = strOptions; + const { + implicitKey, + inFlow + } = ctx; + let { + type, + value + } = item; + if (typeof value !== "string") { + value = String(value); + item = Object.assign({}, item, { + value + }); + } + const _stringify = (_type) => { + switch (_type) { + case PlainValue.Type.BLOCK_FOLDED: + case PlainValue.Type.BLOCK_LITERAL: + return blockString(item, ctx, onComment, onChompKeep); + case PlainValue.Type.QUOTE_DOUBLE: + return doubleQuotedString(value, ctx); + case PlainValue.Type.QUOTE_SINGLE: + return singleQuotedString(value, ctx); + case PlainValue.Type.PLAIN: + return plainString(item, ctx, onComment, onChompKeep); + default: + return null; + } + }; + if (type !== PlainValue.Type.QUOTE_DOUBLE && /[\x00-\x08\x0b-\x1f\x7f-\x9f]/.test(value)) { + type = PlainValue.Type.QUOTE_DOUBLE; + } else if ((implicitKey || inFlow) && (type === PlainValue.Type.BLOCK_FOLDED || type === PlainValue.Type.BLOCK_LITERAL)) { + type = PlainValue.Type.QUOTE_DOUBLE; + } + let res = _stringify(type); + if (res === null) { + res = _stringify(defaultType); + if (res === null) + throw new Error(`Unsupported default string type ${defaultType}`); + } + return res; + } + function stringifyNumber({ + format, + minFractionDigits, + tag, + value + }) { + if (typeof value === "bigint") + return String(value); + if (!isFinite(value)) + return isNaN(value) ? ".nan" : value < 0 ? "-.inf" : ".inf"; + let n = JSON.stringify(value); + if (!format && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^\d/.test(n)) { + let i = n.indexOf("."); + if (i < 0) { + i = n.length; + n += "."; + } + let d = minFractionDigits - (n.length - i - 1); + while (d-- > 0) + n += "0"; + } + return n; + } + function checkFlowCollectionEnd(errors, cst) { + let char, name; + switch (cst.type) { + case PlainValue.Type.FLOW_MAP: + char = "}"; + name = "flow map"; + break; + case PlainValue.Type.FLOW_SEQ: + char = "]"; + name = "flow sequence"; + break; + default: + errors.push(new PlainValue.YAMLSemanticError(cst, "Not a flow collection!?")); + return; + } + let lastItem; + for (let i = cst.items.length - 1; i >= 0; --i) { + const item = cst.items[i]; + if (!item || item.type !== PlainValue.Type.COMMENT) { + lastItem = item; + break; + } + } + if (lastItem && lastItem.char !== char) { + const msg = `Expected ${name} to end with ${char}`; + let err; + if (typeof lastItem.offset === "number") { + err = new PlainValue.YAMLSemanticError(cst, msg); + err.offset = lastItem.offset + 1; + } else { + err = new PlainValue.YAMLSemanticError(lastItem, msg); + if (lastItem.range && lastItem.range.end) + err.offset = lastItem.range.end - lastItem.range.start; + } + errors.push(err); + } + } + function checkFlowCommentSpace(errors, comment) { + const prev = comment.context.src[comment.range.start - 1]; + if (prev !== "\n" && prev !== " " && prev !== " ") { + const msg = "Comments must be separated from other tokens by white space characters"; + errors.push(new PlainValue.YAMLSemanticError(comment, msg)); + } + } + function getLongKeyError(source, key) { + const sk = String(key); + const k = sk.substr(0, 8) + "..." + sk.substr(-8); + return new PlainValue.YAMLSemanticError(source, `The "${k}" key is too long`); + } + function resolveComments(collection, comments) { + for (const { + afterKey, + before, + comment + } of comments) { + let item = collection.items[before]; + if (!item) { + if (comment !== void 0) { + if (collection.comment) + collection.comment += "\n" + comment; + else + collection.comment = comment; + } + } else { + if (afterKey && item.value) + item = item.value; + if (comment === void 0) { + if (afterKey || !item.commentBefore) + item.spaceBefore = true; + } else { + if (item.commentBefore) + item.commentBefore += "\n" + comment; + else + item.commentBefore = comment; + } + } + } + } + function resolveString(doc, node) { + const res = node.strValue; + if (!res) + return ""; + if (typeof res === "string") + return res; + res.errors.forEach((error) => { + if (!error.source) + error.source = node; + doc.errors.push(error); + }); + return res.str; + } + function resolveTagHandle(doc, node) { + const { + handle, + suffix + } = node.tag; + let prefix = doc.tagPrefixes.find((p) => p.handle === handle); + if (!prefix) { + const dtp = doc.getDefaults().tagPrefixes; + if (dtp) + prefix = dtp.find((p) => p.handle === handle); + if (!prefix) + throw new PlainValue.YAMLSemanticError(node, `The ${handle} tag handle is non-default and was not declared.`); + } + if (!suffix) + throw new PlainValue.YAMLSemanticError(node, `The ${handle} tag has no suffix.`); + if (handle === "!" && (doc.version || doc.options.version) === "1.0") { + if (suffix[0] === "^") { + doc.warnings.push(new PlainValue.YAMLWarning(node, "YAML 1.0 ^ tag expansion is not supported")); + return suffix; + } + if (/[:/]/.test(suffix)) { + const vocab = suffix.match(/^([a-z0-9-]+)\/(.*)/i); + return vocab ? `tag:${vocab[1]}.yaml.org,2002:${vocab[2]}` : `tag:${suffix}`; + } + } + return prefix.prefix + decodeURIComponent(suffix); + } + function resolveTagName(doc, node) { + const { + tag, + type + } = node; + let nonSpecific = false; + if (tag) { + const { + handle, + suffix, + verbatim + } = tag; + if (verbatim) { + if (verbatim !== "!" && verbatim !== "!!") + return verbatim; + const msg = `Verbatim tags aren't resolved, so ${verbatim} is invalid.`; + doc.errors.push(new PlainValue.YAMLSemanticError(node, msg)); + } else if (handle === "!" && !suffix) { + nonSpecific = true; + } else { + try { + return resolveTagHandle(doc, node); + } catch (error) { + doc.errors.push(error); + } + } + } + switch (type) { + case PlainValue.Type.BLOCK_FOLDED: + case PlainValue.Type.BLOCK_LITERAL: + case PlainValue.Type.QUOTE_DOUBLE: + case PlainValue.Type.QUOTE_SINGLE: + return PlainValue.defaultTags.STR; + case PlainValue.Type.FLOW_MAP: + case PlainValue.Type.MAP: + return PlainValue.defaultTags.MAP; + case PlainValue.Type.FLOW_SEQ: + case PlainValue.Type.SEQ: + return PlainValue.defaultTags.SEQ; + case PlainValue.Type.PLAIN: + return nonSpecific ? PlainValue.defaultTags.STR : null; + default: + return null; + } + } + function resolveByTagName(doc, node, tagName) { + const { + tags + } = doc.schema; + const matchWithTest = []; + for (const tag of tags) { + if (tag.tag === tagName) { + if (tag.test) + matchWithTest.push(tag); + else { + const res = tag.resolve(doc, node); + return res instanceof Collection ? res : new Scalar(res); + } + } + } + const str = resolveString(doc, node); + if (typeof str === "string" && matchWithTest.length > 0) + return resolveScalar(str, matchWithTest, tags.scalarFallback); + return null; + } + function getFallbackTagName({ + type + }) { + switch (type) { + case PlainValue.Type.FLOW_MAP: + case PlainValue.Type.MAP: + return PlainValue.defaultTags.MAP; + case PlainValue.Type.FLOW_SEQ: + case PlainValue.Type.SEQ: + return PlainValue.defaultTags.SEQ; + default: + return PlainValue.defaultTags.STR; + } + } + function resolveTag(doc, node, tagName) { + try { + const res = resolveByTagName(doc, node, tagName); + if (res) { + if (tagName && node.tag) + res.tag = tagName; + return res; + } + } catch (error) { + if (!error.source) + error.source = node; + doc.errors.push(error); + return null; + } + try { + const fallback = getFallbackTagName(node); + if (!fallback) + throw new Error(`The tag ${tagName} is unavailable`); + const msg = `The tag ${tagName} is unavailable, falling back to ${fallback}`; + doc.warnings.push(new PlainValue.YAMLWarning(node, msg)); + const res = resolveByTagName(doc, node, fallback); + res.tag = tagName; + return res; + } catch (error) { + const refError = new PlainValue.YAMLReferenceError(node, error.message); + refError.stack = error.stack; + doc.errors.push(refError); + return null; + } + } + var isCollectionItem = (node) => { + if (!node) + return false; + const { + type + } = node; + return type === PlainValue.Type.MAP_KEY || type === PlainValue.Type.MAP_VALUE || type === PlainValue.Type.SEQ_ITEM; + }; + function resolveNodeProps(errors, node) { + const comments = { + before: [], + after: [] + }; + let hasAnchor = false; + let hasTag = false; + const props = isCollectionItem(node.context.parent) ? node.context.parent.props.concat(node.props) : node.props; + for (const { + start, + end + } of props) { + switch (node.context.src[start]) { + case PlainValue.Char.COMMENT: { + if (!node.commentHasRequiredWhitespace(start)) { + const msg = "Comments must be separated from other tokens by white space characters"; + errors.push(new PlainValue.YAMLSemanticError(node, msg)); + } + const { + header, + valueRange + } = node; + const cc = valueRange && (start > valueRange.start || header && start > header.start) ? comments.after : comments.before; + cc.push(node.context.src.slice(start + 1, end)); + break; + } + case PlainValue.Char.ANCHOR: + if (hasAnchor) { + const msg = "A node can have at most one anchor"; + errors.push(new PlainValue.YAMLSemanticError(node, msg)); + } + hasAnchor = true; + break; + case PlainValue.Char.TAG: + if (hasTag) { + const msg = "A node can have at most one tag"; + errors.push(new PlainValue.YAMLSemanticError(node, msg)); + } + hasTag = true; + break; + } + } + return { + comments, + hasAnchor, + hasTag + }; + } + function resolveNodeValue(doc, node) { + const { + anchors, + errors, + schema + } = doc; + if (node.type === PlainValue.Type.ALIAS) { + const name = node.rawValue; + const src = anchors.getNode(name); + if (!src) { + const msg = `Aliased anchor not found: ${name}`; + errors.push(new PlainValue.YAMLReferenceError(node, msg)); + return null; + } + const res = new Alias(src); + anchors._cstAliases.push(res); + return res; + } + const tagName = resolveTagName(doc, node); + if (tagName) + return resolveTag(doc, node, tagName); + if (node.type !== PlainValue.Type.PLAIN) { + const msg = `Failed to resolve ${node.type} node here`; + errors.push(new PlainValue.YAMLSyntaxError(node, msg)); + return null; + } + try { + const str = resolveString(doc, node); + return resolveScalar(str, schema.tags, schema.tags.scalarFallback); + } catch (error) { + if (!error.source) + error.source = node; + errors.push(error); + return null; + } + } + function resolveNode(doc, node) { + if (!node) + return null; + if (node.error) + doc.errors.push(node.error); + const { + comments, + hasAnchor, + hasTag + } = resolveNodeProps(doc.errors, node); + if (hasAnchor) { + const { + anchors + } = doc; + const name = node.anchor; + const prev = anchors.getNode(name); + if (prev) + anchors.map[anchors.newName(name)] = prev; + anchors.map[name] = node; + } + if (node.type === PlainValue.Type.ALIAS && (hasAnchor || hasTag)) { + const msg = "An alias node must not specify any properties"; + doc.errors.push(new PlainValue.YAMLSemanticError(node, msg)); + } + const res = resolveNodeValue(doc, node); + if (res) { + res.range = [node.range.start, node.range.end]; + if (doc.options.keepCstNodes) + res.cstNode = node; + if (doc.options.keepNodeTypes) + res.type = node.type; + const cb = comments.before.join("\n"); + if (cb) { + res.commentBefore = res.commentBefore ? `${res.commentBefore} +${cb}` : cb; + } + const ca = comments.after.join("\n"); + if (ca) + res.comment = res.comment ? `${res.comment} +${ca}` : ca; + } + return node.resolved = res; + } + function resolveMap(doc, cst) { + if (cst.type !== PlainValue.Type.MAP && cst.type !== PlainValue.Type.FLOW_MAP) { + const msg = `A ${cst.type} node cannot be resolved as a mapping`; + doc.errors.push(new PlainValue.YAMLSyntaxError(cst, msg)); + return null; + } + const { + comments, + items + } = cst.type === PlainValue.Type.FLOW_MAP ? resolveFlowMapItems(doc, cst) : resolveBlockMapItems(doc, cst); + const map = new YAMLMap(); + map.items = items; + resolveComments(map, comments); + let hasCollectionKey = false; + for (let i = 0; i < items.length; ++i) { + const { + key: iKey + } = items[i]; + if (iKey instanceof Collection) + hasCollectionKey = true; + if (doc.schema.merge && iKey && iKey.value === MERGE_KEY) { + items[i] = new Merge(items[i]); + const sources = items[i].value.items; + let error = null; + sources.some((node) => { + if (node instanceof Alias) { + const { + type + } = node.source; + if (type === PlainValue.Type.MAP || type === PlainValue.Type.FLOW_MAP) + return false; + return error = "Merge nodes aliases can only point to maps"; + } + return error = "Merge nodes can only have Alias nodes as values"; + }); + if (error) + doc.errors.push(new PlainValue.YAMLSemanticError(cst, error)); + } else { + for (let j = i + 1; j < items.length; ++j) { + const { + key: jKey + } = items[j]; + if (iKey === jKey || iKey && jKey && Object.prototype.hasOwnProperty.call(iKey, "value") && iKey.value === jKey.value) { + const msg = `Map keys must be unique; "${iKey}" is repeated`; + doc.errors.push(new PlainValue.YAMLSemanticError(cst, msg)); + break; + } + } + } + } + if (hasCollectionKey && !doc.options.mapAsMap) { + const warn = "Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this."; + doc.warnings.push(new PlainValue.YAMLWarning(cst, warn)); + } + cst.resolved = map; + return map; + } + var valueHasPairComment = ({ + context: { + lineStart, + node, + src + }, + props + }) => { + if (props.length === 0) + return false; + const { + start + } = props[0]; + if (node && start > node.valueRange.start) + return false; + if (src[start] !== PlainValue.Char.COMMENT) + return false; + for (let i = lineStart; i < start; ++i) + if (src[i] === "\n") + return false; + return true; + }; + function resolvePairComment(item, pair) { + if (!valueHasPairComment(item)) + return; + const comment = item.getPropValue(0, PlainValue.Char.COMMENT, true); + let found = false; + const cb = pair.value.commentBefore; + if (cb && cb.startsWith(comment)) { + pair.value.commentBefore = cb.substr(comment.length + 1); + found = true; + } else { + const cc = pair.value.comment; + if (!item.node && cc && cc.startsWith(comment)) { + pair.value.comment = cc.substr(comment.length + 1); + found = true; + } + } + if (found) + pair.comment = comment; + } + function resolveBlockMapItems(doc, cst) { + const comments = []; + const items = []; + let key = void 0; + let keyStart = null; + for (let i = 0; i < cst.items.length; ++i) { + const item = cst.items[i]; + switch (item.type) { + case PlainValue.Type.BLANK_LINE: + comments.push({ + afterKey: !!key, + before: items.length + }); + break; + case PlainValue.Type.COMMENT: + comments.push({ + afterKey: !!key, + before: items.length, + comment: item.comment + }); + break; + case PlainValue.Type.MAP_KEY: + if (key !== void 0) + items.push(new Pair(key)); + if (item.error) + doc.errors.push(item.error); + key = resolveNode(doc, item.node); + keyStart = null; + break; + case PlainValue.Type.MAP_VALUE: + { + if (key === void 0) + key = null; + if (item.error) + doc.errors.push(item.error); + if (!item.context.atLineStart && item.node && item.node.type === PlainValue.Type.MAP && !item.node.context.atLineStart) { + const msg = "Nested mappings are not allowed in compact mappings"; + doc.errors.push(new PlainValue.YAMLSemanticError(item.node, msg)); + } + let valueNode = item.node; + if (!valueNode && item.props.length > 0) { + valueNode = new PlainValue.PlainValue(PlainValue.Type.PLAIN, []); + valueNode.context = { + parent: item, + src: item.context.src + }; + const pos = item.range.start + 1; + valueNode.range = { + start: pos, + end: pos + }; + valueNode.valueRange = { + start: pos, + end: pos + }; + if (typeof item.range.origStart === "number") { + const origPos = item.range.origStart + 1; + valueNode.range.origStart = valueNode.range.origEnd = origPos; + valueNode.valueRange.origStart = valueNode.valueRange.origEnd = origPos; + } + } + const pair = new Pair(key, resolveNode(doc, valueNode)); + resolvePairComment(item, pair); + items.push(pair); + if (key && typeof keyStart === "number") { + if (item.range.start > keyStart + 1024) + doc.errors.push(getLongKeyError(cst, key)); + } + key = void 0; + keyStart = null; + } + break; + default: + if (key !== void 0) + items.push(new Pair(key)); + key = resolveNode(doc, item); + keyStart = item.range.start; + if (item.error) + doc.errors.push(item.error); + next: + for (let j = i + 1; ; ++j) { + const nextItem = cst.items[j]; + switch (nextItem && nextItem.type) { + case PlainValue.Type.BLANK_LINE: + case PlainValue.Type.COMMENT: + continue next; + case PlainValue.Type.MAP_VALUE: + break next; + default: { + const msg = "Implicit map keys need to be followed by map values"; + doc.errors.push(new PlainValue.YAMLSemanticError(item, msg)); + break next; + } + } + } + if (item.valueRangeContainsNewline) { + const msg = "Implicit map keys need to be on a single line"; + doc.errors.push(new PlainValue.YAMLSemanticError(item, msg)); + } + } + } + if (key !== void 0) + items.push(new Pair(key)); + return { + comments, + items + }; + } + function resolveFlowMapItems(doc, cst) { + const comments = []; + const items = []; + let key = void 0; + let explicitKey = false; + let next = "{"; + for (let i = 0; i < cst.items.length; ++i) { + const item = cst.items[i]; + if (typeof item.char === "string") { + const { + char, + offset + } = item; + if (char === "?" && key === void 0 && !explicitKey) { + explicitKey = true; + next = ":"; + continue; + } + if (char === ":") { + if (key === void 0) + key = null; + if (next === ":") { + next = ","; + continue; + } + } else { + if (explicitKey) { + if (key === void 0 && char !== ",") + key = null; + explicitKey = false; + } + if (key !== void 0) { + items.push(new Pair(key)); + key = void 0; + if (char === ",") { + next = ":"; + continue; + } + } + } + if (char === "}") { + if (i === cst.items.length - 1) + continue; + } else if (char === next) { + next = ":"; + continue; + } + const msg = `Flow map contains an unexpected ${char}`; + const err = new PlainValue.YAMLSyntaxError(cst, msg); + err.offset = offset; + doc.errors.push(err); + } else if (item.type === PlainValue.Type.BLANK_LINE) { + comments.push({ + afterKey: !!key, + before: items.length + }); + } else if (item.type === PlainValue.Type.COMMENT) { + checkFlowCommentSpace(doc.errors, item); + comments.push({ + afterKey: !!key, + before: items.length, + comment: item.comment + }); + } else if (key === void 0) { + if (next === ",") + doc.errors.push(new PlainValue.YAMLSemanticError(item, "Separator , missing in flow map")); + key = resolveNode(doc, item); + } else { + if (next !== ",") + doc.errors.push(new PlainValue.YAMLSemanticError(item, "Indicator : missing in flow map entry")); + items.push(new Pair(key, resolveNode(doc, item))); + key = void 0; + explicitKey = false; + } + } + checkFlowCollectionEnd(doc.errors, cst); + if (key !== void 0) + items.push(new Pair(key)); + return { + comments, + items + }; + } + function resolveSeq(doc, cst) { + if (cst.type !== PlainValue.Type.SEQ && cst.type !== PlainValue.Type.FLOW_SEQ) { + const msg = `A ${cst.type} node cannot be resolved as a sequence`; + doc.errors.push(new PlainValue.YAMLSyntaxError(cst, msg)); + return null; + } + const { + comments, + items + } = cst.type === PlainValue.Type.FLOW_SEQ ? resolveFlowSeqItems(doc, cst) : resolveBlockSeqItems(doc, cst); + const seq = new YAMLSeq(); + seq.items = items; + resolveComments(seq, comments); + if (!doc.options.mapAsMap && items.some((it) => it instanceof Pair && it.key instanceof Collection)) { + const warn = "Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this."; + doc.warnings.push(new PlainValue.YAMLWarning(cst, warn)); + } + cst.resolved = seq; + return seq; + } + function resolveBlockSeqItems(doc, cst) { + const comments = []; + const items = []; + for (let i = 0; i < cst.items.length; ++i) { + const item = cst.items[i]; + switch (item.type) { + case PlainValue.Type.BLANK_LINE: + comments.push({ + before: items.length + }); + break; + case PlainValue.Type.COMMENT: + comments.push({ + comment: item.comment, + before: items.length + }); + break; + case PlainValue.Type.SEQ_ITEM: + if (item.error) + doc.errors.push(item.error); + items.push(resolveNode(doc, item.node)); + if (item.hasProps) { + const msg = "Sequence items cannot have tags or anchors before the - indicator"; + doc.errors.push(new PlainValue.YAMLSemanticError(item, msg)); + } + break; + default: + if (item.error) + doc.errors.push(item.error); + doc.errors.push(new PlainValue.YAMLSyntaxError(item, `Unexpected ${item.type} node in sequence`)); + } + } + return { + comments, + items + }; + } + function resolveFlowSeqItems(doc, cst) { + const comments = []; + const items = []; + let explicitKey = false; + let key = void 0; + let keyStart = null; + let next = "["; + let prevItem = null; + for (let i = 0; i < cst.items.length; ++i) { + const item = cst.items[i]; + if (typeof item.char === "string") { + const { + char, + offset + } = item; + if (char !== ":" && (explicitKey || key !== void 0)) { + if (explicitKey && key === void 0) + key = next ? items.pop() : null; + items.push(new Pair(key)); + explicitKey = false; + key = void 0; + keyStart = null; + } + if (char === next) { + next = null; + } else if (!next && char === "?") { + explicitKey = true; + } else if (next !== "[" && char === ":" && key === void 0) { + if (next === ",") { + key = items.pop(); + if (key instanceof Pair) { + const msg = "Chaining flow sequence pairs is invalid"; + const err = new PlainValue.YAMLSemanticError(cst, msg); + err.offset = offset; + doc.errors.push(err); + } + if (!explicitKey && typeof keyStart === "number") { + const keyEnd = item.range ? item.range.start : item.offset; + if (keyEnd > keyStart + 1024) + doc.errors.push(getLongKeyError(cst, key)); + const { + src + } = prevItem.context; + for (let i2 = keyStart; i2 < keyEnd; ++i2) + if (src[i2] === "\n") { + const msg = "Implicit keys of flow sequence pairs need to be on a single line"; + doc.errors.push(new PlainValue.YAMLSemanticError(prevItem, msg)); + break; + } + } + } else { + key = null; + } + keyStart = null; + explicitKey = false; + next = null; + } else if (next === "[" || char !== "]" || i < cst.items.length - 1) { + const msg = `Flow sequence contains an unexpected ${char}`; + const err = new PlainValue.YAMLSyntaxError(cst, msg); + err.offset = offset; + doc.errors.push(err); + } + } else if (item.type === PlainValue.Type.BLANK_LINE) { + comments.push({ + before: items.length + }); + } else if (item.type === PlainValue.Type.COMMENT) { + checkFlowCommentSpace(doc.errors, item); + comments.push({ + comment: item.comment, + before: items.length + }); + } else { + if (next) { + const msg = `Expected a ${next} in flow sequence`; + doc.errors.push(new PlainValue.YAMLSemanticError(item, msg)); + } + const value = resolveNode(doc, item); + if (key === void 0) { + items.push(value); + prevItem = item; + } else { + items.push(new Pair(key, value)); + key = void 0; + } + keyStart = item.range.start; + next = ","; + } + } + checkFlowCollectionEnd(doc.errors, cst); + if (key !== void 0) + items.push(new Pair(key)); + return { + comments, + items + }; + } + exports2.Alias = Alias; + exports2.Collection = Collection; + exports2.Merge = Merge; + exports2.Node = Node; + exports2.Pair = Pair; + exports2.Scalar = Scalar; + exports2.YAMLMap = YAMLMap; + exports2.YAMLSeq = YAMLSeq; + exports2.addComment = addComment; + exports2.binaryOptions = binaryOptions; + exports2.boolOptions = boolOptions; + exports2.findPair = findPair; + exports2.intOptions = intOptions; + exports2.isEmptyPath = isEmptyPath; + exports2.nullOptions = nullOptions; + exports2.resolveMap = resolveMap; + exports2.resolveNode = resolveNode; + exports2.resolveSeq = resolveSeq; + exports2.resolveString = resolveString; + exports2.strOptions = strOptions; + exports2.stringifyNumber = stringifyNumber; + exports2.stringifyString = stringifyString; + exports2.toJSON = toJSON; + } +}); + +// node_modules/yaml/dist/warnings-1000a372.js +var require_warnings_1000a372 = __commonJS({ + "node_modules/yaml/dist/warnings-1000a372.js"(exports2) { + "use strict"; + var PlainValue = require_PlainValue_ec8e588e(); + var resolveSeq = require_resolveSeq_d03cb037(); + var binary = { + identify: (value) => value instanceof Uint8Array, + default: false, + tag: "tag:yaml.org,2002:binary", + resolve: (doc, node) => { + const src = resolveSeq.resolveString(doc, node); + if (typeof Buffer === "function") { + return Buffer.from(src, "base64"); + } else if (typeof atob === "function") { + const str = atob(src.replace(/[\n\r]/g, "")); + const buffer = new Uint8Array(str.length); + for (let i = 0; i < str.length; ++i) + buffer[i] = str.charCodeAt(i); + return buffer; + } else { + const msg = "This environment does not support reading binary tags; either Buffer or atob is required"; + doc.errors.push(new PlainValue.YAMLReferenceError(node, msg)); + return null; + } + }, + options: resolveSeq.binaryOptions, + stringify: ({ + comment, + type, + value + }, ctx, onComment, onChompKeep) => { + let src; + if (typeof Buffer === "function") { + src = value instanceof Buffer ? value.toString("base64") : Buffer.from(value.buffer).toString("base64"); + } else if (typeof btoa === "function") { + let s = ""; + for (let i = 0; i < value.length; ++i) + s += String.fromCharCode(value[i]); + src = btoa(s); + } else { + throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required"); + } + if (!type) + type = resolveSeq.binaryOptions.defaultType; + if (type === PlainValue.Type.QUOTE_DOUBLE) { + value = src; + } else { + const { + lineWidth + } = resolveSeq.binaryOptions; + const n = Math.ceil(src.length / lineWidth); + const lines = new Array(n); + for (let i = 0, o = 0; i < n; ++i, o += lineWidth) { + lines[i] = src.substr(o, lineWidth); + } + value = lines.join(type === PlainValue.Type.BLOCK_LITERAL ? "\n" : " "); + } + return resolveSeq.stringifyString({ + comment, + type, + value + }, ctx, onComment, onChompKeep); + } + }; + function parsePairs(doc, cst) { + const seq = resolveSeq.resolveSeq(doc, cst); + for (let i = 0; i < seq.items.length; ++i) { + let item = seq.items[i]; + if (item instanceof resolveSeq.Pair) + continue; + else if (item instanceof resolveSeq.YAMLMap) { + if (item.items.length > 1) { + const msg = "Each pair must have its own sequence indicator"; + throw new PlainValue.YAMLSemanticError(cst, msg); + } + const pair = item.items[0] || new resolveSeq.Pair(); + if (item.commentBefore) + pair.commentBefore = pair.commentBefore ? `${item.commentBefore} +${pair.commentBefore}` : item.commentBefore; + if (item.comment) + pair.comment = pair.comment ? `${item.comment} +${pair.comment}` : item.comment; + item = pair; + } + seq.items[i] = item instanceof resolveSeq.Pair ? item : new resolveSeq.Pair(item); + } + return seq; + } + function createPairs(schema, iterable, ctx) { + const pairs2 = new resolveSeq.YAMLSeq(schema); + pairs2.tag = "tag:yaml.org,2002:pairs"; + for (const it of iterable) { + let key, value; + if (Array.isArray(it)) { + if (it.length === 2) { + key = it[0]; + value = it[1]; + } else + throw new TypeError(`Expected [key, value] tuple: ${it}`); + } else if (it && it instanceof Object) { + const keys = Object.keys(it); + if (keys.length === 1) { + key = keys[0]; + value = it[key]; + } else + throw new TypeError(`Expected { key: value } tuple: ${it}`); + } else { + key = it; + } + const pair = schema.createPair(key, value, ctx); + pairs2.items.push(pair); + } + return pairs2; + } + var pairs = { + default: false, + tag: "tag:yaml.org,2002:pairs", + resolve: parsePairs, + createNode: createPairs + }; + var YAMLOMap = class extends resolveSeq.YAMLSeq { + constructor() { + super(); + PlainValue._defineProperty(this, "add", resolveSeq.YAMLMap.prototype.add.bind(this)); + PlainValue._defineProperty(this, "delete", resolveSeq.YAMLMap.prototype.delete.bind(this)); + PlainValue._defineProperty(this, "get", resolveSeq.YAMLMap.prototype.get.bind(this)); + PlainValue._defineProperty(this, "has", resolveSeq.YAMLMap.prototype.has.bind(this)); + PlainValue._defineProperty(this, "set", resolveSeq.YAMLMap.prototype.set.bind(this)); + this.tag = YAMLOMap.tag; + } + toJSON(_, ctx) { + const map = /* @__PURE__ */ new Map(); + if (ctx && ctx.onCreate) + ctx.onCreate(map); + for (const pair of this.items) { + let key, value; + if (pair instanceof resolveSeq.Pair) { + key = resolveSeq.toJSON(pair.key, "", ctx); + value = resolveSeq.toJSON(pair.value, key, ctx); + } else { + key = resolveSeq.toJSON(pair, "", ctx); + } + if (map.has(key)) + throw new Error("Ordered maps must not include duplicate keys"); + map.set(key, value); + } + return map; + } + }; + PlainValue._defineProperty(YAMLOMap, "tag", "tag:yaml.org,2002:omap"); + function parseOMap(doc, cst) { + const pairs2 = parsePairs(doc, cst); + const seenKeys = []; + for (const { + key + } of pairs2.items) { + if (key instanceof resolveSeq.Scalar) { + if (seenKeys.includes(key.value)) { + const msg = "Ordered maps must not include duplicate keys"; + throw new PlainValue.YAMLSemanticError(cst, msg); + } else { + seenKeys.push(key.value); + } + } + } + return Object.assign(new YAMLOMap(), pairs2); + } + function createOMap(schema, iterable, ctx) { + const pairs2 = createPairs(schema, iterable, ctx); + const omap2 = new YAMLOMap(); + omap2.items = pairs2.items; + return omap2; + } + var omap = { + identify: (value) => value instanceof Map, + nodeClass: YAMLOMap, + default: false, + tag: "tag:yaml.org,2002:omap", + resolve: parseOMap, + createNode: createOMap + }; + var YAMLSet = class extends resolveSeq.YAMLMap { + constructor() { + super(); + this.tag = YAMLSet.tag; + } + add(key) { + const pair = key instanceof resolveSeq.Pair ? key : new resolveSeq.Pair(key); + const prev = resolveSeq.findPair(this.items, pair.key); + if (!prev) + this.items.push(pair); + } + get(key, keepPair) { + const pair = resolveSeq.findPair(this.items, key); + return !keepPair && pair instanceof resolveSeq.Pair ? pair.key instanceof resolveSeq.Scalar ? pair.key.value : pair.key : pair; + } + set(key, value) { + if (typeof value !== "boolean") + throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`); + const prev = resolveSeq.findPair(this.items, key); + if (prev && !value) { + this.items.splice(this.items.indexOf(prev), 1); + } else if (!prev && value) { + this.items.push(new resolveSeq.Pair(key)); + } + } + toJSON(_, ctx) { + return super.toJSON(_, ctx, Set); + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + if (this.hasAllNullValues()) + return super.toString(ctx, onComment, onChompKeep); + else + throw new Error("Set items must all have null values"); + } + }; + PlainValue._defineProperty(YAMLSet, "tag", "tag:yaml.org,2002:set"); + function parseSet(doc, cst) { + const map = resolveSeq.resolveMap(doc, cst); + if (!map.hasAllNullValues()) + throw new PlainValue.YAMLSemanticError(cst, "Set items must all have null values"); + return Object.assign(new YAMLSet(), map); + } + function createSet(schema, iterable, ctx) { + const set2 = new YAMLSet(); + for (const value of iterable) + set2.items.push(schema.createPair(value, null, ctx)); + return set2; + } + var set = { + identify: (value) => value instanceof Set, + nodeClass: YAMLSet, + default: false, + tag: "tag:yaml.org,2002:set", + resolve: parseSet, + createNode: createSet + }; + var parseSexagesimal = (sign, parts) => { + const n = parts.split(":").reduce((n2, p) => n2 * 60 + Number(p), 0); + return sign === "-" ? -n : n; + }; + var stringifySexagesimal = ({ + value + }) => { + if (isNaN(value) || !isFinite(value)) + return resolveSeq.stringifyNumber(value); + let sign = ""; + if (value < 0) { + sign = "-"; + value = Math.abs(value); + } + const parts = [value % 60]; + if (value < 60) { + parts.unshift(0); + } else { + value = Math.round((value - parts[0]) / 60); + parts.unshift(value % 60); + if (value >= 60) { + value = Math.round((value - parts[0]) / 60); + parts.unshift(value); + } + } + return sign + parts.map((n) => n < 10 ? "0" + String(n) : String(n)).join(":").replace(/000000\d*$/, ""); + }; + var intTime = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:int", + format: "TIME", + test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+)$/, + resolve: (str, sign, parts) => parseSexagesimal(sign, parts.replace(/_/g, "")), + stringify: stringifySexagesimal + }; + var floatTime = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "TIME", + test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*)$/, + resolve: (str, sign, parts) => parseSexagesimal(sign, parts.replace(/_/g, "")), + stringify: stringifySexagesimal + }; + var timestamp = { + identify: (value) => value instanceof Date, + default: true, + tag: "tag:yaml.org,2002:timestamp", + test: RegExp("^(?:([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?)$"), + resolve: (str, year, month, day, hour, minute, second, millisec, tz) => { + if (millisec) + millisec = (millisec + "00").substr(1, 3); + let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec || 0); + if (tz && tz !== "Z") { + let d = parseSexagesimal(tz[0], tz.slice(1)); + if (Math.abs(d) < 30) + d *= 60; + date -= 6e4 * d; + } + return new Date(date); + }, + stringify: ({ + value + }) => value.toISOString().replace(/((T00:00)?:00)?\.000Z$/, "") + }; + function shouldWarn(deprecation) { + const env = typeof process !== "undefined" && process.env || {}; + if (deprecation) { + if (typeof YAML_SILENCE_DEPRECATION_WARNINGS !== "undefined") + return !YAML_SILENCE_DEPRECATION_WARNINGS; + return !env.YAML_SILENCE_DEPRECATION_WARNINGS; + } + if (typeof YAML_SILENCE_WARNINGS !== "undefined") + return !YAML_SILENCE_WARNINGS; + return !env.YAML_SILENCE_WARNINGS; + } + function warn(warning, type) { + if (shouldWarn(false)) { + const emit = typeof process !== "undefined" && process.emitWarning; + if (emit) + emit(warning, type); + else { + console.warn(type ? `${type}: ${warning}` : warning); + } + } + } + function warnFileDeprecation(filename) { + if (shouldWarn(true)) { + const path = filename.replace(/.*yaml[/\\]/i, "").replace(/\.js$/, "").replace(/\\/g, "/"); + warn(`The endpoint 'yaml/${path}' will be removed in a future release.`, "DeprecationWarning"); + } + } + var warned = {}; + function warnOptionDeprecation(name, alternative) { + if (!warned[name] && shouldWarn(true)) { + warned[name] = true; + let msg = `The option '${name}' will be removed in a future release`; + msg += alternative ? `, use '${alternative}' instead.` : "."; + warn(msg, "DeprecationWarning"); + } + } + exports2.binary = binary; + exports2.floatTime = floatTime; + exports2.intTime = intTime; + exports2.omap = omap; + exports2.pairs = pairs; + exports2.set = set; + exports2.timestamp = timestamp; + exports2.warn = warn; + exports2.warnFileDeprecation = warnFileDeprecation; + exports2.warnOptionDeprecation = warnOptionDeprecation; + } +}); + +// node_modules/yaml/dist/Schema-88e323a7.js +var require_Schema_88e323a7 = __commonJS({ + "node_modules/yaml/dist/Schema-88e323a7.js"(exports2) { + "use strict"; + var PlainValue = require_PlainValue_ec8e588e(); + var resolveSeq = require_resolveSeq_d03cb037(); + var warnings = require_warnings_1000a372(); + function createMap(schema, obj, ctx) { + const map2 = new resolveSeq.YAMLMap(schema); + if (obj instanceof Map) { + for (const [key, value] of obj) + map2.items.push(schema.createPair(key, value, ctx)); + } else if (obj && typeof obj === "object") { + for (const key of Object.keys(obj)) + map2.items.push(schema.createPair(key, obj[key], ctx)); + } + if (typeof schema.sortMapEntries === "function") { + map2.items.sort(schema.sortMapEntries); + } + return map2; + } + var map = { + createNode: createMap, + default: true, + nodeClass: resolveSeq.YAMLMap, + tag: "tag:yaml.org,2002:map", + resolve: resolveSeq.resolveMap + }; + function createSeq(schema, obj, ctx) { + const seq2 = new resolveSeq.YAMLSeq(schema); + if (obj && obj[Symbol.iterator]) { + for (const it of obj) { + const v = schema.createNode(it, ctx.wrapScalars, null, ctx); + seq2.items.push(v); + } + } + return seq2; + } + var seq = { + createNode: createSeq, + default: true, + nodeClass: resolveSeq.YAMLSeq, + tag: "tag:yaml.org,2002:seq", + resolve: resolveSeq.resolveSeq + }; + var string = { + identify: (value) => typeof value === "string", + default: true, + tag: "tag:yaml.org,2002:str", + resolve: resolveSeq.resolveString, + stringify(item, ctx, onComment, onChompKeep) { + ctx = Object.assign({ + actualString: true + }, ctx); + return resolveSeq.stringifyString(item, ctx, onComment, onChompKeep); + }, + options: resolveSeq.strOptions + }; + var failsafe = [map, seq, string]; + var intIdentify$2 = (value) => typeof value === "bigint" || Number.isInteger(value); + var intResolve$1 = (src, part, radix) => resolveSeq.intOptions.asBigInt ? BigInt(src) : parseInt(part, radix); + function intStringify$1(node, radix, prefix) { + const { + value + } = node; + if (intIdentify$2(value) && value >= 0) + return prefix + value.toString(radix); + return resolveSeq.stringifyNumber(node); + } + var nullObj = { + identify: (value) => value == null, + createNode: (schema, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null, + default: true, + tag: "tag:yaml.org,2002:null", + test: /^(?:~|[Nn]ull|NULL)?$/, + resolve: () => null, + options: resolveSeq.nullOptions, + stringify: () => resolveSeq.nullOptions.nullStr + }; + var boolObj = { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/, + resolve: (str) => str[0] === "t" || str[0] === "T", + options: resolveSeq.boolOptions, + stringify: ({ + value + }) => value ? resolveSeq.boolOptions.trueStr : resolveSeq.boolOptions.falseStr + }; + var octObj = { + identify: (value) => intIdentify$2(value) && value >= 0, + default: true, + tag: "tag:yaml.org,2002:int", + format: "OCT", + test: /^0o([0-7]+)$/, + resolve: (str, oct) => intResolve$1(str, oct, 8), + options: resolveSeq.intOptions, + stringify: (node) => intStringify$1(node, 8, "0o") + }; + var intObj = { + identify: intIdentify$2, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^[-+]?[0-9]+$/, + resolve: (str) => intResolve$1(str, str, 10), + options: resolveSeq.intOptions, + stringify: resolveSeq.stringifyNumber + }; + var hexObj = { + identify: (value) => intIdentify$2(value) && value >= 0, + default: true, + tag: "tag:yaml.org,2002:int", + format: "HEX", + test: /^0x([0-9a-fA-F]+)$/, + resolve: (str, hex) => intResolve$1(str, hex, 16), + options: resolveSeq.intOptions, + stringify: (node) => intStringify$1(node, 16, "0x") + }; + var nanObj = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^(?:[-+]?\.inf|(\.nan))$/i, + resolve: (str, nan) => nan ? NaN : str[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, + stringify: resolveSeq.stringifyNumber + }; + var expObj = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "EXP", + test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/, + resolve: (str) => parseFloat(str), + stringify: ({ + value + }) => Number(value).toExponential() + }; + var floatObj = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^[-+]?(?:\.([0-9]+)|[0-9]+\.([0-9]*))$/, + resolve(str, frac1, frac2) { + const frac = frac1 || frac2; + const node = new resolveSeq.Scalar(parseFloat(str)); + if (frac && frac[frac.length - 1] === "0") + node.minFractionDigits = frac.length; + return node; + }, + stringify: resolveSeq.stringifyNumber + }; + var core = failsafe.concat([nullObj, boolObj, octObj, intObj, hexObj, nanObj, expObj, floatObj]); + var intIdentify$1 = (value) => typeof value === "bigint" || Number.isInteger(value); + var stringifyJSON = ({ + value + }) => JSON.stringify(value); + var json = [map, seq, { + identify: (value) => typeof value === "string", + default: true, + tag: "tag:yaml.org,2002:str", + resolve: resolveSeq.resolveString, + stringify: stringifyJSON + }, { + identify: (value) => value == null, + createNode: (schema, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null, + default: true, + tag: "tag:yaml.org,2002:null", + test: /^null$/, + resolve: () => null, + stringify: stringifyJSON + }, { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^true|false$/, + resolve: (str) => str === "true", + stringify: stringifyJSON + }, { + identify: intIdentify$1, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^-?(?:0|[1-9][0-9]*)$/, + resolve: (str) => resolveSeq.intOptions.asBigInt ? BigInt(str) : parseInt(str, 10), + stringify: ({ + value + }) => intIdentify$1(value) ? value.toString() : JSON.stringify(value) + }, { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/, + resolve: (str) => parseFloat(str), + stringify: stringifyJSON + }]; + json.scalarFallback = (str) => { + throw new SyntaxError(`Unresolved plain scalar ${JSON.stringify(str)}`); + }; + var boolStringify = ({ + value + }) => value ? resolveSeq.boolOptions.trueStr : resolveSeq.boolOptions.falseStr; + var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); + function intResolve(sign, src, radix) { + let str = src.replace(/_/g, ""); + if (resolveSeq.intOptions.asBigInt) { + switch (radix) { + case 2: + str = `0b${str}`; + break; + case 8: + str = `0o${str}`; + break; + case 16: + str = `0x${str}`; + break; + } + const n2 = BigInt(str); + return sign === "-" ? BigInt(-1) * n2 : n2; + } + const n = parseInt(str, radix); + return sign === "-" ? -1 * n : n; + } + function intStringify(node, radix, prefix) { + const { + value + } = node; + if (intIdentify(value)) { + const str = value.toString(radix); + return value < 0 ? "-" + prefix + str.substr(1) : prefix + str; + } + return resolveSeq.stringifyNumber(node); + } + var yaml11 = failsafe.concat([{ + identify: (value) => value == null, + createNode: (schema, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null, + default: true, + tag: "tag:yaml.org,2002:null", + test: /^(?:~|[Nn]ull|NULL)?$/, + resolve: () => null, + options: resolveSeq.nullOptions, + stringify: () => resolveSeq.nullOptions.nullStr + }, { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/, + resolve: () => true, + options: resolveSeq.boolOptions, + stringify: boolStringify + }, { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i, + resolve: () => false, + options: resolveSeq.boolOptions, + stringify: boolStringify + }, { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "BIN", + test: /^([-+]?)0b([0-1_]+)$/, + resolve: (str, sign, bin) => intResolve(sign, bin, 2), + stringify: (node) => intStringify(node, 2, "0b") + }, { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "OCT", + test: /^([-+]?)0([0-7_]+)$/, + resolve: (str, sign, oct) => intResolve(sign, oct, 8), + stringify: (node) => intStringify(node, 8, "0") + }, { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^([-+]?)([0-9][0-9_]*)$/, + resolve: (str, sign, abs) => intResolve(sign, abs, 10), + stringify: resolveSeq.stringifyNumber + }, { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "HEX", + test: /^([-+]?)0x([0-9a-fA-F_]+)$/, + resolve: (str, sign, hex) => intResolve(sign, hex, 16), + stringify: (node) => intStringify(node, 16, "0x") + }, { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^(?:[-+]?\.inf|(\.nan))$/i, + resolve: (str, nan) => nan ? NaN : str[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, + stringify: resolveSeq.stringifyNumber + }, { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "EXP", + test: /^[-+]?([0-9][0-9_]*)?(\.[0-9_]*)?[eE][-+]?[0-9]+$/, + resolve: (str) => parseFloat(str.replace(/_/g, "")), + stringify: ({ + value + }) => Number(value).toExponential() + }, { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^[-+]?(?:[0-9][0-9_]*)?\.([0-9_]*)$/, + resolve(str, frac) { + const node = new resolveSeq.Scalar(parseFloat(str.replace(/_/g, ""))); + if (frac) { + const f = frac.replace(/_/g, ""); + if (f[f.length - 1] === "0") + node.minFractionDigits = f.length; + } + return node; + }, + stringify: resolveSeq.stringifyNumber + }], warnings.binary, warnings.omap, warnings.pairs, warnings.set, warnings.intTime, warnings.floatTime, warnings.timestamp); + var schemas = { + core, + failsafe, + json, + yaml11 + }; + var tags = { + binary: warnings.binary, + bool: boolObj, + float: floatObj, + floatExp: expObj, + floatNaN: nanObj, + floatTime: warnings.floatTime, + int: intObj, + intHex: hexObj, + intOct: octObj, + intTime: warnings.intTime, + map, + null: nullObj, + omap: warnings.omap, + pairs: warnings.pairs, + seq, + set: warnings.set, + timestamp: warnings.timestamp + }; + function findTagObject(value, tagName, tags2) { + if (tagName) { + const match = tags2.filter((t) => t.tag === tagName); + const tagObj = match.find((t) => !t.format) || match[0]; + if (!tagObj) + throw new Error(`Tag ${tagName} not found`); + return tagObj; + } + return tags2.find((t) => (t.identify && t.identify(value) || t.class && value instanceof t.class) && !t.format); + } + function createNode(value, tagName, ctx) { + if (value instanceof resolveSeq.Node) + return value; + const { + defaultPrefix, + onTagObj, + prevObjects, + schema, + wrapScalars + } = ctx; + if (tagName && tagName.startsWith("!!")) + tagName = defaultPrefix + tagName.slice(2); + let tagObj = findTagObject(value, tagName, schema.tags); + if (!tagObj) { + if (typeof value.toJSON === "function") + value = value.toJSON(); + if (!value || typeof value !== "object") + return wrapScalars ? new resolveSeq.Scalar(value) : value; + tagObj = value instanceof Map ? map : value[Symbol.iterator] ? seq : map; + } + if (onTagObj) { + onTagObj(tagObj); + delete ctx.onTagObj; + } + const obj = { + value: void 0, + node: void 0 + }; + if (value && typeof value === "object" && prevObjects) { + const prev = prevObjects.get(value); + if (prev) { + const alias = new resolveSeq.Alias(prev); + ctx.aliasNodes.push(alias); + return alias; + } + obj.value = value; + prevObjects.set(value, obj); + } + obj.node = tagObj.createNode ? tagObj.createNode(ctx.schema, value, ctx) : wrapScalars ? new resolveSeq.Scalar(value) : value; + if (tagName && obj.node instanceof resolveSeq.Node) + obj.node.tag = tagName; + return obj.node; + } + function getSchemaTags(schemas2, knownTags, customTags, schemaId) { + let tags2 = schemas2[schemaId.replace(/\W/g, "")]; + if (!tags2) { + const keys = Object.keys(schemas2).map((key) => JSON.stringify(key)).join(", "); + throw new Error(`Unknown schema "${schemaId}"; use one of ${keys}`); + } + if (Array.isArray(customTags)) { + for (const tag of customTags) + tags2 = tags2.concat(tag); + } else if (typeof customTags === "function") { + tags2 = customTags(tags2.slice()); + } + for (let i = 0; i < tags2.length; ++i) { + const tag = tags2[i]; + if (typeof tag === "string") { + const tagObj = knownTags[tag]; + if (!tagObj) { + const keys = Object.keys(knownTags).map((key) => JSON.stringify(key)).join(", "); + throw new Error(`Unknown custom tag "${tag}"; use one of ${keys}`); + } + tags2[i] = tagObj; + } + } + return tags2; + } + var sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0; + var Schema = class { + constructor({ + customTags, + merge, + schema, + sortMapEntries, + tags: deprecatedCustomTags + }) { + this.merge = !!merge; + this.name = schema; + this.sortMapEntries = sortMapEntries === true ? sortMapEntriesByKey : sortMapEntries || null; + if (!customTags && deprecatedCustomTags) + warnings.warnOptionDeprecation("tags", "customTags"); + this.tags = getSchemaTags(schemas, tags, customTags || deprecatedCustomTags, schema); + } + createNode(value, wrapScalars, tagName, ctx) { + const baseCtx = { + defaultPrefix: Schema.defaultPrefix, + schema: this, + wrapScalars + }; + const createCtx = ctx ? Object.assign(ctx, baseCtx) : baseCtx; + return createNode(value, tagName, createCtx); + } + createPair(key, value, ctx) { + if (!ctx) + ctx = { + wrapScalars: true + }; + const k = this.createNode(key, ctx.wrapScalars, null, ctx); + const v = this.createNode(value, ctx.wrapScalars, null, ctx); + return new resolveSeq.Pair(k, v); + } + }; + PlainValue._defineProperty(Schema, "defaultPrefix", PlainValue.defaultTagPrefix); + PlainValue._defineProperty(Schema, "defaultTags", PlainValue.defaultTags); + exports2.Schema = Schema; + } +}); + +// node_modules/yaml/dist/Document-9b4560a1.js +var require_Document_9b4560a1 = __commonJS({ + "node_modules/yaml/dist/Document-9b4560a1.js"(exports2) { + "use strict"; + var PlainValue = require_PlainValue_ec8e588e(); + var resolveSeq = require_resolveSeq_d03cb037(); + var Schema = require_Schema_88e323a7(); + var defaultOptions = { + anchorPrefix: "a", + customTags: null, + indent: 2, + indentSeq: true, + keepCstNodes: false, + keepNodeTypes: true, + keepBlobsInJSON: true, + mapAsMap: false, + maxAliasCount: 100, + prettyErrors: false, + simpleKeys: false, + version: "1.2" + }; + var scalarOptions = { + get binary() { + return resolveSeq.binaryOptions; + }, + set binary(opt) { + Object.assign(resolveSeq.binaryOptions, opt); + }, + get bool() { + return resolveSeq.boolOptions; + }, + set bool(opt) { + Object.assign(resolveSeq.boolOptions, opt); + }, + get int() { + return resolveSeq.intOptions; + }, + set int(opt) { + Object.assign(resolveSeq.intOptions, opt); + }, + get null() { + return resolveSeq.nullOptions; + }, + set null(opt) { + Object.assign(resolveSeq.nullOptions, opt); + }, + get str() { + return resolveSeq.strOptions; + }, + set str(opt) { + Object.assign(resolveSeq.strOptions, opt); + } + }; + var documentOptions = { + "1.0": { + schema: "yaml-1.1", + merge: true, + tagPrefixes: [{ + handle: "!", + prefix: PlainValue.defaultTagPrefix + }, { + handle: "!!", + prefix: "tag:private.yaml.org,2002:" + }] + }, + 1.1: { + schema: "yaml-1.1", + merge: true, + tagPrefixes: [{ + handle: "!", + prefix: "!" + }, { + handle: "!!", + prefix: PlainValue.defaultTagPrefix + }] + }, + 1.2: { + schema: "core", + merge: false, + tagPrefixes: [{ + handle: "!", + prefix: "!" + }, { + handle: "!!", + prefix: PlainValue.defaultTagPrefix + }] + } + }; + function stringifyTag(doc, tag) { + if ((doc.version || doc.options.version) === "1.0") { + const priv = tag.match(/^tag:private\.yaml\.org,2002:([^:/]+)$/); + if (priv) + return "!" + priv[1]; + const vocab = tag.match(/^tag:([a-zA-Z0-9-]+)\.yaml\.org,2002:(.*)/); + return vocab ? `!${vocab[1]}/${vocab[2]}` : `!${tag.replace(/^tag:/, "")}`; + } + let p = doc.tagPrefixes.find((p2) => tag.indexOf(p2.prefix) === 0); + if (!p) { + const dtp = doc.getDefaults().tagPrefixes; + p = dtp && dtp.find((p2) => tag.indexOf(p2.prefix) === 0); + } + if (!p) + return tag[0] === "!" ? tag : `!<${tag}>`; + const suffix = tag.substr(p.prefix.length).replace(/[!,[\]{}]/g, (ch) => ({ + "!": "%21", + ",": "%2C", + "[": "%5B", + "]": "%5D", + "{": "%7B", + "}": "%7D" + })[ch]); + return p.handle + suffix; + } + function getTagObject(tags, item) { + if (item instanceof resolveSeq.Alias) + return resolveSeq.Alias; + if (item.tag) { + const match = tags.filter((t) => t.tag === item.tag); + if (match.length > 0) + return match.find((t) => t.format === item.format) || match[0]; + } + let tagObj, obj; + if (item instanceof resolveSeq.Scalar) { + obj = item.value; + const match = tags.filter((t) => t.identify && t.identify(obj) || t.class && obj instanceof t.class); + tagObj = match.find((t) => t.format === item.format) || match.find((t) => !t.format); + } else { + obj = item; + tagObj = tags.find((t) => t.nodeClass && obj instanceof t.nodeClass); + } + if (!tagObj) { + const name = obj && obj.constructor ? obj.constructor.name : typeof obj; + throw new Error(`Tag not resolved for ${name} value`); + } + return tagObj; + } + function stringifyProps(node, tagObj, { + anchors, + doc + }) { + const props = []; + const anchor = doc.anchors.getName(node); + if (anchor) { + anchors[anchor] = node; + props.push(`&${anchor}`); + } + if (node.tag) { + props.push(stringifyTag(doc, node.tag)); + } else if (!tagObj.default) { + props.push(stringifyTag(doc, tagObj.tag)); + } + return props.join(" "); + } + function stringify(item, ctx, onComment, onChompKeep) { + const { + anchors, + schema + } = ctx.doc; + let tagObj; + if (!(item instanceof resolveSeq.Node)) { + const createCtx = { + aliasNodes: [], + onTagObj: (o) => tagObj = o, + prevObjects: /* @__PURE__ */ new Map() + }; + item = schema.createNode(item, true, null, createCtx); + for (const alias of createCtx.aliasNodes) { + alias.source = alias.source.node; + let name = anchors.getName(alias.source); + if (!name) { + name = anchors.newName(); + anchors.map[name] = alias.source; + } + } + } + if (item instanceof resolveSeq.Pair) + return item.toString(ctx, onComment, onChompKeep); + if (!tagObj) + tagObj = getTagObject(schema.tags, item); + const props = stringifyProps(item, tagObj, ctx); + if (props.length > 0) + ctx.indentAtStart = (ctx.indentAtStart || 0) + props.length + 1; + const str = typeof tagObj.stringify === "function" ? tagObj.stringify(item, ctx, onComment, onChompKeep) : item instanceof resolveSeq.Scalar ? resolveSeq.stringifyString(item, ctx, onComment, onChompKeep) : item.toString(ctx, onComment, onChompKeep); + if (!props) + return str; + return item instanceof resolveSeq.Scalar || str[0] === "{" || str[0] === "[" ? `${props} ${str}` : `${props} +${ctx.indent}${str}`; + } + var Anchors = class { + static validAnchorNode(node) { + return node instanceof resolveSeq.Scalar || node instanceof resolveSeq.YAMLSeq || node instanceof resolveSeq.YAMLMap; + } + constructor(prefix) { + PlainValue._defineProperty(this, "map", /* @__PURE__ */ Object.create(null)); + this.prefix = prefix; + } + createAlias(node, name) { + this.setAnchor(node, name); + return new resolveSeq.Alias(node); + } + createMergePair(...sources) { + const merge = new resolveSeq.Merge(); + merge.value.items = sources.map((s) => { + if (s instanceof resolveSeq.Alias) { + if (s.source instanceof resolveSeq.YAMLMap) + return s; + } else if (s instanceof resolveSeq.YAMLMap) { + return this.createAlias(s); + } + throw new Error("Merge sources must be Map nodes or their Aliases"); + }); + return merge; + } + getName(node) { + const { + map + } = this; + return Object.keys(map).find((a) => map[a] === node); + } + getNames() { + return Object.keys(this.map); + } + getNode(name) { + return this.map[name]; + } + newName(prefix) { + if (!prefix) + prefix = this.prefix; + const names = Object.keys(this.map); + for (let i = 1; true; ++i) { + const name = `${prefix}${i}`; + if (!names.includes(name)) + return name; + } + } + resolveNodes() { + const { + map, + _cstAliases + } = this; + Object.keys(map).forEach((a) => { + map[a] = map[a].resolved; + }); + _cstAliases.forEach((a) => { + a.source = a.source.resolved; + }); + delete this._cstAliases; + } + setAnchor(node, name) { + if (node != null && !Anchors.validAnchorNode(node)) { + throw new Error("Anchors may only be set for Scalar, Seq and Map nodes"); + } + if (name && /[\x00-\x19\s,[\]{}]/.test(name)) { + throw new Error("Anchor names must not contain whitespace or control characters"); + } + const { + map + } = this; + const prev = node && Object.keys(map).find((a) => map[a] === node); + if (prev) { + if (!name) { + return prev; + } else if (prev !== name) { + delete map[prev]; + map[name] = node; + } + } else { + if (!name) { + if (!node) + return null; + name = this.newName(); + } + map[name] = node; + } + return name; + } + }; + var visit = (node, tags) => { + if (node && typeof node === "object") { + const { + tag + } = node; + if (node instanceof resolveSeq.Collection) { + if (tag) + tags[tag] = true; + node.items.forEach((n) => visit(n, tags)); + } else if (node instanceof resolveSeq.Pair) { + visit(node.key, tags); + visit(node.value, tags); + } else if (node instanceof resolveSeq.Scalar) { + if (tag) + tags[tag] = true; + } + } + return tags; + }; + var listTagNames = (node) => Object.keys(visit(node, {})); + function parseContents(doc, contents) { + const comments = { + before: [], + after: [] + }; + let body = void 0; + let spaceBefore = false; + for (const node of contents) { + if (node.valueRange) { + if (body !== void 0) { + const msg = "Document contains trailing content not separated by a ... or --- line"; + doc.errors.push(new PlainValue.YAMLSyntaxError(node, msg)); + break; + } + const res = resolveSeq.resolveNode(doc, node); + if (spaceBefore) { + res.spaceBefore = true; + spaceBefore = false; + } + body = res; + } else if (node.comment !== null) { + const cc = body === void 0 ? comments.before : comments.after; + cc.push(node.comment); + } else if (node.type === PlainValue.Type.BLANK_LINE) { + spaceBefore = true; + if (body === void 0 && comments.before.length > 0 && !doc.commentBefore) { + doc.commentBefore = comments.before.join("\n"); + comments.before = []; + } + } + } + doc.contents = body || null; + if (!body) { + doc.comment = comments.before.concat(comments.after).join("\n") || null; + } else { + const cb = comments.before.join("\n"); + if (cb) { + const cbNode = body instanceof resolveSeq.Collection && body.items[0] ? body.items[0] : body; + cbNode.commentBefore = cbNode.commentBefore ? `${cb} +${cbNode.commentBefore}` : cb; + } + doc.comment = comments.after.join("\n") || null; + } + } + function resolveTagDirective({ + tagPrefixes + }, directive) { + const [handle, prefix] = directive.parameters; + if (!handle || !prefix) { + const msg = "Insufficient parameters given for %TAG directive"; + throw new PlainValue.YAMLSemanticError(directive, msg); + } + if (tagPrefixes.some((p) => p.handle === handle)) { + const msg = "The %TAG directive must only be given at most once per handle in the same document."; + throw new PlainValue.YAMLSemanticError(directive, msg); + } + return { + handle, + prefix + }; + } + function resolveYamlDirective(doc, directive) { + let [version] = directive.parameters; + if (directive.name === "YAML:1.0") + version = "1.0"; + if (!version) { + const msg = "Insufficient parameters given for %YAML directive"; + throw new PlainValue.YAMLSemanticError(directive, msg); + } + if (!documentOptions[version]) { + const v0 = doc.version || doc.options.version; + const msg = `Document will be parsed as YAML ${v0} rather than YAML ${version}`; + doc.warnings.push(new PlainValue.YAMLWarning(directive, msg)); + } + return version; + } + function parseDirectives(doc, directives, prevDoc) { + const directiveComments = []; + let hasDirectives = false; + for (const directive of directives) { + const { + comment, + name + } = directive; + switch (name) { + case "TAG": + try { + doc.tagPrefixes.push(resolveTagDirective(doc, directive)); + } catch (error) { + doc.errors.push(error); + } + hasDirectives = true; + break; + case "YAML": + case "YAML:1.0": + if (doc.version) { + const msg = "The %YAML directive must only be given at most once per document."; + doc.errors.push(new PlainValue.YAMLSemanticError(directive, msg)); + } + try { + doc.version = resolveYamlDirective(doc, directive); + } catch (error) { + doc.errors.push(error); + } + hasDirectives = true; + break; + default: + if (name) { + const msg = `YAML only supports %TAG and %YAML directives, and not %${name}`; + doc.warnings.push(new PlainValue.YAMLWarning(directive, msg)); + } + } + if (comment) + directiveComments.push(comment); + } + if (prevDoc && !hasDirectives && "1.1" === (doc.version || prevDoc.version || doc.options.version)) { + const copyTagPrefix = ({ + handle, + prefix + }) => ({ + handle, + prefix + }); + doc.tagPrefixes = prevDoc.tagPrefixes.map(copyTagPrefix); + doc.version = prevDoc.version; + } + doc.commentBefore = directiveComments.join("\n") || null; + } + function assertCollection(contents) { + if (contents instanceof resolveSeq.Collection) + return true; + throw new Error("Expected a YAML collection as document contents"); + } + var Document = class { + constructor(options) { + this.anchors = new Anchors(options.anchorPrefix); + this.commentBefore = null; + this.comment = null; + this.contents = null; + this.directivesEndMarker = null; + this.errors = []; + this.options = options; + this.schema = null; + this.tagPrefixes = []; + this.version = null; + this.warnings = []; + } + add(value) { + assertCollection(this.contents); + return this.contents.add(value); + } + addIn(path, value) { + assertCollection(this.contents); + this.contents.addIn(path, value); + } + delete(key) { + assertCollection(this.contents); + return this.contents.delete(key); + } + deleteIn(path) { + if (resolveSeq.isEmptyPath(path)) { + if (this.contents == null) + return false; + this.contents = null; + return true; + } + assertCollection(this.contents); + return this.contents.deleteIn(path); + } + getDefaults() { + return Document.defaults[this.version] || Document.defaults[this.options.version] || {}; + } + get(key, keepScalar) { + return this.contents instanceof resolveSeq.Collection ? this.contents.get(key, keepScalar) : void 0; + } + getIn(path, keepScalar) { + if (resolveSeq.isEmptyPath(path)) + return !keepScalar && this.contents instanceof resolveSeq.Scalar ? this.contents.value : this.contents; + return this.contents instanceof resolveSeq.Collection ? this.contents.getIn(path, keepScalar) : void 0; + } + has(key) { + return this.contents instanceof resolveSeq.Collection ? this.contents.has(key) : false; + } + hasIn(path) { + if (resolveSeq.isEmptyPath(path)) + return this.contents !== void 0; + return this.contents instanceof resolveSeq.Collection ? this.contents.hasIn(path) : false; + } + set(key, value) { + assertCollection(this.contents); + this.contents.set(key, value); + } + setIn(path, value) { + if (resolveSeq.isEmptyPath(path)) + this.contents = value; + else { + assertCollection(this.contents); + this.contents.setIn(path, value); + } + } + setSchema(id, customTags) { + if (!id && !customTags && this.schema) + return; + if (typeof id === "number") + id = id.toFixed(1); + if (id === "1.0" || id === "1.1" || id === "1.2") { + if (this.version) + this.version = id; + else + this.options.version = id; + delete this.options.schema; + } else if (id && typeof id === "string") { + this.options.schema = id; + } + if (Array.isArray(customTags)) + this.options.customTags = customTags; + const opt = Object.assign({}, this.getDefaults(), this.options); + this.schema = new Schema.Schema(opt); + } + parse(node, prevDoc) { + if (this.options.keepCstNodes) + this.cstNode = node; + if (this.options.keepNodeTypes) + this.type = "DOCUMENT"; + const { + directives = [], + contents = [], + directivesEndMarker, + error, + valueRange + } = node; + if (error) { + if (!error.source) + error.source = this; + this.errors.push(error); + } + parseDirectives(this, directives, prevDoc); + if (directivesEndMarker) + this.directivesEndMarker = true; + this.range = valueRange ? [valueRange.start, valueRange.end] : null; + this.setSchema(); + this.anchors._cstAliases = []; + parseContents(this, contents); + this.anchors.resolveNodes(); + if (this.options.prettyErrors) { + for (const error2 of this.errors) + if (error2 instanceof PlainValue.YAMLError) + error2.makePretty(); + for (const warn of this.warnings) + if (warn instanceof PlainValue.YAMLError) + warn.makePretty(); + } + return this; + } + listNonDefaultTags() { + return listTagNames(this.contents).filter((t) => t.indexOf(Schema.Schema.defaultPrefix) !== 0); + } + setTagPrefix(handle, prefix) { + if (handle[0] !== "!" || handle[handle.length - 1] !== "!") + throw new Error("Handle must start and end with !"); + if (prefix) { + const prev = this.tagPrefixes.find((p) => p.handle === handle); + if (prev) + prev.prefix = prefix; + else + this.tagPrefixes.push({ + handle, + prefix + }); + } else { + this.tagPrefixes = this.tagPrefixes.filter((p) => p.handle !== handle); + } + } + toJSON(arg, onAnchor) { + const { + keepBlobsInJSON, + mapAsMap, + maxAliasCount + } = this.options; + const keep = keepBlobsInJSON && (typeof arg !== "string" || !(this.contents instanceof resolveSeq.Scalar)); + const ctx = { + doc: this, + indentStep: " ", + keep, + mapAsMap: keep && !!mapAsMap, + maxAliasCount, + stringify + }; + const anchorNames = Object.keys(this.anchors.map); + if (anchorNames.length > 0) + ctx.anchors = new Map(anchorNames.map((name) => [this.anchors.map[name], { + alias: [], + aliasCount: 0, + count: 1 + }])); + const res = resolveSeq.toJSON(this.contents, arg, ctx); + if (typeof onAnchor === "function" && ctx.anchors) + for (const { + count, + res: res2 + } of ctx.anchors.values()) + onAnchor(res2, count); + return res; + } + toString() { + if (this.errors.length > 0) + throw new Error("Document with errors cannot be stringified"); + const indentSize = this.options.indent; + if (!Number.isInteger(indentSize) || indentSize <= 0) { + const s = JSON.stringify(indentSize); + throw new Error(`"indent" option must be a positive integer, not ${s}`); + } + this.setSchema(); + const lines = []; + let hasDirectives = false; + if (this.version) { + let vd = "%YAML 1.2"; + if (this.schema.name === "yaml-1.1") { + if (this.version === "1.0") + vd = "%YAML:1.0"; + else if (this.version === "1.1") + vd = "%YAML 1.1"; + } + lines.push(vd); + hasDirectives = true; + } + const tagNames = this.listNonDefaultTags(); + this.tagPrefixes.forEach(({ + handle, + prefix + }) => { + if (tagNames.some((t) => t.indexOf(prefix) === 0)) { + lines.push(`%TAG ${handle} ${prefix}`); + hasDirectives = true; + } + }); + if (hasDirectives || this.directivesEndMarker) + lines.push("---"); + if (this.commentBefore) { + if (hasDirectives || !this.directivesEndMarker) + lines.unshift(""); + lines.unshift(this.commentBefore.replace(/^/gm, "#")); + } + const ctx = { + anchors: /* @__PURE__ */ Object.create(null), + doc: this, + indent: "", + indentStep: " ".repeat(indentSize), + stringify + }; + let chompKeep = false; + let contentComment = null; + if (this.contents) { + if (this.contents instanceof resolveSeq.Node) { + if (this.contents.spaceBefore && (hasDirectives || this.directivesEndMarker)) + lines.push(""); + if (this.contents.commentBefore) + lines.push(this.contents.commentBefore.replace(/^/gm, "#")); + ctx.forceBlockIndent = !!this.comment; + contentComment = this.contents.comment; + } + const onChompKeep = contentComment ? null : () => chompKeep = true; + const body = stringify(this.contents, ctx, () => contentComment = null, onChompKeep); + lines.push(resolveSeq.addComment(body, "", contentComment)); + } else if (this.contents !== void 0) { + lines.push(stringify(this.contents, ctx)); + } + if (this.comment) { + if ((!chompKeep || contentComment) && lines[lines.length - 1] !== "") + lines.push(""); + lines.push(this.comment.replace(/^/gm, "#")); + } + return lines.join("\n") + "\n"; + } + }; + PlainValue._defineProperty(Document, "defaults", documentOptions); + exports2.Document = Document; + exports2.defaultOptions = defaultOptions; + exports2.scalarOptions = scalarOptions; + } +}); + +// node_modules/yaml/dist/index.js +var require_dist = __commonJS({ + "node_modules/yaml/dist/index.js"(exports2) { + "use strict"; + var parseCst = require_parse_cst(); + var Document$1 = require_Document_9b4560a1(); + var Schema = require_Schema_88e323a7(); + var PlainValue = require_PlainValue_ec8e588e(); + var warnings = require_warnings_1000a372(); + require_resolveSeq_d03cb037(); + function createNode(value, wrapScalars = true, tag) { + if (tag === void 0 && typeof wrapScalars === "string") { + tag = wrapScalars; + wrapScalars = true; + } + const options = Object.assign({}, Document$1.Document.defaults[Document$1.defaultOptions.version], Document$1.defaultOptions); + const schema = new Schema.Schema(options); + return schema.createNode(value, wrapScalars, tag); + } + var Document = class extends Document$1.Document { + constructor(options) { + super(Object.assign({}, Document$1.defaultOptions, options)); + } + }; + function parseAllDocuments(src, options) { + const stream = []; + let prev; + for (const cstDoc of parseCst.parse(src)) { + const doc = new Document(options); + doc.parse(cstDoc, prev); + stream.push(doc); + prev = doc; + } + return stream; + } + function parseDocument(src, options) { + const cst = parseCst.parse(src); + const doc = new Document(options).parse(cst[0]); + if (cst.length > 1) { + const errMsg = "Source contains multiple documents; please use YAML.parseAllDocuments()"; + doc.errors.unshift(new PlainValue.YAMLSemanticError(cst[1], errMsg)); + } + return doc; + } + function parse(src, options) { + const doc = parseDocument(src, options); + doc.warnings.forEach((warning) => warnings.warn(warning)); + if (doc.errors.length > 0) + throw doc.errors[0]; + return doc.toJSON(); + } + function stringify(value, options) { + const doc = new Document(options); + doc.contents = value; + return String(doc); + } + var YAML = { + createNode, + defaultOptions: Document$1.defaultOptions, + Document, + parse, + parseAllDocuments, + parseCST: parseCst.parse, + parseDocument, + scalarOptions: Document$1.scalarOptions, + stringify + }; + exports2.YAML = YAML; + } +}); + +// node_modules/yaml/index.js +var require_yaml = __commonJS({ + "node_modules/yaml/index.js"(exports2, module2) { + module2.exports = require_dist().YAML; + } +}); + +// node_modules/lilconfig/dist/index.js +var require_dist2 = __commonJS({ + "node_modules/lilconfig/dist/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.lilconfigSync = exports2.lilconfig = exports2.defaultLoaders = void 0; + var path = require("path"); + var fs = require("fs"); + var os = require("os"); + var fsReadFileAsync = fs.promises.readFile; + function getDefaultSearchPlaces(name) { + return [ + "package.json", + `.${name}rc.json`, + `.${name}rc.js`, + `${name}.config.js`, + `.${name}rc.cjs`, + `${name}.config.cjs` + ]; + } + function getSearchPaths(startDir, stopDir) { + return startDir.split(path.sep).reduceRight((acc, _, ind, arr) => { + const currentPath = arr.slice(0, ind + 1).join(path.sep); + if (!acc.passedStopDir) + acc.searchPlaces.push(currentPath || path.sep); + if (currentPath === stopDir) + acc.passedStopDir = true; + return acc; + }, { searchPlaces: [], passedStopDir: false }).searchPlaces; + } + exports2.defaultLoaders = Object.freeze({ + ".js": require, + ".json": require, + ".cjs": require, + noExt(_, content) { + return JSON.parse(content); + } + }); + function getExtDesc(ext) { + return ext === "noExt" ? "files without extensions" : `extension "${ext}"`; + } + function getOptions(name, options = {}) { + const conf = { + stopDir: os.homedir(), + searchPlaces: getDefaultSearchPlaces(name), + ignoreEmptySearchPlaces: true, + transform: (x) => x, + packageProp: [name], + ...options, + loaders: { ...exports2.defaultLoaders, ...options.loaders } + }; + conf.searchPlaces.forEach((place) => { + const key = path.extname(place) || "noExt"; + const loader = conf.loaders[key]; + if (!loader) { + throw new Error(`No loader specified for ${getExtDesc(key)}, so searchPlaces item "${place}" is invalid`); + } + if (typeof loader !== "function") { + throw new Error(`loader for ${getExtDesc(key)} is not a function (type provided: "${typeof loader}"), so searchPlaces item "${place}" is invalid`); + } + }); + return conf; + } + function getPackageProp(props, obj) { + if (typeof props === "string" && props in obj) + return obj[props]; + return (Array.isArray(props) ? props : props.split(".")).reduce((acc, prop) => acc === void 0 ? acc : acc[prop], obj) || null; + } + function getSearchItems(searchPlaces, searchPaths) { + return searchPaths.reduce((acc, searchPath) => { + searchPlaces.forEach((fileName) => acc.push({ + fileName, + filepath: path.join(searchPath, fileName), + loaderKey: path.extname(fileName) || "noExt" + })); + return acc; + }, []); + } + function validateFilePath(filepath) { + if (!filepath) + throw new Error("load must pass a non-empty string"); + } + function validateLoader(loader, ext) { + if (!loader) + throw new Error(`No loader specified for extension "${ext}"`); + if (typeof loader !== "function") + throw new Error("loader is not a function"); + } + function lilconfig(name, options) { + const { ignoreEmptySearchPlaces, loaders, packageProp, searchPlaces, stopDir, transform } = getOptions(name, options); + return { + async search(searchFrom = process.cwd()) { + const searchPaths = getSearchPaths(searchFrom, stopDir); + const result = { + config: null, + filepath: "" + }; + const searchItems = getSearchItems(searchPlaces, searchPaths); + for (const { fileName, filepath, loaderKey } of searchItems) { + try { + await fs.promises.access(filepath); + } catch (_a) { + continue; + } + const content = String(await fsReadFileAsync(filepath)); + const loader = loaders[loaderKey]; + if (fileName === "package.json") { + const pkg = await loader(filepath, content); + const maybeConfig = getPackageProp(packageProp, pkg); + if (maybeConfig != null) { + result.config = maybeConfig; + result.filepath = filepath; + break; + } + continue; + } + const isEmpty = content.trim() === ""; + if (isEmpty && ignoreEmptySearchPlaces) + continue; + if (isEmpty) { + result.isEmpty = true; + result.config = void 0; + } else { + validateLoader(loader, loaderKey); + result.config = await loader(filepath, content); + } + result.filepath = filepath; + break; + } + if (result.filepath === "" && result.config === null) + return transform(null); + return transform(result); + }, + async load(filepath) { + validateFilePath(filepath); + const absPath = path.resolve(process.cwd(), filepath); + const { base, ext } = path.parse(absPath); + const loaderKey = ext || "noExt"; + const loader = loaders[loaderKey]; + validateLoader(loader, loaderKey); + const content = String(await fsReadFileAsync(absPath)); + if (base === "package.json") { + const pkg = await loader(absPath, content); + return transform({ + config: getPackageProp(packageProp, pkg), + filepath: absPath + }); + } + const result = { + config: null, + filepath: absPath + }; + const isEmpty = content.trim() === ""; + if (isEmpty && ignoreEmptySearchPlaces) + return transform({ + config: void 0, + filepath: absPath, + isEmpty: true + }); + result.config = isEmpty ? void 0 : await loader(absPath, content); + return transform(isEmpty ? { ...result, isEmpty, config: void 0 } : result); + } + }; + } + exports2.lilconfig = lilconfig; + function lilconfigSync(name, options) { + const { ignoreEmptySearchPlaces, loaders, packageProp, searchPlaces, stopDir, transform } = getOptions(name, options); + return { + search(searchFrom = process.cwd()) { + const searchPaths = getSearchPaths(searchFrom, stopDir); + const result = { + config: null, + filepath: "" + }; + const searchItems = getSearchItems(searchPlaces, searchPaths); + for (const { fileName, filepath, loaderKey } of searchItems) { + try { + fs.accessSync(filepath); + } catch (_a) { + continue; + } + const loader = loaders[loaderKey]; + const content = String(fs.readFileSync(filepath)); + if (fileName === "package.json") { + const pkg = loader(filepath, content); + const maybeConfig = getPackageProp(packageProp, pkg); + if (maybeConfig != null) { + result.config = maybeConfig; + result.filepath = filepath; + break; + } + continue; + } + const isEmpty = content.trim() === ""; + if (isEmpty && ignoreEmptySearchPlaces) + continue; + if (isEmpty) { + result.isEmpty = true; + result.config = void 0; + } else { + validateLoader(loader, loaderKey); + result.config = loader(filepath, content); + } + result.filepath = filepath; + break; + } + if (result.filepath === "" && result.config === null) + return transform(null); + return transform(result); + }, + load(filepath) { + validateFilePath(filepath); + const absPath = path.resolve(process.cwd(), filepath); + const { base, ext } = path.parse(absPath); + const loaderKey = ext || "noExt"; + const loader = loaders[loaderKey]; + validateLoader(loader, loaderKey); + const content = String(fs.readFileSync(absPath)); + if (base === "package.json") { + const pkg = loader(absPath, content); + return transform({ + config: getPackageProp(packageProp, pkg), + filepath: absPath + }); + } + const result = { + config: null, + filepath: absPath + }; + const isEmpty = content.trim() === ""; + if (isEmpty && ignoreEmptySearchPlaces) + return transform({ + filepath: absPath, + config: void 0, + isEmpty: true + }); + result.config = isEmpty ? void 0 : loader(absPath, content); + return transform(isEmpty ? { ...result, isEmpty, config: void 0 } : result); + } + }; + } + exports2.lilconfigSync = lilconfigSync; + } +}); + +// node_modules/css-declaration-sorter/dist/stable-sort.cjs +var require_stable_sort = __commonJS({ + "node_modules/css-declaration-sorter/dist/stable-sort.cjs"(exports2, module2) { + "use strict"; + module2.exports = function(items, comparator) { + comparator = comparator ? comparator : (a, b) => { + if (a < b) + return -1; + if (a > b) + return 1; + return 0; + }; + let stabilizedItems = items.map((el, index) => [el, index]); + const stableComparator = (a, b) => { + let order = comparator(a[0], b[0]); + if (order != 0) + return order; + return a[1] - b[1]; + }; + stabilizedItems.sort(stableComparator); + for (let i = 0; i < items.length; i++) { + items[i] = stabilizedItems[i][0]; + } + return items; + }; + } +}); + +// node_modules/css-declaration-sorter/dist/main.cjs +var require_main = __commonJS({ + "node_modules/css-declaration-sorter/dist/main.cjs"(exports2, module2) { + "use strict"; + var stableSort = require_stable_sort(); + Object.defineProperty(exports2, "__esModule", { value: true }); + var shorthandData = { + "animation": [ + "animation-name", + "animation-duration", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "animation-fill-mode", + "animation-play-state" + ], + "background": [ + "background-image", + "background-size", + "background-position", + "background-repeat", + "background-origin", + "background-clip", + "background-attachment", + "background-color" + ], + "columns": [ + "column-width", + "column-count" + ], + "column-rule": [ + "column-rule-width", + "column-rule-style", + "column-rule-color" + ], + "flex": [ + "flex-grow", + "flex-shrink", + "flex-basis" + ], + "flex-flow": [ + "flex-direction", + "flex-wrap" + ], + "font": [ + "font-style", + "font-variant", + "font-weight", + "font-stretch", + "font-size", + "font-family", + "line-height" + ], + "grid": [ + "grid-template-rows", + "grid-template-columns", + "grid-template-areas", + "grid-auto-rows", + "grid-auto-columns", + "grid-auto-flow", + "column-gap", + "row-gap" + ], + "grid-area": [ + "grid-row-start", + "grid-column-start", + "grid-row-end", + "grid-column-end" + ], + "grid-column": [ + "grid-column-start", + "grid-column-end" + ], + "grid-row": [ + "grid-row-start", + "grid-row-end" + ], + "grid-template": [ + "grid-template-columns", + "grid-template-rows", + "grid-template-areas" + ], + "list-style": [ + "list-style-type", + "list-style-position", + "list-style-image" + ], + "padding": [ + "padding-block", + "padding-block-start", + "padding-block-end", + "padding-inline", + "padding-inline-start", + "padding-inline-end", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left" + ], + "padding-block": [ + "padding-block-start", + "padding-block-end", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left" + ], + "padding-block-start": [ + "padding-top", + "padding-right", + "padding-left" + ], + "padding-block-end": [ + "padding-right", + "padding-bottom", + "padding-left" + ], + "padding-inline": [ + "padding-inline-start", + "padding-inline-end", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left" + ], + "padding-inline-start": [ + "padding-top", + "padding-right", + "padding-left" + ], + "padding-inline-end": [ + "padding-right", + "padding-bottom", + "padding-left" + ], + "margin": [ + "margin-block", + "margin-block-start", + "margin-block-end", + "margin-inline", + "margin-inline-start", + "margin-inline-end", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left" + ], + "margin-block": [ + "margin-block-start", + "margin-block-end", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left" + ], + "margin-inline": [ + "margin-inline-start", + "margin-inline-end", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left" + ], + "margin-inline-start": [ + "margin-top", + "margin-right", + "margin-bottom", + "margin-left" + ], + "margin-inline-end": [ + "margin-top", + "margin-right", + "margin-bottom", + "margin-left" + ], + "border": [ + "border-top", + "border-right", + "border-bottom", + "border-left", + "border-width", + "border-style", + "border-color", + "border-top-width", + "border-right-width", + "border-bottom-width", + "border-left-width", + "border-inline-start-width", + "border-inline-end-width", + "border-block-start-width", + "border-block-end-width", + "border-top-style", + "border-right-style", + "border-bottom-style", + "border-left-style", + "border-inline-start-style", + "border-inline-end-style", + "border-block-start-style", + "border-block-end-style", + "border-top-color", + "border-right-color", + "border-bottom-color", + "border-left-color", + "border-inline-start-color", + "border-inline-end-color", + "border-block-start-color", + "border-block-end-color", + "border-block", + "border-block-start", + "border-block-end", + "border-block-width", + "border-block-style", + "border-block-color", + "border-inline", + "border-inline-start", + "border-inline-end", + "border-inline-width", + "border-inline-style", + "border-inline-color" + ], + "border-top": [ + "border-width", + "border-style", + "border-color", + "border-top-width", + "border-top-style", + "border-top-color" + ], + "border-right": [ + "border-width", + "border-style", + "border-color", + "border-right-width", + "border-right-style", + "border-right-color" + ], + "border-bottom": [ + "border-width", + "border-style", + "border-color", + "border-bottom-width", + "border-bottom-style", + "border-bottom-color" + ], + "border-left": [ + "border-width", + "border-style", + "border-color", + "border-left-width", + "border-left-style", + "border-left-color" + ], + "border-color": [ + "border-top-color", + "border-bottom-color", + "border-left-color", + "border-right-color", + "border-inline-start-color", + "border-inline-end-color", + "border-block-start-color", + "border-block-end-color" + ], + "border-width": [ + "border-top-width", + "border-bottom-width", + "border-left-width", + "border-right-width", + "border-inline-start-width", + "border-inline-end-width", + "border-block-start-width", + "border-block-end-width" + ], + "border-style": [ + "border-top-style", + "border-bottom-style", + "border-left-style", + "border-right-style", + "border-inline-start-style", + "border-inline-end-style", + "border-block-start-style", + "border-block-end-style" + ], + "border-radius": [ + "border-top-right-radius", + "border-top-left-radius", + "border-bottom-right-radius", + "border-bottom-left-radius" + ], + "border-block": [ + "border-block-start", + "border-block-end", + "border-block-width", + "border-width", + "border-block-style", + "border-style", + "border-block-color", + "border-color" + ], + "border-block-start": [ + "border-block-start-width", + "border-width", + "border-block-start-style", + "border-style", + "border-block-start-color", + "border-color" + ], + "border-block-end": [ + "border-block-end-width", + "border-width", + "border-block-end-style", + "border-style", + "border-block-end-color", + "border-color" + ], + "border-inline": [ + "border-inline-start", + "border-inline-end", + "border-inline-width", + "border-width", + "border-inline-style", + "border-style", + "border-inline-color", + "border-color" + ], + "border-inline-start": [ + "border-inline-start-width", + "border-width", + "border-inline-start-style", + "border-style", + "border-inline-start-color", + "border-color" + ], + "border-inline-end": [ + "border-inline-end-width", + "border-width", + "border-inline-end-style", + "border-style", + "border-inline-end-color", + "border-color" + ], + "border-image": [ + "border-image-source", + "border-image-slice", + "border-image-width", + "border-image-outset", + "border-image-repeat" + ], + "mask": [ + "mask-image", + "mask-mode", + "mask-position", + "mask-size", + "mask-repeat", + "mask-origin", + "mask-clip", + "mask-composite" + ], + "inline-size": [ + "width", + "height" + ], + "block-size": [ + "width", + "height" + ], + "max-inline-size": [ + "max-width", + "max-height" + ], + "max-block-size": [ + "max-width", + "max-height" + ], + "inset": [ + "inset-block", + "inset-block-start", + "inset-block-end", + "inset-inline", + "inset-inline-start", + "inset-inline-end", + "top", + "right", + "bottom", + "left" + ], + "inset-block": [ + "inset-block-start", + "inset-block-end", + "top", + "right", + "bottom", + "left" + ], + "inset-inline": [ + "inset-inline-start", + "inset-inline-end", + "top", + "right", + "bottom", + "left" + ], + "outline": [ + "outline-color", + "outline-style", + "outline-width" + ], + "overflow": [ + "overflow-x", + "overflow-y" + ], + "place-content": [ + "align-content", + "justify-content" + ], + "place-items": [ + "align-items", + "justify-items" + ], + "place-self": [ + "align-self", + "justify-self" + ], + "text-decoration": [ + "text-decoration-color", + "text-decoration-style", + "text-decoration-line" + ], + "transition": [ + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function" + ], + "text-emphasis": [ + "text-emphasis-style", + "text-emphasis-color" + ] + }; + function __variableDynamicImportRuntime0__(path) { + switch (path) { + case "../orders/alphabetical.mjs": + return Promise.resolve().then(function() { + return alphabetical; + }); + case "../orders/concentric-css.mjs": + return Promise.resolve().then(function() { + return concentricCss; + }); + case "../orders/smacss.mjs": + return Promise.resolve().then(function() { + return smacss; + }); + default: + return new Promise(function(resolve, reject) { + (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)( + reject.bind(null, new Error("Unknown variable dynamic import: " + path)) + ); + }); + } + } + var builtInOrders = [ + "alphabetical", + "concentric-css", + "smacss" + ]; + var cssDeclarationSorter = ({ order = "alphabetical", keepOverrides = false } = {}) => ({ + postcssPlugin: "css-declaration-sorter", + OnceExit(css) { + let withKeepOverrides = (comparator) => comparator; + if (keepOverrides) { + withKeepOverrides = withOverridesComparator(shorthandData); + } + if (typeof order === "function") { + return processCss({ css, comparator: withKeepOverrides(order) }); + } + if (!builtInOrders.includes(order)) + return Promise.reject( + Error([ + `Invalid built-in order '${order}' provided.`, + `Available built-in orders are: ${builtInOrders}` + ].join("\n")) + ); + return __variableDynamicImportRuntime0__(`../orders/${order}.mjs`).then(({ properties: properties2 }) => processCss({ + css, + comparator: withKeepOverrides(orderComparator(properties2)) + })); + } + }); + cssDeclarationSorter.postcss = true; + function processCss({ css, comparator }) { + const comments = []; + const rulesCache = []; + css.walk((node) => { + const nodes = node.nodes; + const type = node.type; + if (type === "comment") { + const isNewlineNode = node.raws.before && node.raws.before.includes("\n"); + const lastNewlineNode = isNewlineNode && !node.next(); + const onlyNode = !node.prev() && !node.next() || !node.parent; + if (lastNewlineNode || onlyNode || node.parent.type === "root") { + return; + } + if (isNewlineNode) { + const pairedNode = node.next() || node.prev(); + if (pairedNode) { + comments.unshift({ + "comment": node, + "pairedNode": pairedNode, + "insertPosition": node.next() ? "Before" : "After" + }); + node.remove(); + } + } else { + const pairedNode = node.prev() || node.next(); + if (pairedNode) { + comments.push({ + "comment": node, + "pairedNode": pairedNode, + "insertPosition": "After" + }); + node.remove(); + } + } + return; + } + const isRule = type === "rule" || type === "atrule"; + if (isRule && nodes && nodes.length > 1) { + rulesCache.push(nodes); + } + }); + rulesCache.forEach((nodes) => { + sortCssDeclarations({ nodes, comparator }); + }); + comments.forEach((node) => { + const pairedNode = node.pairedNode; + node.comment.remove(); + pairedNode.parent && pairedNode.parent["insert" + node.insertPosition](pairedNode, node.comment); + }); + } + function sortCssDeclarations({ nodes, comparator }) { + stableSort(nodes, (a, b) => { + if (a.type === "decl" && b.type === "decl") { + return comparator(a.prop, b.prop); + } else { + return compareDifferentType(a, b); + } + }); + } + function withOverridesComparator(shorthandData2) { + return function(comparator) { + return function(a, b) { + a = removeVendorPrefix(a); + b = removeVendorPrefix(b); + if (shorthandData2[a] && shorthandData2[a].includes(b)) + return 0; + if (shorthandData2[b] && shorthandData2[b].includes(a)) + return 0; + return comparator(a, b); + }; + }; + } + function orderComparator(order) { + return function(a, b) { + return order.indexOf(a) - order.indexOf(b); + }; + } + function compareDifferentType(a, b) { + if (b.type === "atrule") { + return 0; + } + return a.type === "decl" ? -1 : b.type === "decl" ? 1 : 0; + } + function removeVendorPrefix(property) { + return property.replace(/^-\w+-/, ""); + } + var properties$2 = [ + "all", + "-webkit-line-clamp", + "-webkit-text-fill-color", + "-webkit-text-stroke", + "-webkit-text-stroke-color", + "-webkit-text-stroke-width", + "accent-color", + "align-content", + "align-items", + "align-self", + "animation", + "animation-delay", + "animation-direction", + "animation-duration", + "animation-fill-mode", + "animation-iteration-count", + "animation-name", + "animation-play-state", + "animation-timing-function", + "appearance", + "ascent-override", + "aspect-ratio", + "backdrop-filter", + "backface-visibility", + "background", + "background-attachment", + "background-blend-mode", + "background-clip", + "background-color", + "background-image", + "background-origin", + "background-position", + "background-position-x", + "background-position-y", + "background-repeat", + "background-size", + "block-size", + "border", + "border-block", + "border-block-color", + "border-block-end", + "border-block-end-color", + "border-block-end-style", + "border-block-end-width", + "border-block-start", + "border-block-start-color", + "border-block-start-style", + "border-block-start-width", + "border-block-style", + "border-block-width", + "border-bottom", + "border-bottom-color", + "border-bottom-left-radius", + "border-bottom-right-radius", + "border-bottom-style", + "border-bottom-width", + "border-collapse", + "border-color", + "border-end-end-radius", + "border-end-start-radius", + "border-image", + "border-image-outset", + "border-image-repeat", + "border-image-slice", + "border-image-source", + "border-image-width", + "border-inline", + "border-inline-color", + "border-inline-end", + "border-inline-end-color", + "border-inline-end-style", + "border-inline-end-width", + "border-inline-start", + "border-inline-start-color", + "border-inline-start-style", + "border-inline-start-width", + "border-inline-style", + "border-inline-width", + "border-left", + "border-left-color", + "border-left-style", + "border-left-width", + "border-radius", + "border-right", + "border-right-color", + "border-right-style", + "border-right-width", + "border-spacing", + "border-start-end-radius", + "border-start-start-radius", + "border-style", + "border-top", + "border-top-color", + "border-top-left-radius", + "border-top-right-radius", + "border-top-style", + "border-top-width", + "border-width", + "bottom", + "box-decoration-break", + "box-shadow", + "box-sizing", + "break-after", + "break-before", + "break-inside", + "caption-side", + "caret-color", + "clear", + "clip-path", + "color", + "color-scheme", + "column-count", + "column-fill", + "column-gap", + "column-rule", + "column-rule-color", + "column-rule-style", + "column-rule-width", + "column-span", + "column-width", + "columns", + "contain", + "content", + "content-visibility", + "counter-increment", + "counter-reset", + "counter-set", + "cursor", + "descent-override", + "direction", + "display", + "empty-cells", + "filter", + "flex", + "flex-basis", + "flex-direction", + "flex-flow", + "flex-grow", + "flex-shrink", + "flex-wrap", + "float", + "font", + "font-display", + "font-family", + "font-kerning", + "font-language-override", + "font-optical-sizing", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-synthesis", + "font-variant", + "font-variant-alternates", + "font-variant-caps", + "font-variant-east-asian", + "font-variant-ligatures", + "font-variant-numeric", + "font-variant-position", + "font-variation-settings", + "font-weight", + "forced-color-adjust", + "gap", + "grid", + "grid-area", + "grid-auto-columns", + "grid-auto-flow", + "grid-auto-rows", + "grid-column", + "grid-column-end", + "grid-column-start", + "grid-row", + "grid-row-end", + "grid-row-start", + "grid-template", + "grid-template-areas", + "grid-template-columns", + "grid-template-rows", + "hanging-punctuation", + "height", + "hyphenate-character", + "hyphens", + "image-orientation", + "image-rendering", + "inline-size", + "inset", + "inset-block", + "inset-block-end", + "inset-block-start", + "inset-inline", + "inset-inline-end", + "inset-inline-start", + "isolation", + "justify-content", + "justify-items", + "justify-self", + "left", + "letter-spacing", + "line-break", + "line-gap-override", + "line-height", + "list-style", + "list-style-image", + "list-style-position", + "list-style-type", + "margin", + "margin-block", + "margin-block-end", + "margin-block-start", + "margin-bottom", + "margin-inline", + "margin-inline-end", + "margin-inline-start", + "margin-left", + "margin-right", + "margin-top", + "mask", + "mask-border", + "mask-border-outset", + "mask-border-repeat", + "mask-border-slice", + "mask-border-source", + "mask-border-width", + "mask-clip", + "mask-composite", + "mask-image", + "mask-mode", + "mask-origin", + "mask-position", + "mask-repeat", + "mask-size", + "mask-type", + "max-block-size", + "max-height", + "max-inline-size", + "max-width", + "min-block-size", + "min-height", + "min-inline-size", + "min-width", + "mix-blend-mode", + "object-fit", + "object-position", + "offset", + "offset-anchor", + "offset-distance", + "offset-path", + "offset-rotate", + "opacity", + "order", + "orphans", + "outline", + "outline-color", + "outline-offset", + "outline-style", + "outline-width", + "overflow", + "overflow-anchor", + "overflow-block", + "overflow-inline", + "overflow-wrap", + "overflow-x", + "overflow-y", + "overscroll-behavior", + "overscroll-behavior-block", + "overscroll-behavior-inline", + "overscroll-behavior-x", + "overscroll-behavior-y", + "padding", + "padding-block", + "padding-block-end", + "padding-block-start", + "padding-bottom", + "padding-inline", + "padding-inline-end", + "padding-inline-start", + "padding-left", + "padding-right", + "padding-top", + "page", + "page-break-after", + "page-break-before", + "page-break-inside", + "paint-order", + "perspective", + "perspective-origin", + "place-content", + "place-items", + "place-self", + "pointer-events", + "position", + "print-color-adjust", + "quotes", + "resize", + "right", + "rotate", + "row-gap", + "ruby-position", + "scale", + "scroll-behavior", + "scroll-margin", + "scroll-margin-block", + "scroll-margin-block-end", + "scroll-margin-block-start", + "scroll-margin-bottom", + "scroll-margin-inline", + "scroll-margin-inline-end", + "scroll-margin-inline-start", + "scroll-margin-left", + "scroll-margin-right", + "scroll-margin-top", + "scroll-padding", + "scroll-padding-block", + "scroll-padding-block-end", + "scroll-padding-block-start", + "scroll-padding-bottom", + "scroll-padding-inline", + "scroll-padding-inline-end", + "scroll-padding-inline-start", + "scroll-padding-left", + "scroll-padding-right", + "scroll-padding-top", + "scroll-snap-align", + "scroll-snap-stop", + "scroll-snap-type", + "scrollbar-color", + "scrollbar-gutter", + "scrollbar-width", + "shape-image-threshold", + "shape-margin", + "shape-outside", + "size-adjust", + "src", + "tab-size", + "table-layout", + "text-align", + "text-align-last", + "text-combine-upright", + "text-decoration", + "text-decoration-color", + "text-decoration-line", + "text-decoration-skip-ink", + "text-decoration-style", + "text-decoration-thickness", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-position", + "text-emphasis-style", + "text-indent", + "text-justify", + "text-orientation", + "text-overflow", + "text-rendering", + "text-shadow", + "text-transform", + "text-underline-offset", + "text-underline-position", + "top", + "touch-action", + "transform", + "transform-box", + "transform-origin", + "transform-style", + "transition", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "translate", + "unicode-bidi", + "unicode-range", + "user-select", + "vertical-align", + "visibility", + "white-space", + "widows", + "width", + "will-change", + "word-break", + "word-spacing", + "writing-mode", + "z-index" + ]; + var alphabetical = /* @__PURE__ */ Object.freeze({ + __proto__: null, + properties: properties$2 + }); + var properties$1 = [ + "all", + "display", + "position", + "top", + "right", + "bottom", + "left", + "offset", + "offset-anchor", + "offset-distance", + "offset-path", + "offset-rotate", + "grid", + "grid-template-rows", + "grid-template-columns", + "grid-template-areas", + "grid-auto-rows", + "grid-auto-columns", + "grid-auto-flow", + "column-gap", + "row-gap", + "grid-area", + "grid-row", + "grid-row-start", + "grid-row-end", + "grid-column", + "grid-column-start", + "grid-column-end", + "grid-template", + "flex", + "flex-grow", + "flex-shrink", + "flex-basis", + "flex-direction", + "flex-flow", + "flex-wrap", + "box-decoration-break", + "place-content", + "align-content", + "justify-content", + "place-items", + "align-items", + "justify-items", + "place-self", + "align-self", + "justify-self", + "vertical-align", + "order", + "float", + "clear", + "shape-margin", + "shape-outside", + "shape-image-threshold", + "orphans", + "gap", + "columns", + "column-fill", + "column-rule", + "column-rule-width", + "column-rule-style", + "column-rule-color", + "column-width", + "column-span", + "column-count", + "break-before", + "break-after", + "break-inside", + "page", + "page-break-before", + "page-break-after", + "page-break-inside", + "transform", + "transform-box", + "transform-origin", + "transform-style", + "translate", + "rotate", + "scale", + "perspective", + "perspective-origin", + "appearance", + "visibility", + "content-visibility", + "opacity", + "z-index", + "paint-order", + "mix-blend-mode", + "backface-visibility", + "backdrop-filter", + "clip-path", + "mask", + "mask-border", + "mask-border-outset", + "mask-border-repeat", + "mask-border-slice", + "mask-border-source", + "mask-border-width", + "mask-image", + "mask-mode", + "mask-position", + "mask-size", + "mask-repeat", + "mask-origin", + "mask-clip", + "mask-composite", + "mask-type", + "filter", + "animation", + "animation-duration", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "animation-fill-mode", + "animation-play-state", + "animation-name", + "transition", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "will-change", + "counter-increment", + "counter-reset", + "counter-set", + "cursor", + "box-sizing", + "contain", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "margin-inline", + "margin-inline-start", + "margin-inline-end", + "margin-block", + "margin-block-start", + "margin-block-end", + "inset", + "inset-block", + "inset-block-end", + "inset-block-start", + "inset-inline", + "inset-inline-end", + "inset-inline-start", + "outline", + "outline-color", + "outline-style", + "outline-width", + "outline-offset", + "box-shadow", + "border", + "border-top", + "border-right", + "border-bottom", + "border-left", + "border-width", + "border-top-width", + "border-right-width", + "border-bottom-width", + "border-left-width", + "border-style", + "border-top-style", + "border-right-style", + "border-bottom-style", + "border-left-style", + "border-color", + "border-top-color", + "border-right-color", + "border-bottom-color", + "border-left-color", + "border-radius", + "border-top-right-radius", + "border-top-left-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "border-inline", + "border-inline-width", + "border-inline-style", + "border-inline-color", + "border-inline-start", + "border-inline-start-width", + "border-inline-start-style", + "border-inline-start-color", + "border-inline-end", + "border-inline-end-width", + "border-inline-end-style", + "border-inline-end-color", + "border-block", + "border-block-width", + "border-block-style", + "border-block-color", + "border-block-start", + "border-block-start-width", + "border-block-start-style", + "border-block-start-color", + "border-block-end", + "border-block-end-width", + "border-block-end-style", + "border-block-end-color", + "border-image", + "border-image-source", + "border-image-slice", + "border-image-width", + "border-image-outset", + "border-image-repeat", + "border-collapse", + "border-spacing", + "border-start-start-radius", + "border-start-end-radius", + "border-end-start-radius", + "border-end-end-radius", + "background", + "background-image", + "background-position", + "background-size", + "background-repeat", + "background-origin", + "background-clip", + "background-attachment", + "background-color", + "background-blend-mode", + "background-position-x", + "background-position-y", + "isolation", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + "padding-inline", + "padding-inline-start", + "padding-inline-end", + "padding-block", + "padding-block-start", + "padding-block-end", + "image-orientation", + "image-rendering", + "aspect-ratio", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "-webkit-line-clamp", + "-webkit-text-fill-color", + "-webkit-text-stroke", + "-webkit-text-stroke-color", + "-webkit-text-stroke-width", + "inline-size", + "min-inline-size", + "max-inline-size", + "block-size", + "min-block-size", + "max-block-size", + "table-layout", + "caption-side", + "empty-cells", + "overflow", + "overflow-anchor", + "overflow-block", + "overflow-inline", + "overflow-x", + "overflow-y", + "overscroll-behavior", + "overscroll-behavior-block", + "overscroll-behavior-inline", + "overscroll-behavior-x", + "overscroll-behavior-y", + "resize", + "object-fit", + "object-position", + "scroll-behavior", + "scroll-margin", + "scroll-margin-block", + "scroll-margin-block-end", + "scroll-margin-block-start", + "scroll-margin-bottom", + "scroll-margin-inline", + "scroll-margin-inline-end", + "scroll-margin-inline-start", + "scroll-margin-left", + "scroll-margin-right", + "scroll-margin-top", + "scroll-padding", + "scroll-padding-block", + "scroll-padding-block-end", + "scroll-padding-block-start", + "scroll-padding-bottom", + "scroll-padding-inline", + "scroll-padding-inline-end", + "scroll-padding-inline-start", + "scroll-padding-left", + "scroll-padding-right", + "scroll-padding-top", + "scroll-snap-align", + "scroll-snap-stop", + "scroll-snap-type", + "scrollbar-color", + "scrollbar-gutter", + "scrollbar-width", + "touch-action", + "pointer-events", + "content", + "quotes", + "hanging-punctuation", + "color", + "accent-color", + "print-color-adjust", + "forced-color-adjust", + "color-scheme", + "caret-color", + "font", + "font-style", + "font-variant", + "font-weight", + "font-stretch", + "font-size", + "size-adjust", + "line-height", + "src", + "font-family", + "font-display", + "font-kerning", + "font-language-override", + "font-optical-sizing", + "font-size-adjust", + "font-synthesis", + "font-variant-alternates", + "font-variant-caps", + "font-variant-east-asian", + "font-variant-ligatures", + "font-variant-numeric", + "font-variant-position", + "font-variation-settings", + "ascent-override", + "descent-override", + "line-gap-override", + "hyphens", + "hyphenate-character", + "letter-spacing", + "line-break", + "list-style", + "list-style-type", + "list-style-image", + "list-style-position", + "writing-mode", + "direction", + "unicode-bidi", + "unicode-range", + "user-select", + "ruby-position", + "text-combine-upright", + "text-align", + "text-align-last", + "text-decoration", + "text-decoration-line", + "text-decoration-style", + "text-decoration-color", + "text-decoration-thickness", + "text-decoration-skip-ink", + "text-emphasis", + "text-emphasis-style", + "text-emphasis-color", + "text-emphasis-position", + "text-indent", + "text-justify", + "text-underline-position", + "text-underline-offset", + "text-orientation", + "text-overflow", + "text-rendering", + "text-shadow", + "text-transform", + "white-space", + "word-break", + "word-spacing", + "overflow-wrap", + "tab-size", + "widows" + ]; + var concentricCss = /* @__PURE__ */ Object.freeze({ + __proto__: null, + properties: properties$1 + }); + var properties = [ + "all", + "box-sizing", + "contain", + "display", + "appearance", + "visibility", + "content-visibility", + "z-index", + "paint-order", + "position", + "top", + "right", + "bottom", + "left", + "offset", + "offset-anchor", + "offset-distance", + "offset-path", + "offset-rotate", + "grid", + "grid-template-rows", + "grid-template-columns", + "grid-template-areas", + "grid-auto-rows", + "grid-auto-columns", + "grid-auto-flow", + "column-gap", + "row-gap", + "grid-area", + "grid-row", + "grid-row-start", + "grid-row-end", + "grid-column", + "grid-column-start", + "grid-column-end", + "grid-template", + "flex", + "flex-grow", + "flex-shrink", + "flex-basis", + "flex-direction", + "flex-flow", + "flex-wrap", + "box-decoration-break", + "place-content", + "place-items", + "place-self", + "align-content", + "align-items", + "align-self", + "justify-content", + "justify-items", + "justify-self", + "order", + "aspect-ratio", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "-webkit-line-clamp", + "-webkit-text-fill-color", + "-webkit-text-stroke", + "-webkit-text-stroke-color", + "-webkit-text-stroke-width", + "inline-size", + "min-inline-size", + "max-inline-size", + "block-size", + "min-block-size", + "max-block-size", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "margin-inline", + "margin-inline-start", + "margin-inline-end", + "margin-block", + "margin-block-start", + "margin-block-end", + "inset", + "inset-block", + "inset-block-end", + "inset-block-start", + "inset-inline", + "inset-inline-end", + "inset-inline-start", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + "padding-inline", + "padding-inline-start", + "padding-inline-end", + "padding-block", + "padding-block-start", + "padding-block-end", + "float", + "clear", + "overflow", + "overflow-anchor", + "overflow-block", + "overflow-inline", + "overflow-x", + "overflow-y", + "overscroll-behavior", + "overscroll-behavior-block", + "overscroll-behavior-inline", + "overscroll-behavior-x", + "overscroll-behavior-y", + "orphans", + "gap", + "columns", + "column-fill", + "column-rule", + "column-rule-color", + "column-rule-style", + "column-rule-width", + "column-span", + "column-count", + "column-width", + "object-fit", + "object-position", + "transform", + "transform-box", + "transform-origin", + "transform-style", + "translate", + "rotate", + "scale", + "border", + "border-top", + "border-right", + "border-bottom", + "border-left", + "border-width", + "border-top-width", + "border-right-width", + "border-bottom-width", + "border-left-width", + "border-style", + "border-top-style", + "border-right-style", + "border-bottom-style", + "border-left-style", + "border-radius", + "border-top-right-radius", + "border-top-left-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "border-inline", + "border-inline-color", + "border-inline-style", + "border-inline-width", + "border-inline-start", + "border-inline-start-color", + "border-inline-start-style", + "border-inline-start-width", + "border-inline-end", + "border-inline-end-color", + "border-inline-end-style", + "border-inline-end-width", + "border-block", + "border-block-color", + "border-block-style", + "border-block-width", + "border-block-start", + "border-block-start-color", + "border-block-start-style", + "border-block-start-width", + "border-block-end", + "border-block-end-color", + "border-block-end-style", + "border-block-end-width", + "border-color", + "border-image", + "border-image-outset", + "border-image-repeat", + "border-image-slice", + "border-image-source", + "border-image-width", + "border-top-color", + "border-right-color", + "border-bottom-color", + "border-left-color", + "border-collapse", + "border-spacing", + "border-start-start-radius", + "border-start-end-radius", + "border-end-start-radius", + "border-end-end-radius", + "outline", + "outline-color", + "outline-style", + "outline-width", + "outline-offset", + "backdrop-filter", + "backface-visibility", + "background", + "background-image", + "background-position", + "background-size", + "background-repeat", + "background-origin", + "background-clip", + "background-attachment", + "background-color", + "background-blend-mode", + "background-position-x", + "background-position-y", + "box-shadow", + "isolation", + "content", + "quotes", + "hanging-punctuation", + "color", + "accent-color", + "print-color-adjust", + "forced-color-adjust", + "color-scheme", + "caret-color", + "font", + "font-style", + "font-variant", + "font-weight", + "src", + "font-stretch", + "font-size", + "size-adjust", + "line-height", + "font-family", + "font-display", + "font-kerning", + "font-language-override", + "font-optical-sizing", + "font-size-adjust", + "font-synthesis", + "font-variant-alternates", + "font-variant-caps", + "font-variant-east-asian", + "font-variant-ligatures", + "font-variant-numeric", + "font-variant-position", + "font-variation-settings", + "ascent-override", + "descent-override", + "line-gap-override", + "hyphens", + "hyphenate-character", + "letter-spacing", + "line-break", + "list-style", + "list-style-image", + "list-style-position", + "list-style-type", + "direction", + "text-align", + "text-align-last", + "text-decoration", + "text-decoration-line", + "text-decoration-style", + "text-decoration-color", + "text-decoration-thickness", + "text-decoration-skip-ink", + "text-emphasis", + "text-emphasis-style", + "text-emphasis-color", + "text-emphasis-position", + "text-indent", + "text-justify", + "text-underline-position", + "text-underline-offset", + "text-orientation", + "text-overflow", + "text-rendering", + "text-shadow", + "text-transform", + "vertical-align", + "white-space", + "word-break", + "word-spacing", + "overflow-wrap", + "animation", + "animation-duration", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "animation-fill-mode", + "animation-play-state", + "animation-name", + "mix-blend-mode", + "break-before", + "break-after", + "break-inside", + "page", + "page-break-before", + "page-break-after", + "page-break-inside", + "caption-side", + "clip-path", + "counter-increment", + "counter-reset", + "counter-set", + "cursor", + "empty-cells", + "filter", + "image-orientation", + "image-rendering", + "mask", + "mask-border", + "mask-border-outset", + "mask-border-repeat", + "mask-border-slice", + "mask-border-source", + "mask-border-width", + "mask-clip", + "mask-composite", + "mask-image", + "mask-mode", + "mask-origin", + "mask-position", + "mask-repeat", + "mask-size", + "mask-type", + "opacity", + "perspective", + "perspective-origin", + "pointer-events", + "resize", + "scroll-behavior", + "scroll-margin", + "scroll-margin-block", + "scroll-margin-block-end", + "scroll-margin-block-start", + "scroll-margin-bottom", + "scroll-margin-inline", + "scroll-margin-inline-end", + "scroll-margin-inline-start", + "scroll-margin-left", + "scroll-margin-right", + "scroll-margin-top", + "scroll-padding", + "scroll-padding-block", + "scroll-padding-block-end", + "scroll-padding-block-start", + "scroll-padding-bottom", + "scroll-padding-inline", + "scroll-padding-inline-end", + "scroll-padding-inline-start", + "scroll-padding-left", + "scroll-padding-right", + "scroll-padding-top", + "scroll-snap-align", + "scroll-snap-stop", + "scroll-snap-type", + "scrollbar-color", + "scrollbar-gutter", + "scrollbar-width", + "shape-image-threshold", + "shape-margin", + "shape-outside", + "tab-size", + "table-layout", + "ruby-position", + "text-combine-upright", + "touch-action", + "transition", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "will-change", + "unicode-bidi", + "unicode-range", + "user-select", + "widows", + "writing-mode" + ]; + var smacss = /* @__PURE__ */ Object.freeze({ + __proto__: null, + properties + }); + exports2.cssDeclarationSorter = cssDeclarationSorter; + exports2["default"] = cssDeclarationSorter; + module2.exports = cssDeclarationSorter; + } +}); + +// node_modules/postcss-discard-comments/src/lib/commentRemover.js +var require_commentRemover = __commonJS({ + "node_modules/postcss-discard-comments/src/lib/commentRemover.js"(exports2, module2) { + "use strict"; + function CommentRemover(options) { + this.options = options; + } + CommentRemover.prototype.canRemove = function(comment) { + const remove = this.options.remove; + if (remove) { + return remove(comment); + } else { + const isImportant = comment.indexOf("!") === 0; + if (!isImportant) { + return true; + } + if (this.options.removeAll || this._hasFirst) { + return true; + } else if (this.options.removeAllButFirst && !this._hasFirst) { + this._hasFirst = true; + return false; + } + } + }; + module2.exports = CommentRemover; + } +}); + +// node_modules/postcss-discard-comments/src/lib/commentParser.js +var require_commentParser = __commonJS({ + "node_modules/postcss-discard-comments/src/lib/commentParser.js"(exports2, module2) { + "use strict"; + module2.exports = function commentParser(input) { + const tokens = []; + const length = input.length; + let pos = 0; + let next; + while (pos < length) { + next = input.indexOf("/*", pos); + if (~next) { + tokens.push([0, pos, next]); + pos = next; + next = input.indexOf("*/", pos + 2); + tokens.push([1, pos + 2, next]); + pos = next + 2; + } else { + tokens.push([0, pos, length]); + pos = length; + } + } + return tokens; + }; + } +}); + +// node_modules/postcss-discard-comments/src/index.js +var require_src2 = __commonJS({ + "node_modules/postcss-discard-comments/src/index.js"(exports2, module2) { + "use strict"; + var CommentRemover = require_commentRemover(); + var commentParser = require_commentParser(); + function pluginCreator(opts = {}) { + const remover = new CommentRemover(opts); + const matcherCache = /* @__PURE__ */ new Map(); + const replacerCache = /* @__PURE__ */ new Map(); + function matchesComments(source) { + if (matcherCache.has(source)) { + return matcherCache.get(source); + } + const result = commentParser(source).filter(([type]) => type); + matcherCache.set(source, result); + return result; + } + function replaceComments(source, space, separator = " ") { + const key = source + "@|@" + separator; + if (replacerCache.has(key)) { + return replacerCache.get(key); + } + const parsed = commentParser(source).reduce((value, [type, start, end]) => { + const contents = source.slice(start, end); + if (!type) { + return value + contents; + } + if (remover.canRemove(contents)) { + return value + separator; + } + return `${value}/*${contents}*/`; + }, ""); + const result = space(parsed).join(" "); + replacerCache.set(key, result); + return result; + } + return { + postcssPlugin: "postcss-discard-comments", + OnceExit(css, { list }) { + css.walk((node) => { + if (node.type === "comment" && remover.canRemove(node.text)) { + node.remove(); + return; + } + if (typeof node.raws.between === "string") { + node.raws.between = replaceComments(node.raws.between, list.space); + } + if (node.type === "decl") { + if (node.raws.value && node.raws.value.raw) { + if (node.raws.value.value === node.value) { + node.value = replaceComments(node.raws.value.raw, list.space); + } else { + node.value = replaceComments(node.value, list.space); + } + node.raws.value = null; + } + if (node.raws.important) { + node.raws.important = replaceComments( + node.raws.important, + list.space + ); + const b = matchesComments(node.raws.important); + node.raws.important = b.length ? node.raws.important : "!important"; + } else { + node.value = replaceComments(node.value, list.space); + } + return; + } + if (node.type === "rule" && node.raws.selector && node.raws.selector.raw) { + node.raws.selector.raw = replaceComments( + node.raws.selector.raw, + list.space, + "" + ); + return; + } + if (node.type === "atrule") { + if (node.raws.afterName) { + const commentsReplaced = replaceComments( + node.raws.afterName, + list.space + ); + if (!commentsReplaced.length) { + node.raws.afterName = commentsReplaced + " "; + } else { + node.raws.afterName = " " + commentsReplaced + " "; + } + } + if (node.raws.params && node.raws.params.raw) { + node.raws.params.raw = replaceComments( + node.raws.params.raw, + list.space + ); + } + } + }); + } + }; + } + pluginCreator.postcss = true; + module2.exports = pluginCreator; + } +}); + +// node_modules/lodash.memoize/index.js +var require_lodash = __commonJS({ + "node_modules/lodash.memoize/index.js"(exports2, module2) { + var FUNC_ERROR_TEXT = "Expected a function"; + var HASH_UNDEFINED = "__lodash_hash_undefined__"; + var funcTag = "[object Function]"; + var genTag = "[object GeneratorFunction]"; + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var freeGlobal = typeof global == "object" && global && global.Object === Object && global; + var freeSelf = typeof self == "object" && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function("return this")(); + function getValue(object, key) { + return object == null ? void 0 : object[key]; + } + function isHostObject(value) { + var result = false; + if (value != null && typeof value.toString != "function") { + try { + result = !!(value + ""); + } catch (e) { + } + } + return result; + } + var arrayProto = Array.prototype; + var funcProto = Function.prototype; + var objectProto = Object.prototype; + var coreJsData = root["__core-js_shared__"]; + var maskSrcKey = function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); + return uid ? "Symbol(src)_1." + uid : ""; + }(); + var funcToString = funcProto.toString; + var hasOwnProperty2 = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var reIsNative = RegExp( + "^" + funcToString.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" + ); + var splice = arrayProto.splice; + var Map2 = getNative(root, "Map"); + var nativeCreate = getNative(Object, "create"); + function Hash(entries) { + var index = -1, length = entries ? entries.length : 0; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + } + function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? void 0 : result; + } + return hasOwnProperty2.call(data, key) ? data[key] : void 0; + } + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== void 0 : hasOwnProperty2.call(data, key); + } + function hashSet(key, value) { + var data = this.__data__; + data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value; + return this; + } + Hash.prototype.clear = hashClear; + Hash.prototype["delete"] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + function ListCache(entries) { + var index = -1, length = entries ? entries.length : 0; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function listCacheClear() { + this.__data__ = []; + } + function listCacheDelete(key) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; + } + function listCacheGet(key) { + var data = this.__data__, index = assocIndexOf(data, key); + return index < 0 ? void 0 : data[index][1]; + } + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + function listCacheSet(key, value) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + ListCache.prototype.clear = listCacheClear; + ListCache.prototype["delete"] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + function MapCache(entries) { + var index = -1, length = entries ? entries.length : 0; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function mapCacheClear() { + this.__data__ = { + "hash": new Hash(), + "map": new (Map2 || ListCache)(), + "string": new Hash() + }; + } + function mapCacheDelete(key) { + return getMapData(this, key)["delete"](key); + } + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; + } + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype["delete"] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; + } + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : void 0; + } + function isKeyable(value) { + var type = typeof value; + return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; + } + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) { + } + try { + return func + ""; + } catch (e) { + } + } + return ""; + } + function memoize(func, resolver) { + if (typeof func != "function" || resolver && typeof resolver != "function") { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + memoized.cache = new (memoize.Cache || MapCache)(); + return memoized; + } + memoize.Cache = MapCache; + function eq(value, other) { + return value === other || value !== value && other !== other; + } + function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ""; + return tag == funcTag || tag == genTag; + } + function isObject(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + module2.exports = memoize; + } +}); + +// node_modules/lodash.uniq/index.js +var require_lodash2 = __commonJS({ + "node_modules/lodash.uniq/index.js"(exports2, module2) { + var LARGE_ARRAY_SIZE = 200; + var HASH_UNDEFINED = "__lodash_hash_undefined__"; + var INFINITY = 1 / 0; + var funcTag = "[object Function]"; + var genTag = "[object GeneratorFunction]"; + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var freeGlobal = typeof global == "object" && global && global.Object === Object && global; + var freeSelf = typeof self == "object" && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function("return this")(); + function arrayIncludes(array, value) { + var length = array ? array.length : 0; + return !!length && baseIndexOf(array, value, 0) > -1; + } + function arrayIncludesWith(array, value, comparator) { + var index = -1, length = array ? array.length : 0; + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, index = fromIndex + (fromRight ? 1 : -1); + while (fromRight ? index-- : ++index < length) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return baseFindIndex(array, baseIsNaN, fromIndex); + } + var index = fromIndex - 1, length = array.length; + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + function baseIsNaN(value) { + return value !== value; + } + function cacheHas(cache, key) { + return cache.has(key); + } + function getValue(object, key) { + return object == null ? void 0 : object[key]; + } + function isHostObject(value) { + var result = false; + if (value != null && typeof value.toString != "function") { + try { + result = !!(value + ""); + } catch (e) { + } + } + return result; + } + function setToArray(set) { + var index = -1, result = Array(set.size); + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + var arrayProto = Array.prototype; + var funcProto = Function.prototype; + var objectProto = Object.prototype; + var coreJsData = root["__core-js_shared__"]; + var maskSrcKey = function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); + return uid ? "Symbol(src)_1." + uid : ""; + }(); + var funcToString = funcProto.toString; + var hasOwnProperty2 = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var reIsNative = RegExp( + "^" + funcToString.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" + ); + var splice = arrayProto.splice; + var Map2 = getNative(root, "Map"); + var Set2 = getNative(root, "Set"); + var nativeCreate = getNative(Object, "create"); + function Hash(entries) { + var index = -1, length = entries ? entries.length : 0; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + } + function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? void 0 : result; + } + return hasOwnProperty2.call(data, key) ? data[key] : void 0; + } + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== void 0 : hasOwnProperty2.call(data, key); + } + function hashSet(key, value) { + var data = this.__data__; + data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value; + return this; + } + Hash.prototype.clear = hashClear; + Hash.prototype["delete"] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + function ListCache(entries) { + var index = -1, length = entries ? entries.length : 0; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function listCacheClear() { + this.__data__ = []; + } + function listCacheDelete(key) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; + } + function listCacheGet(key) { + var data = this.__data__, index = assocIndexOf(data, key); + return index < 0 ? void 0 : data[index][1]; + } + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + function listCacheSet(key, value) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + ListCache.prototype.clear = listCacheClear; + ListCache.prototype["delete"] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + function MapCache(entries) { + var index = -1, length = entries ? entries.length : 0; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function mapCacheClear() { + this.__data__ = { + "hash": new Hash(), + "map": new (Map2 || ListCache)(), + "string": new Hash() + }; + } + function mapCacheDelete(key) { + return getMapData(this, key)["delete"](key); + } + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; + } + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype["delete"] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + function SetCache(values) { + var index = -1, length = values ? values.length : 0; + this.__data__ = new MapCache(); + while (++index < length) { + this.add(values[index]); + } + } + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + function setCacheHas(value) { + return this.__data__.has(value); + } + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + function baseUniq(array, iteratee, comparator) { + var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result; + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache(); + } else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], computed = iteratee ? iteratee(value) : value; + value = comparator || value !== 0 ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values) { + return new Set2(values); + }; + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; + } + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : void 0; + } + function isKeyable(value) { + var type = typeof value; + return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; + } + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) { + } + try { + return func + ""; + } catch (e) { + } + } + return ""; + } + function uniq(array) { + return array && array.length ? baseUniq(array) : []; + } + function eq(value, other) { + return value === other || value !== value && other !== other; + } + function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ""; + return tag == funcTag || tag == genTag; + } + function isObject(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + function noop() { + } + module2.exports = uniq; + } +}); + +// node_modules/caniuse-api/dist/utils.js +var require_utils2 = __commonJS({ + "node_modules/caniuse-api/dist/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.contains = contains; + exports2.parseCaniuseData = parseCaniuseData; + exports2.cleanBrowsersList = cleanBrowsersList; + var _lodash = require_lodash2(); + var _lodash2 = _interopRequireDefault(_lodash); + var _browserslist = require_browserslist(); + var _browserslist2 = _interopRequireDefault(_browserslist); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function contains(str, substr) { + return !!~str.indexOf(substr); + } + function parseCaniuseData(feature, browsers) { + var support = {}; + var letters; + var letter; + browsers.forEach(function(browser) { + support[browser] = {}; + for (var info in feature.stats[browser]) { + letters = feature.stats[browser][info].replace(/#\d+/, "").trim().split(" "); + info = parseFloat(info.split("-")[0]); + if (isNaN(info)) + continue; + for (var i = 0; i < letters.length; i++) { + letter = letters[i]; + if (letter === "d") { + continue; + } else if (letter === "y") { + if (typeof support[browser][letter] === "undefined" || info < support[browser][letter]) { + support[browser][letter] = info; + } + } else { + if (typeof support[browser][letter] === "undefined" || info > support[browser][letter]) { + support[browser][letter] = info; + } + } + } + } + }); + return support; + } + function cleanBrowsersList(browserList) { + return (0, _lodash2.default)((0, _browserslist2.default)(browserList).map(function(browser) { + return browser.split(" ")[0]; + })); + } + } +}); + +// node_modules/caniuse-api/dist/index.js +var require_dist3 = __commonJS({ + "node_modules/caniuse-api/dist/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getBrowserScope = exports2.setBrowserScope = exports2.getLatestStableBrowsers = exports2.find = exports2.isSupported = exports2.getSupport = exports2.features = void 0; + var _lodash = require_lodash(); + var _lodash2 = _interopRequireDefault(_lodash); + var _browserslist = require_browserslist(); + var _browserslist2 = _interopRequireDefault(_browserslist); + var _caniuseLite = require_unpacker(); + var _utils = require_utils2(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var featuresList = Object.keys(_caniuseLite.features); + var browsers = void 0; + function setBrowserScope(browserList) { + browsers = (0, _utils.cleanBrowsersList)(browserList); + } + function getBrowserScope() { + return browsers; + } + var parse = (0, _lodash2.default)(_utils.parseCaniuseData, function(feat, browsers2) { + return feat.title + browsers2; + }); + function getSupport(query) { + var feature = void 0; + try { + feature = (0, _caniuseLite.feature)(_caniuseLite.features[query]); + } catch (e) { + var res = find(query); + if (res.length === 1) + return getSupport(res[0]); + throw new ReferenceError("Please provide a proper feature name. Cannot find " + query); + } + return parse(feature, browsers); + } + function isSupported(feature, browsers2) { + var data = void 0; + try { + data = (0, _caniuseLite.feature)(_caniuseLite.features[feature]); + } catch (e) { + var res = find(feature); + if (res.length === 1) { + data = _caniuseLite.features[res[0]]; + } else { + throw new ReferenceError("Please provide a proper feature name. Cannot find " + feature); + } + } + return (0, _browserslist2.default)(browsers2, { ignoreUnknownVersions: true }).map(function(browser) { + return browser.split(" "); + }).every(function(browser) { + return data.stats[browser[0]] && data.stats[browser[0]][browser[1]] === "y"; + }); + } + function find(query) { + if (typeof query !== "string") { + throw new TypeError("The `query` parameter should be a string."); + } + if (~featuresList.indexOf(query)) { + return query; + } + return featuresList.filter(function(file) { + return (0, _utils.contains)(file, query); + }); + } + function getLatestStableBrowsers() { + return (0, _browserslist2.default)("last 1 version"); + } + setBrowserScope(); + exports2.features = featuresList; + exports2.getSupport = getSupport; + exports2.isSupported = isSupported; + exports2.find = find; + exports2.getLatestStableBrowsers = getLatestStableBrowsers; + exports2.setBrowserScope = setBrowserScope; + exports2.getBrowserScope = getBrowserScope; + } +}); + +// node_modules/postcss-reduce-initial/src/data/fromInitial.json +var require_fromInitial = __commonJS({ + "node_modules/postcss-reduce-initial/src/data/fromInitial.json"(exports2, module2) { + module2.exports = { + "-webkit-line-clamp": "none", + "accent-color": "auto", + "align-content": "normal", + "align-items": "normal", + "align-self": "auto", + "align-tracks": "normal", + "animation-delay": "0s", + "animation-direction": "normal", + "animation-duration": "0s", + "animation-fill-mode": "none", + "animation-iteration-count": "1", + "animation-name": "none", + "animation-timing-function": "ease", + "animation-timeline": "auto", + appearance: "none", + "aspect-ratio": "auto", + azimuth: "center", + "backdrop-filter": "none", + "background-attachment": "scroll", + "background-blend-mode": "normal", + "background-image": "none", + "background-position": "0% 0%", + "background-position-x": "0%", + "background-position-y": "0%", + "background-repeat": "repeat", + "block-overflow": "clip", + "block-size": "auto", + "border-block-style": "none", + "border-block-width": "medium", + "border-block-end-style": "none", + "border-block-end-width": "medium", + "border-block-start-style": "none", + "border-block-start-width": "medium", + "border-bottom-left-radius": "0", + "border-bottom-right-radius": "0", + "border-bottom-style": "none", + "border-bottom-width": "medium", + "border-end-end-radius": "0", + "border-end-start-radius": "0", + "border-image-outset": "0", + "border-image-slice": "100%", + "border-image-source": "none", + "border-image-width": "1", + "border-inline-style": "none", + "border-inline-width": "medium", + "border-inline-end-style": "none", + "border-inline-end-width": "medium", + "border-inline-start-style": "none", + "border-inline-start-width": "medium", + "border-left-style": "none", + "border-left-width": "medium", + "border-right-style": "none", + "border-right-width": "medium", + "border-spacing": "0", + "border-start-end-radius": "0", + "border-start-start-radius": "0", + "border-top-left-radius": "0", + "border-top-right-radius": "0", + "border-top-style": "none", + "border-top-width": "medium", + bottom: "auto", + "box-decoration-break": "slice", + "box-shadow": "none", + "break-after": "auto", + "break-before": "auto", + "break-inside": "auto", + "caption-side": "top", + "caret-color": "auto", + "caret-shape": "auto", + clear: "none", + clip: "auto", + "clip-path": "none", + "color-scheme": "normal", + "column-count": "auto", + "column-gap": "normal", + "column-rule-style": "none", + "column-rule-width": "medium", + "column-span": "none", + "column-width": "auto", + contain: "none", + "contain-intrinsic-block-size": "none", + "contain-intrinsic-height": "none", + "contain-intrinsic-inline-size": "none", + "contain-intrinsic-width": "none", + content: "normal", + "counter-increment": "none", + "counter-reset": "none", + "counter-set": "none", + cursor: "auto", + direction: "ltr", + "empty-cells": "show", + filter: "none", + "flex-basis": "auto", + "flex-direction": "row", + "flex-grow": "0", + "flex-shrink": "1", + "flex-wrap": "nowrap", + float: "none", + "font-feature-settings": "normal", + "font-kerning": "auto", + "font-language-override": "normal", + "font-optical-sizing": "auto", + "font-variation-settings": "normal", + "font-size": "medium", + "font-size-adjust": "none", + "font-stretch": "normal", + "font-style": "normal", + "font-variant": "normal", + "font-variant-alternates": "normal", + "font-variant-caps": "normal", + "font-variant-east-asian": "normal", + "font-variant-ligatures": "normal", + "font-variant-numeric": "normal", + "font-variant-position": "normal", + "font-weight": "normal", + "forced-color-adjust": "auto", + "grid-auto-columns": "auto", + "grid-auto-flow": "row", + "grid-auto-rows": "auto", + "grid-column-end": "auto", + "grid-column-gap": "0", + "grid-column-start": "auto", + "grid-row-end": "auto", + "grid-row-gap": "0", + "grid-row-start": "auto", + "grid-template-areas": "none", + "grid-template-columns": "none", + "grid-template-rows": "none", + "hanging-punctuation": "none", + height: "auto", + "hyphenate-character": "auto", + hyphens: "manual", + "image-rendering": "auto", + "image-resolution": "1dppx", + "ime-mode": "auto", + "initial-letter": "normal", + "initial-letter-align": "auto", + "inline-size": "auto", + "input-security": "auto", + inset: "auto", + "inset-block": "auto", + "inset-block-end": "auto", + "inset-block-start": "auto", + "inset-inline": "auto", + "inset-inline-end": "auto", + "inset-inline-start": "auto", + isolation: "auto", + "justify-content": "normal", + "justify-items": "legacy", + "justify-self": "auto", + "justify-tracks": "normal", + left: "auto", + "letter-spacing": "normal", + "line-break": "auto", + "line-clamp": "none", + "line-height": "normal", + "line-height-step": "0", + "list-style-image": "none", + "list-style-type": "disc", + "margin-block": "0", + "margin-block-end": "0", + "margin-block-start": "0", + "margin-bottom": "0", + "margin-inline": "0", + "margin-inline-end": "0", + "margin-inline-start": "0", + "margin-left": "0", + "margin-right": "0", + "margin-top": "0", + "margin-trim": "none", + "mask-border-mode": "alpha", + "mask-border-outset": "0", + "mask-border-slice": "0", + "mask-border-source": "none", + "mask-border-width": "auto", + "mask-composite": "add", + "mask-image": "none", + "mask-position": "center", + "mask-repeat": "repeat", + "mask-size": "auto", + "masonry-auto-flow": "pack", + "math-depth": "0", + "math-shift": "normal", + "math-style": "normal", + "max-block-size": "none", + "max-height": "none", + "max-inline-size": "none", + "max-lines": "none", + "max-width": "none", + "min-block-size": "0", + "min-height": "auto", + "min-inline-size": "0", + "min-width": "auto", + "mix-blend-mode": "normal", + "object-fit": "fill", + "offset-anchor": "auto", + "offset-distance": "0", + "offset-path": "none", + "offset-position": "auto", + "offset-rotate": "auto", + opacity: "1", + order: "0", + orphans: "2", + "outline-offset": "0", + "outline-style": "none", + "outline-width": "medium", + "overflow-anchor": "auto", + "overflow-block": "auto", + "overflow-clip-margin": "0px", + "overflow-inline": "auto", + "overflow-wrap": "normal", + "overscroll-behavior": "auto", + "overscroll-behavior-block": "auto", + "overscroll-behavior-inline": "auto", + "overscroll-behavior-x": "auto", + "overscroll-behavior-y": "auto", + "padding-block": "0", + "padding-block-end": "0", + "padding-block-start": "0", + "padding-bottom": "0", + "padding-inline": "0", + "padding-inline-end": "0", + "padding-inline-start": "0", + "padding-left": "0", + "padding-right": "0", + "padding-top": "0", + "page-break-after": "auto", + "page-break-before": "auto", + "page-break-inside": "auto", + "paint-order": "normal", + perspective: "none", + "place-content": "normal", + "pointer-events": "auto", + position: "static", + resize: "none", + right: "auto", + rotate: "none", + "row-gap": "normal", + scale: "none", + "scrollbar-color": "auto", + "scrollbar-gutter": "auto", + "scrollbar-width": "auto", + "scroll-behavior": "auto", + "scroll-margin": "0", + "scroll-margin-block": "0", + "scroll-margin-block-start": "0", + "scroll-margin-block-end": "0", + "scroll-margin-bottom": "0", + "scroll-margin-inline": "0", + "scroll-margin-inline-start": "0", + "scroll-margin-inline-end": "0", + "scroll-margin-left": "0", + "scroll-margin-right": "0", + "scroll-margin-top": "0", + "scroll-padding": "auto", + "scroll-padding-block": "auto", + "scroll-padding-block-start": "auto", + "scroll-padding-block-end": "auto", + "scroll-padding-bottom": "auto", + "scroll-padding-inline": "auto", + "scroll-padding-inline-start": "auto", + "scroll-padding-inline-end": "auto", + "scroll-padding-left": "auto", + "scroll-padding-right": "auto", + "scroll-padding-top": "auto", + "scroll-snap-align": "none", + "scroll-snap-coordinate": "none", + "scroll-snap-points-x": "none", + "scroll-snap-points-y": "none", + "scroll-snap-stop": "normal", + "scroll-snap-type": "none", + "scroll-snap-type-x": "none", + "scroll-snap-type-y": "none", + "scroll-timeline-axis": "block", + "scroll-timeline-name": "none", + "shape-image-threshold": "0.0", + "shape-margin": "0", + "shape-outside": "none", + "tab-size": "8", + "table-layout": "auto", + "text-align-last": "auto", + "text-combine-upright": "none", + "text-decoration-line": "none", + "text-decoration-skip-ink": "auto", + "text-decoration-style": "solid", + "text-decoration-thickness": "auto", + "text-emphasis-style": "none", + "text-indent": "0", + "text-justify": "auto", + "text-orientation": "mixed", + "text-overflow": "clip", + "text-rendering": "auto", + "text-shadow": "none", + "text-transform": "none", + "text-underline-offset": "auto", + "text-underline-position": "auto", + top: "auto", + "touch-action": "auto", + transform: "none", + "transform-style": "flat", + "transition-delay": "0s", + "transition-duration": "0s", + "transition-property": "all", + "transition-timing-function": "ease", + translate: "none", + "unicode-bidi": "normal", + "user-select": "auto", + "white-space": "normal", + widows: "2", + width: "auto", + "will-change": "auto", + "word-break": "normal", + "word-spacing": "normal", + "word-wrap": "normal", + "z-index": "auto" + }; + } +}); + +// node_modules/postcss-reduce-initial/src/data/toInitial.json +var require_toInitial = __commonJS({ + "node_modules/postcss-reduce-initial/src/data/toInitial.json"(exports2, module2) { + module2.exports = { + "background-clip": "border-box", + "background-color": "transparent", + "background-origin": "padding-box", + "background-size": "auto auto", + "border-block-color": "currentcolor", + "border-block-end-color": "currentcolor", + "border-block-start-color": "currentcolor", + "border-bottom-color": "currentcolor", + "border-collapse": "separate", + "border-inline-color": "currentcolor", + "border-inline-end-color": "currentcolor", + "border-inline-start-color": "currentcolor", + "border-left-color": "currentcolor", + "border-right-color": "currentcolor", + "border-top-color": "currentcolor", + "box-sizing": "content-box", + color: "canvastext", + "column-rule-color": "currentcolor", + "font-synthesis": "weight style", + "image-orientation": "from-image", + "mask-clip": "border-box", + "mask-mode": "match-source", + "mask-origin": "border-box", + "mask-repeat": "no-repeat", + "mask-type": "luminance", + "ruby-align": "space-around", + "ruby-merge": "separate", + "ruby-position": "alternate", + "text-decoration-color": "currentcolor", + "text-emphasis-color": "currentcolor", + "text-emphasis-position": "over right", + "transform-box": "view-box", + "transform-origin": "50% 50% 0", + "vertical-align": "baseline", + "writing-mode": "horizontal-tb" + }; + } +}); + +// node_modules/postcss-reduce-initial/src/index.js +var require_src3 = __commonJS({ + "node_modules/postcss-reduce-initial/src/index.js"(exports2, module2) { + "use strict"; + var browserslist = require_browserslist(); + var { isSupported } = require_dist3(); + var fromInitial = require_fromInitial(); + var toInitial = require_toInitial(); + var initial = "initial"; + var defaultIgnoreProps = ["writing-mode", "transform-box"]; + function pluginCreator() { + return { + postcssPlugin: "postcss-reduce-initial", + prepare(result) { + const resultOpts = result.opts || {}; + const browsers = browserslist(null, { + stats: resultOpts.stats, + path: __dirname, + env: resultOpts.env + }); + const initialSupport = isSupported("css-initial-value", browsers); + return { + OnceExit(css) { + css.walkDecls((decl) => { + const lowerCasedProp = decl.prop.toLowerCase(); + const ignoreProp = new Set( + defaultIgnoreProps.concat(resultOpts.ignore || []) + ); + if (ignoreProp.has(lowerCasedProp)) { + return; + } + if (initialSupport && Object.prototype.hasOwnProperty.call(toInitial, lowerCasedProp) && decl.value.toLowerCase() === toInitial[lowerCasedProp]) { + decl.value = initial; + return; + } + if (decl.value.toLowerCase() !== initial || !fromInitial[lowerCasedProp]) { + return; + } + decl.value = fromInitial[lowerCasedProp]; + }); + } + }; + } + }; + } + pluginCreator.postcss = true; + module2.exports = pluginCreator; + } +}); + +// node_modules/cssnano-utils/src/rawCache.js +var require_rawCache = __commonJS({ + "node_modules/cssnano-utils/src/rawCache.js"(exports2, module2) { + "use strict"; + function pluginCreator() { + return { + postcssPlugin: "cssnano-util-raw-cache", + OnceExit(css, { result }) { + result.root.rawCache = { + colon: ":", + indent: "", + beforeDecl: "", + beforeRule: "", + beforeOpen: "", + beforeClose: "", + beforeComment: "", + after: "", + emptyBody: "", + commentLeft: "", + commentRight: "" + }; + } + }; + } + pluginCreator.postcss = true; + module2.exports = pluginCreator; + } +}); + +// node_modules/cssnano-utils/src/getArguments.js +var require_getArguments = __commonJS({ + "node_modules/cssnano-utils/src/getArguments.js"(exports2, module2) { + "use strict"; + module2.exports = function getArguments(node) { + const list = [[]]; + for (const child of node.nodes) { + if (child.type !== "div") { + list[list.length - 1].push(child); + } else { + list.push([]); + } + } + return list; + }; + } +}); + +// node_modules/cssnano-utils/src/sameParent.js +var require_sameParent = __commonJS({ + "node_modules/cssnano-utils/src/sameParent.js"(exports2, module2) { + "use strict"; + function checkMatch(nodeA, nodeB) { + if (nodeA.type === "atrule" && nodeB.type === "atrule") { + return nodeA.params === nodeB.params && nodeA.name.toLowerCase() === nodeB.name.toLowerCase(); + } + return nodeA.type === nodeB.type; + } + function sameParent(nodeA, nodeB) { + if (!nodeA.parent) { + return !nodeB.parent; + } + if (!nodeB.parent) { + return false; + } + if (!checkMatch(nodeA.parent, nodeB.parent)) { + return false; + } + return sameParent(nodeA.parent, nodeB.parent); + } + module2.exports = sameParent; + } +}); + +// node_modules/cssnano-utils/src/index.js +var require_src4 = __commonJS({ + "node_modules/cssnano-utils/src/index.js"(exports2, module2) { + "use strict"; + var rawCache = require_rawCache(); + var getArguments = require_getArguments(); + var sameParent = require_sameParent(); + module2.exports = { rawCache, getArguments, sameParent }; + } +}); + +// node_modules/colord/index.js +var require_colord = __commonJS({ + "node_modules/colord/index.js"(exports2) { + Object.defineProperty(exports2, "__esModule", { value: true }); + var r = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }; + var t = function(r2) { + return "string" == typeof r2 ? r2.length > 0 : "number" == typeof r2; + }; + var n = function(r2, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = Math.pow(10, t2)), Math.round(n2 * r2) / n2 + 0; + }; + var e = function(r2, t2, n2) { + return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = 1), r2 > n2 ? n2 : r2 > t2 ? r2 : t2; + }; + var u = function(r2) { + return (r2 = isFinite(r2) ? r2 % 360 : 0) > 0 ? r2 : r2 + 360; + }; + var o = function(r2) { + return { r: e(r2.r, 0, 255), g: e(r2.g, 0, 255), b: e(r2.b, 0, 255), a: e(r2.a) }; + }; + var a = function(r2) { + return { r: n(r2.r), g: n(r2.g), b: n(r2.b), a: n(r2.a, 3) }; + }; + var s = /^#([0-9a-f]{3,8})$/i; + var i = function(r2) { + var t2 = r2.toString(16); + return t2.length < 2 ? "0" + t2 : t2; + }; + var h = function(r2) { + var t2 = r2.r, n2 = r2.g, e2 = r2.b, u2 = r2.a, o2 = Math.max(t2, n2, e2), a2 = o2 - Math.min(t2, n2, e2), s2 = a2 ? o2 === t2 ? (n2 - e2) / a2 : o2 === n2 ? 2 + (e2 - t2) / a2 : 4 + (t2 - n2) / a2 : 0; + return { h: 60 * (s2 < 0 ? s2 + 6 : s2), s: o2 ? a2 / o2 * 100 : 0, v: o2 / 255 * 100, a: u2 }; + }; + var b = function(r2) { + var t2 = r2.h, n2 = r2.s, e2 = r2.v, u2 = r2.a; + t2 = t2 / 360 * 6, n2 /= 100, e2 /= 100; + var o2 = Math.floor(t2), a2 = e2 * (1 - n2), s2 = e2 * (1 - (t2 - o2) * n2), i2 = e2 * (1 - (1 - t2 + o2) * n2), h2 = o2 % 6; + return { r: 255 * [e2, s2, a2, a2, i2, e2][h2], g: 255 * [i2, e2, e2, s2, a2, a2][h2], b: 255 * [a2, a2, i2, e2, e2, s2][h2], a: u2 }; + }; + var d = function(r2) { + return { h: u(r2.h), s: e(r2.s, 0, 100), l: e(r2.l, 0, 100), a: e(r2.a) }; + }; + var g = function(r2) { + return { h: n(r2.h), s: n(r2.s), l: n(r2.l), a: n(r2.a, 3) }; + }; + var f = function(r2) { + return b((n2 = (t2 = r2).s, { h: t2.h, s: (n2 *= ((e2 = t2.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t2.a })); + var t2, n2, e2; + }; + var p = function(r2) { + return { h: (t2 = h(r2)).h, s: (u2 = (200 - (n2 = t2.s)) * (e2 = t2.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t2.a }; + var t2, n2, e2, u2; + }; + var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; + var c = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; + var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; + var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; + var y = { string: [[function(r2) { + var t2 = s.exec(r2); + return t2 ? (r2 = t2[1]).length <= 4 ? { r: parseInt(r2[0] + r2[0], 16), g: parseInt(r2[1] + r2[1], 16), b: parseInt(r2[2] + r2[2], 16), a: 4 === r2.length ? n(parseInt(r2[3] + r2[3], 16) / 255, 2) : 1 } : 6 === r2.length || 8 === r2.length ? { r: parseInt(r2.substr(0, 2), 16), g: parseInt(r2.substr(2, 2), 16), b: parseInt(r2.substr(4, 2), 16), a: 8 === r2.length ? n(parseInt(r2.substr(6, 2), 16) / 255, 2) : 1 } : null : null; + }, "hex"], [function(r2) { + var t2 = v.exec(r2) || m.exec(r2); + return t2 ? t2[2] !== t2[4] || t2[4] !== t2[6] ? null : o({ r: Number(t2[1]) / (t2[2] ? 100 / 255 : 1), g: Number(t2[3]) / (t2[4] ? 100 / 255 : 1), b: Number(t2[5]) / (t2[6] ? 100 / 255 : 1), a: void 0 === t2[7] ? 1 : Number(t2[7]) / (t2[8] ? 100 : 1) }) : null; + }, "rgb"], [function(t2) { + var n2 = l.exec(t2) || c.exec(t2); + if (!n2) + return null; + var e2, u2, o2 = d({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) }); + return f(o2); + }, "hsl"]], object: [[function(r2) { + var n2 = r2.r, e2 = r2.g, u2 = r2.b, a2 = r2.a, s2 = void 0 === a2 ? 1 : a2; + return t(n2) && t(e2) && t(u2) ? o({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(s2) }) : null; + }, "rgb"], [function(r2) { + var n2 = r2.h, e2 = r2.s, u2 = r2.l, o2 = r2.a, a2 = void 0 === o2 ? 1 : o2; + if (!t(n2) || !t(e2) || !t(u2)) + return null; + var s2 = d({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(a2) }); + return f(s2); + }, "hsl"], [function(r2) { + var n2 = r2.h, o2 = r2.s, a2 = r2.v, s2 = r2.a, i2 = void 0 === s2 ? 1 : s2; + if (!t(n2) || !t(o2) || !t(a2)) + return null; + var h2 = function(r3) { + return { h: u(r3.h), s: e(r3.s, 0, 100), v: e(r3.v, 0, 100), a: e(r3.a) }; + }({ h: Number(n2), s: Number(o2), v: Number(a2), a: Number(i2) }); + return b(h2); + }, "hsv"]] }; + var N = function(r2, t2) { + for (var n2 = 0; n2 < t2.length; n2++) { + var e2 = t2[n2][0](r2); + if (e2) + return [e2, t2[n2][1]]; + } + return [null, void 0]; + }; + var x = function(r2) { + return "string" == typeof r2 ? N(r2.trim(), y.string) : "object" == typeof r2 && null !== r2 ? N(r2, y.object) : [null, void 0]; + }; + var M = function(r2, t2) { + var n2 = p(r2); + return { h: n2.h, s: e(n2.s + 100 * t2, 0, 100), l: n2.l, a: n2.a }; + }; + var I = function(r2) { + return (299 * r2.r + 587 * r2.g + 114 * r2.b) / 1e3 / 255; + }; + var H = function(r2, t2) { + var n2 = p(r2); + return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t2, 0, 100), a: n2.a }; + }; + var $ = function() { + function r2(r3) { + this.parsed = x(r3)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 }; + } + return r2.prototype.isValid = function() { + return null !== this.parsed; + }, r2.prototype.brightness = function() { + return n(I(this.rgba), 2); + }, r2.prototype.isDark = function() { + return I(this.rgba) < 0.5; + }, r2.prototype.isLight = function() { + return I(this.rgba) >= 0.5; + }, r2.prototype.toHex = function() { + return r3 = a(this.rgba), t2 = r3.r, e2 = r3.g, u2 = r3.b, s2 = (o2 = r3.a) < 1 ? i(n(255 * o2)) : "", "#" + i(t2) + i(e2) + i(u2) + s2; + var r3, t2, e2, u2, o2, s2; + }, r2.prototype.toRgb = function() { + return a(this.rgba); + }, r2.prototype.toRgbString = function() { + return r3 = a(this.rgba), t2 = r3.r, n2 = r3.g, e2 = r3.b, (u2 = r3.a) < 1 ? "rgba(" + t2 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t2 + ", " + n2 + ", " + e2 + ")"; + var r3, t2, n2, e2, u2; + }, r2.prototype.toHsl = function() { + return g(p(this.rgba)); + }, r2.prototype.toHslString = function() { + return r3 = g(p(this.rgba)), t2 = r3.h, n2 = r3.s, e2 = r3.l, (u2 = r3.a) < 1 ? "hsla(" + t2 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t2 + ", " + n2 + "%, " + e2 + "%)"; + var r3, t2, n2, e2, u2; + }, r2.prototype.toHsv = function() { + return r3 = h(this.rgba), { h: n(r3.h), s: n(r3.s), v: n(r3.v), a: n(r3.a, 3) }; + var r3; + }, r2.prototype.invert = function() { + return j({ r: 255 - (r3 = this.rgba).r, g: 255 - r3.g, b: 255 - r3.b, a: r3.a }); + var r3; + }, r2.prototype.saturate = function(r3) { + return void 0 === r3 && (r3 = 0.1), j(M(this.rgba, r3)); + }, r2.prototype.desaturate = function(r3) { + return void 0 === r3 && (r3 = 0.1), j(M(this.rgba, -r3)); + }, r2.prototype.grayscale = function() { + return j(M(this.rgba, -1)); + }, r2.prototype.lighten = function(r3) { + return void 0 === r3 && (r3 = 0.1), j(H(this.rgba, r3)); + }, r2.prototype.darken = function(r3) { + return void 0 === r3 && (r3 = 0.1), j(H(this.rgba, -r3)); + }, r2.prototype.rotate = function(r3) { + return void 0 === r3 && (r3 = 15), this.hue(this.hue() + r3); + }, r2.prototype.alpha = function(r3) { + return "number" == typeof r3 ? j({ r: (t2 = this.rgba).r, g: t2.g, b: t2.b, a: r3 }) : n(this.rgba.a, 3); + var t2; + }, r2.prototype.hue = function(r3) { + var t2 = p(this.rgba); + return "number" == typeof r3 ? j({ h: r3, s: t2.s, l: t2.l, a: t2.a }) : n(t2.h); + }, r2.prototype.isEqual = function(r3) { + return this.toHex() === j(r3).toHex(); + }, r2; + }(); + var j = function(r2) { + return r2 instanceof $ ? r2 : new $(r2); + }; + var w = []; + exports2.Colord = $, exports2.colord = j, exports2.extend = function(r2) { + r2.forEach(function(r3) { + w.indexOf(r3) < 0 && (r3($, y), w.push(r3)); + }); + }, exports2.getFormat = function(r2) { + return x(r2)[1]; + }, exports2.random = function() { + return new $({ r: 255 * Math.random(), g: 255 * Math.random(), b: 255 * Math.random() }); + }; + } +}); + +// node_modules/colord/plugins/names.js +var require_names = __commonJS({ + "node_modules/colord/plugins/names.js"(exports2, module2) { + module2.exports = function(e, f) { + var a = { white: "#ffffff", bisque: "#ffe4c4", blue: "#0000ff", cadetblue: "#5f9ea0", chartreuse: "#7fff00", chocolate: "#d2691e", coral: "#ff7f50", antiquewhite: "#faebd7", aqua: "#00ffff", azure: "#f0ffff", whitesmoke: "#f5f5f5", papayawhip: "#ffefd5", plum: "#dda0dd", blanchedalmond: "#ffebcd", black: "#000000", gold: "#ffd700", goldenrod: "#daa520", gainsboro: "#dcdcdc", cornsilk: "#fff8dc", cornflowerblue: "#6495ed", burlywood: "#deb887", aquamarine: "#7fffd4", beige: "#f5f5dc", crimson: "#dc143c", cyan: "#00ffff", darkblue: "#00008b", darkcyan: "#008b8b", darkgoldenrod: "#b8860b", darkkhaki: "#bdb76b", darkgray: "#a9a9a9", darkgreen: "#006400", darkgrey: "#a9a9a9", peachpuff: "#ffdab9", darkmagenta: "#8b008b", darkred: "#8b0000", darkorchid: "#9932cc", darkorange: "#ff8c00", darkslateblue: "#483d8b", gray: "#808080", darkslategray: "#2f4f4f", darkslategrey: "#2f4f4f", deeppink: "#ff1493", deepskyblue: "#00bfff", wheat: "#f5deb3", firebrick: "#b22222", floralwhite: "#fffaf0", ghostwhite: "#f8f8ff", darkviolet: "#9400d3", magenta: "#ff00ff", green: "#008000", dodgerblue: "#1e90ff", grey: "#808080", honeydew: "#f0fff0", hotpink: "#ff69b4", blueviolet: "#8a2be2", forestgreen: "#228b22", lawngreen: "#7cfc00", indianred: "#cd5c5c", indigo: "#4b0082", fuchsia: "#ff00ff", brown: "#a52a2a", maroon: "#800000", mediumblue: "#0000cd", lightcoral: "#f08080", darkturquoise: "#00ced1", lightcyan: "#e0ffff", ivory: "#fffff0", lightyellow: "#ffffe0", lightsalmon: "#ffa07a", lightseagreen: "#20b2aa", linen: "#faf0e6", mediumaquamarine: "#66cdaa", lemonchiffon: "#fffacd", lime: "#00ff00", khaki: "#f0e68c", mediumseagreen: "#3cb371", limegreen: "#32cd32", mediumspringgreen: "#00fa9a", lightskyblue: "#87cefa", lightblue: "#add8e6", midnightblue: "#191970", lightpink: "#ffb6c1", mistyrose: "#ffe4e1", moccasin: "#ffe4b5", mintcream: "#f5fffa", lightslategray: "#778899", lightslategrey: "#778899", navajowhite: "#ffdead", navy: "#000080", mediumvioletred: "#c71585", powderblue: "#b0e0e6", palegoldenrod: "#eee8aa", oldlace: "#fdf5e6", paleturquoise: "#afeeee", mediumturquoise: "#48d1cc", mediumorchid: "#ba55d3", rebeccapurple: "#663399", lightsteelblue: "#b0c4de", mediumslateblue: "#7b68ee", thistle: "#d8bfd8", tan: "#d2b48c", orchid: "#da70d6", mediumpurple: "#9370db", purple: "#800080", pink: "#ffc0cb", skyblue: "#87ceeb", springgreen: "#00ff7f", palegreen: "#98fb98", red: "#ff0000", yellow: "#ffff00", slateblue: "#6a5acd", lavenderblush: "#fff0f5", peru: "#cd853f", palevioletred: "#db7093", violet: "#ee82ee", teal: "#008080", slategray: "#708090", slategrey: "#708090", aliceblue: "#f0f8ff", darkseagreen: "#8fbc8f", darkolivegreen: "#556b2f", greenyellow: "#adff2f", seagreen: "#2e8b57", seashell: "#fff5ee", tomato: "#ff6347", silver: "#c0c0c0", sienna: "#a0522d", lavender: "#e6e6fa", lightgreen: "#90ee90", orange: "#ffa500", orangered: "#ff4500", steelblue: "#4682b4", royalblue: "#4169e1", turquoise: "#40e0d0", yellowgreen: "#9acd32", salmon: "#fa8072", saddlebrown: "#8b4513", sandybrown: "#f4a460", rosybrown: "#bc8f8f", darksalmon: "#e9967a", lightgoldenrodyellow: "#fafad2", snow: "#fffafa", lightgrey: "#d3d3d3", lightgray: "#d3d3d3", dimgray: "#696969", dimgrey: "#696969", olivedrab: "#6b8e23", olive: "#808000" }, r = {}; + for (var d in a) + r[a[d]] = d; + var l = {}; + e.prototype.toName = function(f2) { + if (!(this.rgba.a || this.rgba.r || this.rgba.g || this.rgba.b)) + return "transparent"; + var d2, i, o = r[this.toHex()]; + if (o) + return o; + if (null == f2 ? void 0 : f2.closest) { + var n = this.toRgb(), t = 1 / 0, b = "black"; + if (!l.length) + for (var c in a) + l[c] = new e(a[c]).toRgb(); + for (var g in a) { + var u = (d2 = n, i = l[g], Math.pow(d2.r - i.r, 2) + Math.pow(d2.g - i.g, 2) + Math.pow(d2.b - i.b, 2)); + u < t && (t = u, b = g); + } + return b; + } + }; + f.string.push([function(f2) { + var r2 = f2.toLowerCase(), d2 = "transparent" === r2 ? "#0000" : a[r2]; + return d2 ? new e(d2).toRgb() : null; + }, "name"]); + }; + } +}); + +// node_modules/postcss-minify-gradients/src/isColorStop.js +var require_isColorStop = __commonJS({ + "node_modules/postcss-minify-gradients/src/isColorStop.js"(exports2, module2) { + "use strict"; + var { unit } = require_lib(); + var { colord, extend } = require_colord(); + var namesPlugin = require_names(); + extend([namesPlugin]); + var lengthUnits = /* @__PURE__ */ new Set([ + "PX", + "IN", + "CM", + "MM", + "EM", + "REM", + "POINTS", + "PC", + "EX", + "CH", + "VW", + "VH", + "VMIN", + "VMAX", + "%" + ]); + function isCSSLengthUnit(input) { + return lengthUnits.has(input.toUpperCase()); + } + function isStop(str) { + if (str) { + let stop = false; + const node = unit(str); + if (node) { + const number = Number(node.number); + if (number === 0 || !isNaN(number) && isCSSLengthUnit(node.unit)) { + stop = true; + } + } else { + stop = /^calc\(\S+\)$/g.test(str); + } + return stop; + } + return true; + } + module2.exports = function isColorStop(color, stop) { + return colord(color).isValid() && isStop(stop); + }; + } +}); + +// node_modules/postcss-minify-gradients/src/index.js +var require_src5 = __commonJS({ + "node_modules/postcss-minify-gradients/src/index.js"(exports2, module2) { + "use strict"; + var valueParser = require_lib(); + var { getArguments } = require_src4(); + var isColorStop = require_isColorStop(); + var angles = { + top: "0deg", + right: "90deg", + bottom: "180deg", + left: "270deg" + }; + function isLessThan(a, b) { + return a.unit.toLowerCase() === b.unit.toLowerCase() && parseFloat(a.number) >= parseFloat(b.number); + } + function optimise(decl) { + const value = decl.value; + if (!value) { + return; + } + const normalizedValue = value.toLowerCase(); + if (normalizedValue.includes("var(") || normalizedValue.includes("env(")) { + return; + } + if (!normalizedValue.includes("gradient")) { + return; + } + decl.value = valueParser(value).walk((node) => { + if (node.type !== "function" || !node.nodes.length) { + return false; + } + const lowerCasedValue = node.value.toLowerCase(); + if (lowerCasedValue === "linear-gradient" || lowerCasedValue === "repeating-linear-gradient" || lowerCasedValue === "-webkit-linear-gradient" || lowerCasedValue === "-webkit-repeating-linear-gradient") { + let args = getArguments(node); + if (node.nodes[0].value.toLowerCase() === "to" && args[0].length === 3) { + node.nodes = node.nodes.slice(2); + node.nodes[0].value = angles[node.nodes[0].value.toLowerCase()]; + } + let lastStop; + args.forEach((arg, index) => { + if (arg.length !== 3) { + return; + } + let isFinalStop = index === args.length - 1; + let thisStop = valueParser.unit(arg[2].value); + if (lastStop === void 0) { + lastStop = thisStop; + if (!isFinalStop && lastStop && lastStop.number === "0" && lastStop.unit.toLowerCase() !== "deg") { + arg[1].value = arg[2].value = ""; + } + return; + } + if (lastStop && thisStop && isLessThan(lastStop, thisStop)) { + arg[2].value = "0"; + } + lastStop = thisStop; + if (isFinalStop && arg[2].value === "100%") { + arg[1].value = arg[2].value = ""; + } + }); + return false; + } + if (lowerCasedValue === "radial-gradient" || lowerCasedValue === "repeating-radial-gradient") { + let args = getArguments(node); + let lastStop; + const hasAt = args[0].find((n) => n.value.toLowerCase() === "at"); + args.forEach((arg, index) => { + if (!arg[2] || !index && hasAt) { + return; + } + let thisStop = valueParser.unit(arg[2].value); + if (!lastStop) { + lastStop = thisStop; + return; + } + if (lastStop && thisStop && isLessThan(lastStop, thisStop)) { + arg[2].value = "0"; + } + lastStop = thisStop; + }); + return false; + } + if (lowerCasedValue === "-webkit-radial-gradient" || lowerCasedValue === "-webkit-repeating-radial-gradient") { + let args = getArguments(node); + let lastStop; + args.forEach((arg) => { + let color; + let stop; + if (arg[2] !== void 0) { + if (arg[0].type === "function") { + color = `${arg[0].value}(${valueParser.stringify(arg[0].nodes)})`; + } else { + color = arg[0].value; + } + if (arg[2].type === "function") { + stop = `${arg[2].value}(${valueParser.stringify(arg[2].nodes)})`; + } else { + stop = arg[2].value; + } + } else { + if (arg[0].type === "function") { + color = `${arg[0].value}(${valueParser.stringify(arg[0].nodes)})`; + } + color = arg[0].value; + } + color = color.toLowerCase(); + const colorStop = stop !== void 0 ? isColorStop(color, stop.toLowerCase()) : isColorStop(color); + if (!colorStop || !arg[2]) { + return; + } + let thisStop = valueParser.unit(arg[2].value); + if (!lastStop) { + lastStop = thisStop; + return; + } + if (lastStop && thisStop && isLessThan(lastStop, thisStop)) { + arg[2].value = "0"; + } + lastStop = thisStop; + }); + return false; + } + }).toString(); + } + function pluginCreator() { + return { + postcssPlugin: "postcss-minify-gradients", + OnceExit(css) { + css.walkDecls(optimise); + } + }; + } + pluginCreator.postcss = true; + module2.exports = pluginCreator; + } +}); + +// node_modules/domelementtype/lib/index.js +var require_lib2 = __commonJS({ + "node_modules/domelementtype/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Doctype = exports2.CDATA = exports2.Tag = exports2.Style = exports2.Script = exports2.Comment = exports2.Directive = exports2.Text = exports2.Root = exports2.isTag = exports2.ElementType = void 0; + var ElementType; + (function(ElementType2) { + ElementType2["Root"] = "root"; + ElementType2["Text"] = "text"; + ElementType2["Directive"] = "directive"; + ElementType2["Comment"] = "comment"; + ElementType2["Script"] = "script"; + ElementType2["Style"] = "style"; + ElementType2["Tag"] = "tag"; + ElementType2["CDATA"] = "cdata"; + ElementType2["Doctype"] = "doctype"; + })(ElementType = exports2.ElementType || (exports2.ElementType = {})); + function isTag(elem) { + return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style; + } + exports2.isTag = isTag; + exports2.Root = ElementType.Root; + exports2.Text = ElementType.Text; + exports2.Directive = ElementType.Directive; + exports2.Comment = ElementType.Comment; + exports2.Script = ElementType.Script; + exports2.Style = ElementType.Style; + exports2.Tag = ElementType.Tag; + exports2.CDATA = ElementType.CDATA; + exports2.Doctype = ElementType.Doctype; + } +}); + +// node_modules/domhandler/lib/node.js +var require_node3 = __commonJS({ + "node_modules/domhandler/lib/node.js"(exports2) { + "use strict"; + var __extends = exports2 && exports2.__extends || function() { + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) + if (Object.prototype.hasOwnProperty.call(b2, p)) + d2[p] = b2[p]; + }; + return extendStatics(d, b); + }; + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + }(); + var __assign = exports2 && exports2.__assign || function() { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.cloneNode = exports2.hasChildren = exports2.isDocument = exports2.isDirective = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = exports2.Element = exports2.Document = exports2.NodeWithChildren = exports2.ProcessingInstruction = exports2.Comment = exports2.Text = exports2.DataNode = exports2.Node = void 0; + var domelementtype_1 = require_lib2(); + var nodeTypes = /* @__PURE__ */ new Map([ + [domelementtype_1.ElementType.Tag, 1], + [domelementtype_1.ElementType.Script, 1], + [domelementtype_1.ElementType.Style, 1], + [domelementtype_1.ElementType.Directive, 1], + [domelementtype_1.ElementType.Text, 3], + [domelementtype_1.ElementType.CDATA, 4], + [domelementtype_1.ElementType.Comment, 8], + [domelementtype_1.ElementType.Root, 9] + ]); + var Node = function() { + function Node2(type) { + this.type = type; + this.parent = null; + this.prev = null; + this.next = null; + this.startIndex = null; + this.endIndex = null; + } + Object.defineProperty(Node2.prototype, "nodeType", { + get: function() { + var _a; + return (_a = nodeTypes.get(this.type)) !== null && _a !== void 0 ? _a : 1; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Node2.prototype, "parentNode", { + get: function() { + return this.parent; + }, + set: function(parent) { + this.parent = parent; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Node2.prototype, "previousSibling", { + get: function() { + return this.prev; + }, + set: function(prev) { + this.prev = prev; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Node2.prototype, "nextSibling", { + get: function() { + return this.next; + }, + set: function(next) { + this.next = next; + }, + enumerable: false, + configurable: true + }); + Node2.prototype.cloneNode = function(recursive) { + if (recursive === void 0) { + recursive = false; + } + return cloneNode(this, recursive); + }; + return Node2; + }(); + exports2.Node = Node; + var DataNode = function(_super) { + __extends(DataNode2, _super); + function DataNode2(type, data) { + var _this = _super.call(this, type) || this; + _this.data = data; + return _this; + } + Object.defineProperty(DataNode2.prototype, "nodeValue", { + get: function() { + return this.data; + }, + set: function(data) { + this.data = data; + }, + enumerable: false, + configurable: true + }); + return DataNode2; + }(Node); + exports2.DataNode = DataNode; + var Text = function(_super) { + __extends(Text2, _super); + function Text2(data) { + return _super.call(this, domelementtype_1.ElementType.Text, data) || this; + } + return Text2; + }(DataNode); + exports2.Text = Text; + var Comment = function(_super) { + __extends(Comment2, _super); + function Comment2(data) { + return _super.call(this, domelementtype_1.ElementType.Comment, data) || this; + } + return Comment2; + }(DataNode); + exports2.Comment = Comment; + var ProcessingInstruction = function(_super) { + __extends(ProcessingInstruction2, _super); + function ProcessingInstruction2(name, data) { + var _this = _super.call(this, domelementtype_1.ElementType.Directive, data) || this; + _this.name = name; + return _this; + } + return ProcessingInstruction2; + }(DataNode); + exports2.ProcessingInstruction = ProcessingInstruction; + var NodeWithChildren = function(_super) { + __extends(NodeWithChildren2, _super); + function NodeWithChildren2(type, children) { + var _this = _super.call(this, type) || this; + _this.children = children; + return _this; + } + Object.defineProperty(NodeWithChildren2.prototype, "firstChild", { + get: function() { + var _a; + return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(NodeWithChildren2.prototype, "lastChild", { + get: function() { + return this.children.length > 0 ? this.children[this.children.length - 1] : null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(NodeWithChildren2.prototype, "childNodes", { + get: function() { + return this.children; + }, + set: function(children) { + this.children = children; + }, + enumerable: false, + configurable: true + }); + return NodeWithChildren2; + }(Node); + exports2.NodeWithChildren = NodeWithChildren; + var Document = function(_super) { + __extends(Document2, _super); + function Document2(children) { + return _super.call(this, domelementtype_1.ElementType.Root, children) || this; + } + return Document2; + }(NodeWithChildren); + exports2.Document = Document; + var Element = function(_super) { + __extends(Element2, _super); + function Element2(name, attribs, children, type) { + if (children === void 0) { + children = []; + } + if (type === void 0) { + type = name === "script" ? domelementtype_1.ElementType.Script : name === "style" ? domelementtype_1.ElementType.Style : domelementtype_1.ElementType.Tag; + } + var _this = _super.call(this, type, children) || this; + _this.name = name; + _this.attribs = attribs; + return _this; + } + Object.defineProperty(Element2.prototype, "tagName", { + get: function() { + return this.name; + }, + set: function(name) { + this.name = name; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Element2.prototype, "attributes", { + get: function() { + var _this = this; + return Object.keys(this.attribs).map(function(name) { + var _a, _b; + return { + name, + value: _this.attribs[name], + namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name], + prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name] + }; + }); + }, + enumerable: false, + configurable: true + }); + return Element2; + }(NodeWithChildren); + exports2.Element = Element; + function isTag(node) { + return (0, domelementtype_1.isTag)(node); + } + exports2.isTag = isTag; + function isCDATA(node) { + return node.type === domelementtype_1.ElementType.CDATA; + } + exports2.isCDATA = isCDATA; + function isText(node) { + return node.type === domelementtype_1.ElementType.Text; + } + exports2.isText = isText; + function isComment(node) { + return node.type === domelementtype_1.ElementType.Comment; + } + exports2.isComment = isComment; + function isDirective(node) { + return node.type === domelementtype_1.ElementType.Directive; + } + exports2.isDirective = isDirective; + function isDocument(node) { + return node.type === domelementtype_1.ElementType.Root; + } + exports2.isDocument = isDocument; + function hasChildren(node) { + return Object.prototype.hasOwnProperty.call(node, "children"); + } + exports2.hasChildren = hasChildren; + function cloneNode(node, recursive) { + if (recursive === void 0) { + recursive = false; + } + var result; + if (isText(node)) { + result = new Text(node.data); + } else if (isComment(node)) { + result = new Comment(node.data); + } else if (isTag(node)) { + var children = recursive ? cloneChildren(node.children) : []; + var clone_1 = new Element(node.name, __assign({}, node.attribs), children); + children.forEach(function(child) { + return child.parent = clone_1; + }); + if (node.namespace != null) { + clone_1.namespace = node.namespace; + } + if (node["x-attribsNamespace"]) { + clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]); + } + if (node["x-attribsPrefix"]) { + clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]); + } + result = clone_1; + } else if (isCDATA(node)) { + var children = recursive ? cloneChildren(node.children) : []; + var clone_2 = new NodeWithChildren(domelementtype_1.ElementType.CDATA, children); + children.forEach(function(child) { + return child.parent = clone_2; + }); + result = clone_2; + } else if (isDocument(node)) { + var children = recursive ? cloneChildren(node.children) : []; + var clone_3 = new Document(children); + children.forEach(function(child) { + return child.parent = clone_3; + }); + if (node["x-mode"]) { + clone_3["x-mode"] = node["x-mode"]; + } + result = clone_3; + } else if (isDirective(node)) { + var instruction = new ProcessingInstruction(node.name, node.data); + if (node["x-name"] != null) { + instruction["x-name"] = node["x-name"]; + instruction["x-publicId"] = node["x-publicId"]; + instruction["x-systemId"] = node["x-systemId"]; + } + result = instruction; + } else { + throw new Error("Not implemented yet: ".concat(node.type)); + } + result.startIndex = node.startIndex; + result.endIndex = node.endIndex; + if (node.sourceCodeLocation != null) { + result.sourceCodeLocation = node.sourceCodeLocation; + } + return result; + } + exports2.cloneNode = cloneNode; + function cloneChildren(childs) { + var children = childs.map(function(child) { + return cloneNode(child, true); + }); + for (var i = 1; i < children.length; i++) { + children[i].prev = children[i - 1]; + children[i - 1].next = children[i]; + } + return children; + } + } +}); + +// node_modules/domhandler/lib/index.js +var require_lib3 = __commonJS({ + "node_modules/domhandler/lib/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + 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 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) + __createBinding(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DomHandler = void 0; + var domelementtype_1 = require_lib2(); + var node_1 = require_node3(); + __exportStar(require_node3(), exports2); + var reWhitespace = /\s+/g; + var defaultOpts = { + normalizeWhitespace: false, + withStartIndices: false, + withEndIndices: false, + xmlMode: false + }; + var DomHandler = function() { + function DomHandler2(callback, options, elementCB) { + this.dom = []; + this.root = new node_1.Document(this.dom); + this.done = false; + this.tagStack = [this.root]; + this.lastNode = null; + this.parser = null; + if (typeof options === "function") { + elementCB = options; + options = defaultOpts; + } + if (typeof callback === "object") { + options = callback; + callback = void 0; + } + this.callback = callback !== null && callback !== void 0 ? callback : null; + this.options = options !== null && options !== void 0 ? options : defaultOpts; + this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null; + } + DomHandler2.prototype.onparserinit = function(parser) { + this.parser = parser; + }; + DomHandler2.prototype.onreset = function() { + this.dom = []; + this.root = new node_1.Document(this.dom); + this.done = false; + this.tagStack = [this.root]; + this.lastNode = null; + this.parser = null; + }; + DomHandler2.prototype.onend = function() { + if (this.done) + return; + this.done = true; + this.parser = null; + this.handleCallback(null); + }; + DomHandler2.prototype.onerror = function(error) { + this.handleCallback(error); + }; + DomHandler2.prototype.onclosetag = function() { + this.lastNode = null; + var elem = this.tagStack.pop(); + if (this.options.withEndIndices) { + elem.endIndex = this.parser.endIndex; + } + if (this.elementCB) + this.elementCB(elem); + }; + DomHandler2.prototype.onopentag = function(name, attribs) { + var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : void 0; + var element = new node_1.Element(name, attribs, void 0, type); + this.addNode(element); + this.tagStack.push(element); + }; + DomHandler2.prototype.ontext = function(data) { + var normalizeWhitespace = this.options.normalizeWhitespace; + var lastNode = this.lastNode; + if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) { + if (normalizeWhitespace) { + lastNode.data = (lastNode.data + data).replace(reWhitespace, " "); + } else { + lastNode.data += data; + } + if (this.options.withEndIndices) { + lastNode.endIndex = this.parser.endIndex; + } + } else { + if (normalizeWhitespace) { + data = data.replace(reWhitespace, " "); + } + var node = new node_1.Text(data); + this.addNode(node); + this.lastNode = node; + } + }; + DomHandler2.prototype.oncomment = function(data) { + if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) { + this.lastNode.data += data; + return; + } + var node = new node_1.Comment(data); + this.addNode(node); + this.lastNode = node; + }; + DomHandler2.prototype.oncommentend = function() { + this.lastNode = null; + }; + DomHandler2.prototype.oncdatastart = function() { + var text = new node_1.Text(""); + var node = new node_1.NodeWithChildren(domelementtype_1.ElementType.CDATA, [text]); + this.addNode(node); + text.parent = node; + this.lastNode = text; + }; + DomHandler2.prototype.oncdataend = function() { + this.lastNode = null; + }; + DomHandler2.prototype.onprocessinginstruction = function(name, data) { + var node = new node_1.ProcessingInstruction(name, data); + this.addNode(node); + }; + DomHandler2.prototype.handleCallback = function(error) { + if (typeof this.callback === "function") { + this.callback(error, this.dom); + } else if (error) { + throw error; + } + }; + DomHandler2.prototype.addNode = function(node) { + var parent = this.tagStack[this.tagStack.length - 1]; + var previousSibling = parent.children[parent.children.length - 1]; + if (this.options.withStartIndices) { + node.startIndex = this.parser.startIndex; + } + if (this.options.withEndIndices) { + node.endIndex = this.parser.endIndex; + } + parent.children.push(node); + if (previousSibling) { + node.prev = previousSibling; + previousSibling.next = node; + } + node.parent = parent; + this.lastNode = null; + }; + return DomHandler2; + }(); + exports2.DomHandler = DomHandler; + exports2.default = DomHandler; + } +}); + +// node_modules/entities/lib/maps/entities.json +var require_entities = __commonJS({ + "node_modules/entities/lib/maps/entities.json"(exports2, module2) { + module2.exports = { Aacute: "\xC1", aacute: "\xE1", Abreve: "\u0102", abreve: "\u0103", ac: "\u223E", acd: "\u223F", acE: "\u223E\u0333", Acirc: "\xC2", acirc: "\xE2", acute: "\xB4", Acy: "\u0410", acy: "\u0430", AElig: "\xC6", aelig: "\xE6", af: "\u2061", Afr: "\u{1D504}", afr: "\u{1D51E}", Agrave: "\xC0", agrave: "\xE0", alefsym: "\u2135", aleph: "\u2135", Alpha: "\u0391", alpha: "\u03B1", Amacr: "\u0100", amacr: "\u0101", amalg: "\u2A3F", amp: "&", AMP: "&", andand: "\u2A55", And: "\u2A53", and: "\u2227", andd: "\u2A5C", andslope: "\u2A58", andv: "\u2A5A", ang: "\u2220", ange: "\u29A4", angle: "\u2220", angmsdaa: "\u29A8", angmsdab: "\u29A9", angmsdac: "\u29AA", angmsdad: "\u29AB", angmsdae: "\u29AC", angmsdaf: "\u29AD", angmsdag: "\u29AE", angmsdah: "\u29AF", angmsd: "\u2221", angrt: "\u221F", angrtvb: "\u22BE", angrtvbd: "\u299D", angsph: "\u2222", angst: "\xC5", angzarr: "\u237C", Aogon: "\u0104", aogon: "\u0105", Aopf: "\u{1D538}", aopf: "\u{1D552}", apacir: "\u2A6F", ap: "\u2248", apE: "\u2A70", ape: "\u224A", apid: "\u224B", apos: "'", ApplyFunction: "\u2061", approx: "\u2248", approxeq: "\u224A", Aring: "\xC5", aring: "\xE5", Ascr: "\u{1D49C}", ascr: "\u{1D4B6}", Assign: "\u2254", ast: "*", asymp: "\u2248", asympeq: "\u224D", Atilde: "\xC3", atilde: "\xE3", Auml: "\xC4", auml: "\xE4", awconint: "\u2233", awint: "\u2A11", backcong: "\u224C", backepsilon: "\u03F6", backprime: "\u2035", backsim: "\u223D", backsimeq: "\u22CD", Backslash: "\u2216", Barv: "\u2AE7", barvee: "\u22BD", barwed: "\u2305", Barwed: "\u2306", barwedge: "\u2305", bbrk: "\u23B5", bbrktbrk: "\u23B6", bcong: "\u224C", Bcy: "\u0411", bcy: "\u0431", bdquo: "\u201E", becaus: "\u2235", because: "\u2235", Because: "\u2235", bemptyv: "\u29B0", bepsi: "\u03F6", bernou: "\u212C", Bernoullis: "\u212C", Beta: "\u0392", beta: "\u03B2", beth: "\u2136", between: "\u226C", Bfr: "\u{1D505}", bfr: "\u{1D51F}", bigcap: "\u22C2", bigcirc: "\u25EF", bigcup: "\u22C3", bigodot: "\u2A00", bigoplus: "\u2A01", bigotimes: "\u2A02", bigsqcup: "\u2A06", bigstar: "\u2605", bigtriangledown: "\u25BD", bigtriangleup: "\u25B3", biguplus: "\u2A04", bigvee: "\u22C1", bigwedge: "\u22C0", bkarow: "\u290D", blacklozenge: "\u29EB", blacksquare: "\u25AA", blacktriangle: "\u25B4", blacktriangledown: "\u25BE", blacktriangleleft: "\u25C2", blacktriangleright: "\u25B8", blank: "\u2423", blk12: "\u2592", blk14: "\u2591", blk34: "\u2593", block: "\u2588", bne: "=\u20E5", bnequiv: "\u2261\u20E5", bNot: "\u2AED", bnot: "\u2310", Bopf: "\u{1D539}", bopf: "\u{1D553}", bot: "\u22A5", bottom: "\u22A5", bowtie: "\u22C8", boxbox: "\u29C9", boxdl: "\u2510", boxdL: "\u2555", boxDl: "\u2556", boxDL: "\u2557", boxdr: "\u250C", boxdR: "\u2552", boxDr: "\u2553", boxDR: "\u2554", boxh: "\u2500", boxH: "\u2550", boxhd: "\u252C", boxHd: "\u2564", boxhD: "\u2565", boxHD: "\u2566", boxhu: "\u2534", boxHu: "\u2567", boxhU: "\u2568", boxHU: "\u2569", boxminus: "\u229F", boxplus: "\u229E", boxtimes: "\u22A0", boxul: "\u2518", boxuL: "\u255B", boxUl: "\u255C", boxUL: "\u255D", boxur: "\u2514", boxuR: "\u2558", boxUr: "\u2559", boxUR: "\u255A", boxv: "\u2502", boxV: "\u2551", boxvh: "\u253C", boxvH: "\u256A", boxVh: "\u256B", boxVH: "\u256C", boxvl: "\u2524", boxvL: "\u2561", boxVl: "\u2562", boxVL: "\u2563", boxvr: "\u251C", boxvR: "\u255E", boxVr: "\u255F", boxVR: "\u2560", bprime: "\u2035", breve: "\u02D8", Breve: "\u02D8", brvbar: "\xA6", bscr: "\u{1D4B7}", Bscr: "\u212C", bsemi: "\u204F", bsim: "\u223D", bsime: "\u22CD", bsolb: "\u29C5", bsol: "\\", bsolhsub: "\u27C8", bull: "\u2022", bullet: "\u2022", bump: "\u224E", bumpE: "\u2AAE", bumpe: "\u224F", Bumpeq: "\u224E", bumpeq: "\u224F", Cacute: "\u0106", cacute: "\u0107", capand: "\u2A44", capbrcup: "\u2A49", capcap: "\u2A4B", cap: "\u2229", Cap: "\u22D2", capcup: "\u2A47", capdot: "\u2A40", CapitalDifferentialD: "\u2145", caps: "\u2229\uFE00", caret: "\u2041", caron: "\u02C7", Cayleys: "\u212D", ccaps: "\u2A4D", Ccaron: "\u010C", ccaron: "\u010D", Ccedil: "\xC7", ccedil: "\xE7", Ccirc: "\u0108", ccirc: "\u0109", Cconint: "\u2230", ccups: "\u2A4C", ccupssm: "\u2A50", Cdot: "\u010A", cdot: "\u010B", cedil: "\xB8", Cedilla: "\xB8", cemptyv: "\u29B2", cent: "\xA2", centerdot: "\xB7", CenterDot: "\xB7", cfr: "\u{1D520}", Cfr: "\u212D", CHcy: "\u0427", chcy: "\u0447", check: "\u2713", checkmark: "\u2713", Chi: "\u03A7", chi: "\u03C7", circ: "\u02C6", circeq: "\u2257", circlearrowleft: "\u21BA", circlearrowright: "\u21BB", circledast: "\u229B", circledcirc: "\u229A", circleddash: "\u229D", CircleDot: "\u2299", circledR: "\xAE", circledS: "\u24C8", CircleMinus: "\u2296", CirclePlus: "\u2295", CircleTimes: "\u2297", cir: "\u25CB", cirE: "\u29C3", cire: "\u2257", cirfnint: "\u2A10", cirmid: "\u2AEF", cirscir: "\u29C2", ClockwiseContourIntegral: "\u2232", CloseCurlyDoubleQuote: "\u201D", CloseCurlyQuote: "\u2019", clubs: "\u2663", clubsuit: "\u2663", colon: ":", Colon: "\u2237", Colone: "\u2A74", colone: "\u2254", coloneq: "\u2254", comma: ",", commat: "@", comp: "\u2201", compfn: "\u2218", complement: "\u2201", complexes: "\u2102", cong: "\u2245", congdot: "\u2A6D", Congruent: "\u2261", conint: "\u222E", Conint: "\u222F", ContourIntegral: "\u222E", copf: "\u{1D554}", Copf: "\u2102", coprod: "\u2210", Coproduct: "\u2210", copy: "\xA9", COPY: "\xA9", copysr: "\u2117", CounterClockwiseContourIntegral: "\u2233", crarr: "\u21B5", cross: "\u2717", Cross: "\u2A2F", Cscr: "\u{1D49E}", cscr: "\u{1D4B8}", csub: "\u2ACF", csube: "\u2AD1", csup: "\u2AD0", csupe: "\u2AD2", ctdot: "\u22EF", cudarrl: "\u2938", cudarrr: "\u2935", cuepr: "\u22DE", cuesc: "\u22DF", cularr: "\u21B6", cularrp: "\u293D", cupbrcap: "\u2A48", cupcap: "\u2A46", CupCap: "\u224D", cup: "\u222A", Cup: "\u22D3", cupcup: "\u2A4A", cupdot: "\u228D", cupor: "\u2A45", cups: "\u222A\uFE00", curarr: "\u21B7", curarrm: "\u293C", curlyeqprec: "\u22DE", curlyeqsucc: "\u22DF", curlyvee: "\u22CE", curlywedge: "\u22CF", curren: "\xA4", curvearrowleft: "\u21B6", curvearrowright: "\u21B7", cuvee: "\u22CE", cuwed: "\u22CF", cwconint: "\u2232", cwint: "\u2231", cylcty: "\u232D", dagger: "\u2020", Dagger: "\u2021", daleth: "\u2138", darr: "\u2193", Darr: "\u21A1", dArr: "\u21D3", dash: "\u2010", Dashv: "\u2AE4", dashv: "\u22A3", dbkarow: "\u290F", dblac: "\u02DD", Dcaron: "\u010E", dcaron: "\u010F", Dcy: "\u0414", dcy: "\u0434", ddagger: "\u2021", ddarr: "\u21CA", DD: "\u2145", dd: "\u2146", DDotrahd: "\u2911", ddotseq: "\u2A77", deg: "\xB0", Del: "\u2207", Delta: "\u0394", delta: "\u03B4", demptyv: "\u29B1", dfisht: "\u297F", Dfr: "\u{1D507}", dfr: "\u{1D521}", dHar: "\u2965", dharl: "\u21C3", dharr: "\u21C2", DiacriticalAcute: "\xB4", DiacriticalDot: "\u02D9", DiacriticalDoubleAcute: "\u02DD", DiacriticalGrave: "`", DiacriticalTilde: "\u02DC", diam: "\u22C4", diamond: "\u22C4", Diamond: "\u22C4", diamondsuit: "\u2666", diams: "\u2666", die: "\xA8", DifferentialD: "\u2146", digamma: "\u03DD", disin: "\u22F2", div: "\xF7", divide: "\xF7", divideontimes: "\u22C7", divonx: "\u22C7", DJcy: "\u0402", djcy: "\u0452", dlcorn: "\u231E", dlcrop: "\u230D", dollar: "$", Dopf: "\u{1D53B}", dopf: "\u{1D555}", Dot: "\xA8", dot: "\u02D9", DotDot: "\u20DC", doteq: "\u2250", doteqdot: "\u2251", DotEqual: "\u2250", dotminus: "\u2238", dotplus: "\u2214", dotsquare: "\u22A1", doublebarwedge: "\u2306", DoubleContourIntegral: "\u222F", DoubleDot: "\xA8", DoubleDownArrow: "\u21D3", DoubleLeftArrow: "\u21D0", DoubleLeftRightArrow: "\u21D4", DoubleLeftTee: "\u2AE4", DoubleLongLeftArrow: "\u27F8", DoubleLongLeftRightArrow: "\u27FA", DoubleLongRightArrow: "\u27F9", DoubleRightArrow: "\u21D2", DoubleRightTee: "\u22A8", DoubleUpArrow: "\u21D1", DoubleUpDownArrow: "\u21D5", DoubleVerticalBar: "\u2225", DownArrowBar: "\u2913", downarrow: "\u2193", DownArrow: "\u2193", Downarrow: "\u21D3", DownArrowUpArrow: "\u21F5", DownBreve: "\u0311", downdownarrows: "\u21CA", downharpoonleft: "\u21C3", downharpoonright: "\u21C2", DownLeftRightVector: "\u2950", DownLeftTeeVector: "\u295E", DownLeftVectorBar: "\u2956", DownLeftVector: "\u21BD", DownRightTeeVector: "\u295F", DownRightVectorBar: "\u2957", DownRightVector: "\u21C1", DownTeeArrow: "\u21A7", DownTee: "\u22A4", drbkarow: "\u2910", drcorn: "\u231F", drcrop: "\u230C", Dscr: "\u{1D49F}", dscr: "\u{1D4B9}", DScy: "\u0405", dscy: "\u0455", dsol: "\u29F6", Dstrok: "\u0110", dstrok: "\u0111", dtdot: "\u22F1", dtri: "\u25BF", dtrif: "\u25BE", duarr: "\u21F5", duhar: "\u296F", dwangle: "\u29A6", DZcy: "\u040F", dzcy: "\u045F", dzigrarr: "\u27FF", Eacute: "\xC9", eacute: "\xE9", easter: "\u2A6E", Ecaron: "\u011A", ecaron: "\u011B", Ecirc: "\xCA", ecirc: "\xEA", ecir: "\u2256", ecolon: "\u2255", Ecy: "\u042D", ecy: "\u044D", eDDot: "\u2A77", Edot: "\u0116", edot: "\u0117", eDot: "\u2251", ee: "\u2147", efDot: "\u2252", Efr: "\u{1D508}", efr: "\u{1D522}", eg: "\u2A9A", Egrave: "\xC8", egrave: "\xE8", egs: "\u2A96", egsdot: "\u2A98", el: "\u2A99", Element: "\u2208", elinters: "\u23E7", ell: "\u2113", els: "\u2A95", elsdot: "\u2A97", Emacr: "\u0112", emacr: "\u0113", empty: "\u2205", emptyset: "\u2205", EmptySmallSquare: "\u25FB", emptyv: "\u2205", EmptyVerySmallSquare: "\u25AB", emsp13: "\u2004", emsp14: "\u2005", emsp: "\u2003", ENG: "\u014A", eng: "\u014B", ensp: "\u2002", Eogon: "\u0118", eogon: "\u0119", Eopf: "\u{1D53C}", eopf: "\u{1D556}", epar: "\u22D5", eparsl: "\u29E3", eplus: "\u2A71", epsi: "\u03B5", Epsilon: "\u0395", epsilon: "\u03B5", epsiv: "\u03F5", eqcirc: "\u2256", eqcolon: "\u2255", eqsim: "\u2242", eqslantgtr: "\u2A96", eqslantless: "\u2A95", Equal: "\u2A75", equals: "=", EqualTilde: "\u2242", equest: "\u225F", Equilibrium: "\u21CC", equiv: "\u2261", equivDD: "\u2A78", eqvparsl: "\u29E5", erarr: "\u2971", erDot: "\u2253", escr: "\u212F", Escr: "\u2130", esdot: "\u2250", Esim: "\u2A73", esim: "\u2242", Eta: "\u0397", eta: "\u03B7", ETH: "\xD0", eth: "\xF0", Euml: "\xCB", euml: "\xEB", euro: "\u20AC", excl: "!", exist: "\u2203", Exists: "\u2203", expectation: "\u2130", exponentiale: "\u2147", ExponentialE: "\u2147", fallingdotseq: "\u2252", Fcy: "\u0424", fcy: "\u0444", female: "\u2640", ffilig: "\uFB03", fflig: "\uFB00", ffllig: "\uFB04", Ffr: "\u{1D509}", ffr: "\u{1D523}", filig: "\uFB01", FilledSmallSquare: "\u25FC", FilledVerySmallSquare: "\u25AA", fjlig: "fj", flat: "\u266D", fllig: "\uFB02", fltns: "\u25B1", fnof: "\u0192", Fopf: "\u{1D53D}", fopf: "\u{1D557}", forall: "\u2200", ForAll: "\u2200", fork: "\u22D4", forkv: "\u2AD9", Fouriertrf: "\u2131", fpartint: "\u2A0D", frac12: "\xBD", frac13: "\u2153", frac14: "\xBC", frac15: "\u2155", frac16: "\u2159", frac18: "\u215B", frac23: "\u2154", frac25: "\u2156", frac34: "\xBE", frac35: "\u2157", frac38: "\u215C", frac45: "\u2158", frac56: "\u215A", frac58: "\u215D", frac78: "\u215E", frasl: "\u2044", frown: "\u2322", fscr: "\u{1D4BB}", Fscr: "\u2131", gacute: "\u01F5", Gamma: "\u0393", gamma: "\u03B3", Gammad: "\u03DC", gammad: "\u03DD", gap: "\u2A86", Gbreve: "\u011E", gbreve: "\u011F", Gcedil: "\u0122", Gcirc: "\u011C", gcirc: "\u011D", Gcy: "\u0413", gcy: "\u0433", Gdot: "\u0120", gdot: "\u0121", ge: "\u2265", gE: "\u2267", gEl: "\u2A8C", gel: "\u22DB", geq: "\u2265", geqq: "\u2267", geqslant: "\u2A7E", gescc: "\u2AA9", ges: "\u2A7E", gesdot: "\u2A80", gesdoto: "\u2A82", gesdotol: "\u2A84", gesl: "\u22DB\uFE00", gesles: "\u2A94", Gfr: "\u{1D50A}", gfr: "\u{1D524}", gg: "\u226B", Gg: "\u22D9", ggg: "\u22D9", gimel: "\u2137", GJcy: "\u0403", gjcy: "\u0453", gla: "\u2AA5", gl: "\u2277", glE: "\u2A92", glj: "\u2AA4", gnap: "\u2A8A", gnapprox: "\u2A8A", gne: "\u2A88", gnE: "\u2269", gneq: "\u2A88", gneqq: "\u2269", gnsim: "\u22E7", Gopf: "\u{1D53E}", gopf: "\u{1D558}", grave: "`", GreaterEqual: "\u2265", GreaterEqualLess: "\u22DB", GreaterFullEqual: "\u2267", GreaterGreater: "\u2AA2", GreaterLess: "\u2277", GreaterSlantEqual: "\u2A7E", GreaterTilde: "\u2273", Gscr: "\u{1D4A2}", gscr: "\u210A", gsim: "\u2273", gsime: "\u2A8E", gsiml: "\u2A90", gtcc: "\u2AA7", gtcir: "\u2A7A", gt: ">", GT: ">", Gt: "\u226B", gtdot: "\u22D7", gtlPar: "\u2995", gtquest: "\u2A7C", gtrapprox: "\u2A86", gtrarr: "\u2978", gtrdot: "\u22D7", gtreqless: "\u22DB", gtreqqless: "\u2A8C", gtrless: "\u2277", gtrsim: "\u2273", gvertneqq: "\u2269\uFE00", gvnE: "\u2269\uFE00", Hacek: "\u02C7", hairsp: "\u200A", half: "\xBD", hamilt: "\u210B", HARDcy: "\u042A", hardcy: "\u044A", harrcir: "\u2948", harr: "\u2194", hArr: "\u21D4", harrw: "\u21AD", Hat: "^", hbar: "\u210F", Hcirc: "\u0124", hcirc: "\u0125", hearts: "\u2665", heartsuit: "\u2665", hellip: "\u2026", hercon: "\u22B9", hfr: "\u{1D525}", Hfr: "\u210C", HilbertSpace: "\u210B", hksearow: "\u2925", hkswarow: "\u2926", hoarr: "\u21FF", homtht: "\u223B", hookleftarrow: "\u21A9", hookrightarrow: "\u21AA", hopf: "\u{1D559}", Hopf: "\u210D", horbar: "\u2015", HorizontalLine: "\u2500", hscr: "\u{1D4BD}", Hscr: "\u210B", hslash: "\u210F", Hstrok: "\u0126", hstrok: "\u0127", HumpDownHump: "\u224E", HumpEqual: "\u224F", hybull: "\u2043", hyphen: "\u2010", Iacute: "\xCD", iacute: "\xED", ic: "\u2063", Icirc: "\xCE", icirc: "\xEE", Icy: "\u0418", icy: "\u0438", Idot: "\u0130", IEcy: "\u0415", iecy: "\u0435", iexcl: "\xA1", iff: "\u21D4", ifr: "\u{1D526}", Ifr: "\u2111", Igrave: "\xCC", igrave: "\xEC", ii: "\u2148", iiiint: "\u2A0C", iiint: "\u222D", iinfin: "\u29DC", iiota: "\u2129", IJlig: "\u0132", ijlig: "\u0133", Imacr: "\u012A", imacr: "\u012B", image: "\u2111", ImaginaryI: "\u2148", imagline: "\u2110", imagpart: "\u2111", imath: "\u0131", Im: "\u2111", imof: "\u22B7", imped: "\u01B5", Implies: "\u21D2", incare: "\u2105", in: "\u2208", infin: "\u221E", infintie: "\u29DD", inodot: "\u0131", intcal: "\u22BA", int: "\u222B", Int: "\u222C", integers: "\u2124", Integral: "\u222B", intercal: "\u22BA", Intersection: "\u22C2", intlarhk: "\u2A17", intprod: "\u2A3C", InvisibleComma: "\u2063", InvisibleTimes: "\u2062", IOcy: "\u0401", iocy: "\u0451", Iogon: "\u012E", iogon: "\u012F", Iopf: "\u{1D540}", iopf: "\u{1D55A}", Iota: "\u0399", iota: "\u03B9", iprod: "\u2A3C", iquest: "\xBF", iscr: "\u{1D4BE}", Iscr: "\u2110", isin: "\u2208", isindot: "\u22F5", isinE: "\u22F9", isins: "\u22F4", isinsv: "\u22F3", isinv: "\u2208", it: "\u2062", Itilde: "\u0128", itilde: "\u0129", Iukcy: "\u0406", iukcy: "\u0456", Iuml: "\xCF", iuml: "\xEF", Jcirc: "\u0134", jcirc: "\u0135", Jcy: "\u0419", jcy: "\u0439", Jfr: "\u{1D50D}", jfr: "\u{1D527}", jmath: "\u0237", Jopf: "\u{1D541}", jopf: "\u{1D55B}", Jscr: "\u{1D4A5}", jscr: "\u{1D4BF}", Jsercy: "\u0408", jsercy: "\u0458", Jukcy: "\u0404", jukcy: "\u0454", Kappa: "\u039A", kappa: "\u03BA", kappav: "\u03F0", Kcedil: "\u0136", kcedil: "\u0137", Kcy: "\u041A", kcy: "\u043A", Kfr: "\u{1D50E}", kfr: "\u{1D528}", kgreen: "\u0138", KHcy: "\u0425", khcy: "\u0445", KJcy: "\u040C", kjcy: "\u045C", Kopf: "\u{1D542}", kopf: "\u{1D55C}", Kscr: "\u{1D4A6}", kscr: "\u{1D4C0}", lAarr: "\u21DA", Lacute: "\u0139", lacute: "\u013A", laemptyv: "\u29B4", lagran: "\u2112", Lambda: "\u039B", lambda: "\u03BB", lang: "\u27E8", Lang: "\u27EA", langd: "\u2991", langle: "\u27E8", lap: "\u2A85", Laplacetrf: "\u2112", laquo: "\xAB", larrb: "\u21E4", larrbfs: "\u291F", larr: "\u2190", Larr: "\u219E", lArr: "\u21D0", larrfs: "\u291D", larrhk: "\u21A9", larrlp: "\u21AB", larrpl: "\u2939", larrsim: "\u2973", larrtl: "\u21A2", latail: "\u2919", lAtail: "\u291B", lat: "\u2AAB", late: "\u2AAD", lates: "\u2AAD\uFE00", lbarr: "\u290C", lBarr: "\u290E", lbbrk: "\u2772", lbrace: "{", lbrack: "[", lbrke: "\u298B", lbrksld: "\u298F", lbrkslu: "\u298D", Lcaron: "\u013D", lcaron: "\u013E", Lcedil: "\u013B", lcedil: "\u013C", lceil: "\u2308", lcub: "{", Lcy: "\u041B", lcy: "\u043B", ldca: "\u2936", ldquo: "\u201C", ldquor: "\u201E", ldrdhar: "\u2967", ldrushar: "\u294B", ldsh: "\u21B2", le: "\u2264", lE: "\u2266", LeftAngleBracket: "\u27E8", LeftArrowBar: "\u21E4", leftarrow: "\u2190", LeftArrow: "\u2190", Leftarrow: "\u21D0", LeftArrowRightArrow: "\u21C6", leftarrowtail: "\u21A2", LeftCeiling: "\u2308", LeftDoubleBracket: "\u27E6", LeftDownTeeVector: "\u2961", LeftDownVectorBar: "\u2959", LeftDownVector: "\u21C3", LeftFloor: "\u230A", leftharpoondown: "\u21BD", leftharpoonup: "\u21BC", leftleftarrows: "\u21C7", leftrightarrow: "\u2194", LeftRightArrow: "\u2194", Leftrightarrow: "\u21D4", leftrightarrows: "\u21C6", leftrightharpoons: "\u21CB", leftrightsquigarrow: "\u21AD", LeftRightVector: "\u294E", LeftTeeArrow: "\u21A4", LeftTee: "\u22A3", LeftTeeVector: "\u295A", leftthreetimes: "\u22CB", LeftTriangleBar: "\u29CF", LeftTriangle: "\u22B2", LeftTriangleEqual: "\u22B4", LeftUpDownVector: "\u2951", LeftUpTeeVector: "\u2960", LeftUpVectorBar: "\u2958", LeftUpVector: "\u21BF", LeftVectorBar: "\u2952", LeftVector: "\u21BC", lEg: "\u2A8B", leg: "\u22DA", leq: "\u2264", leqq: "\u2266", leqslant: "\u2A7D", lescc: "\u2AA8", les: "\u2A7D", lesdot: "\u2A7F", lesdoto: "\u2A81", lesdotor: "\u2A83", lesg: "\u22DA\uFE00", lesges: "\u2A93", lessapprox: "\u2A85", lessdot: "\u22D6", lesseqgtr: "\u22DA", lesseqqgtr: "\u2A8B", LessEqualGreater: "\u22DA", LessFullEqual: "\u2266", LessGreater: "\u2276", lessgtr: "\u2276", LessLess: "\u2AA1", lesssim: "\u2272", LessSlantEqual: "\u2A7D", LessTilde: "\u2272", lfisht: "\u297C", lfloor: "\u230A", Lfr: "\u{1D50F}", lfr: "\u{1D529}", lg: "\u2276", lgE: "\u2A91", lHar: "\u2962", lhard: "\u21BD", lharu: "\u21BC", lharul: "\u296A", lhblk: "\u2584", LJcy: "\u0409", ljcy: "\u0459", llarr: "\u21C7", ll: "\u226A", Ll: "\u22D8", llcorner: "\u231E", Lleftarrow: "\u21DA", llhard: "\u296B", lltri: "\u25FA", Lmidot: "\u013F", lmidot: "\u0140", lmoustache: "\u23B0", lmoust: "\u23B0", lnap: "\u2A89", lnapprox: "\u2A89", lne: "\u2A87", lnE: "\u2268", lneq: "\u2A87", lneqq: "\u2268", lnsim: "\u22E6", loang: "\u27EC", loarr: "\u21FD", lobrk: "\u27E6", longleftarrow: "\u27F5", LongLeftArrow: "\u27F5", Longleftarrow: "\u27F8", longleftrightarrow: "\u27F7", LongLeftRightArrow: "\u27F7", Longleftrightarrow: "\u27FA", longmapsto: "\u27FC", longrightarrow: "\u27F6", LongRightArrow: "\u27F6", Longrightarrow: "\u27F9", looparrowleft: "\u21AB", looparrowright: "\u21AC", lopar: "\u2985", Lopf: "\u{1D543}", lopf: "\u{1D55D}", loplus: "\u2A2D", lotimes: "\u2A34", lowast: "\u2217", lowbar: "_", LowerLeftArrow: "\u2199", LowerRightArrow: "\u2198", loz: "\u25CA", lozenge: "\u25CA", lozf: "\u29EB", lpar: "(", lparlt: "\u2993", lrarr: "\u21C6", lrcorner: "\u231F", lrhar: "\u21CB", lrhard: "\u296D", lrm: "\u200E", lrtri: "\u22BF", lsaquo: "\u2039", lscr: "\u{1D4C1}", Lscr: "\u2112", lsh: "\u21B0", Lsh: "\u21B0", lsim: "\u2272", lsime: "\u2A8D", lsimg: "\u2A8F", lsqb: "[", lsquo: "\u2018", lsquor: "\u201A", Lstrok: "\u0141", lstrok: "\u0142", ltcc: "\u2AA6", ltcir: "\u2A79", lt: "<", LT: "<", Lt: "\u226A", ltdot: "\u22D6", lthree: "\u22CB", ltimes: "\u22C9", ltlarr: "\u2976", ltquest: "\u2A7B", ltri: "\u25C3", ltrie: "\u22B4", ltrif: "\u25C2", ltrPar: "\u2996", lurdshar: "\u294A", luruhar: "\u2966", lvertneqq: "\u2268\uFE00", lvnE: "\u2268\uFE00", macr: "\xAF", male: "\u2642", malt: "\u2720", maltese: "\u2720", Map: "\u2905", map: "\u21A6", mapsto: "\u21A6", mapstodown: "\u21A7", mapstoleft: "\u21A4", mapstoup: "\u21A5", marker: "\u25AE", mcomma: "\u2A29", Mcy: "\u041C", mcy: "\u043C", mdash: "\u2014", mDDot: "\u223A", measuredangle: "\u2221", MediumSpace: "\u205F", Mellintrf: "\u2133", Mfr: "\u{1D510}", mfr: "\u{1D52A}", mho: "\u2127", micro: "\xB5", midast: "*", midcir: "\u2AF0", mid: "\u2223", middot: "\xB7", minusb: "\u229F", minus: "\u2212", minusd: "\u2238", minusdu: "\u2A2A", MinusPlus: "\u2213", mlcp: "\u2ADB", mldr: "\u2026", mnplus: "\u2213", models: "\u22A7", Mopf: "\u{1D544}", mopf: "\u{1D55E}", mp: "\u2213", mscr: "\u{1D4C2}", Mscr: "\u2133", mstpos: "\u223E", Mu: "\u039C", mu: "\u03BC", multimap: "\u22B8", mumap: "\u22B8", nabla: "\u2207", Nacute: "\u0143", nacute: "\u0144", nang: "\u2220\u20D2", nap: "\u2249", napE: "\u2A70\u0338", napid: "\u224B\u0338", napos: "\u0149", napprox: "\u2249", natural: "\u266E", naturals: "\u2115", natur: "\u266E", nbsp: "\xA0", nbump: "\u224E\u0338", nbumpe: "\u224F\u0338", ncap: "\u2A43", Ncaron: "\u0147", ncaron: "\u0148", Ncedil: "\u0145", ncedil: "\u0146", ncong: "\u2247", ncongdot: "\u2A6D\u0338", ncup: "\u2A42", Ncy: "\u041D", ncy: "\u043D", ndash: "\u2013", nearhk: "\u2924", nearr: "\u2197", neArr: "\u21D7", nearrow: "\u2197", ne: "\u2260", nedot: "\u2250\u0338", NegativeMediumSpace: "\u200B", NegativeThickSpace: "\u200B", NegativeThinSpace: "\u200B", NegativeVeryThinSpace: "\u200B", nequiv: "\u2262", nesear: "\u2928", nesim: "\u2242\u0338", NestedGreaterGreater: "\u226B", NestedLessLess: "\u226A", NewLine: "\n", nexist: "\u2204", nexists: "\u2204", Nfr: "\u{1D511}", nfr: "\u{1D52B}", ngE: "\u2267\u0338", nge: "\u2271", ngeq: "\u2271", ngeqq: "\u2267\u0338", ngeqslant: "\u2A7E\u0338", nges: "\u2A7E\u0338", nGg: "\u22D9\u0338", ngsim: "\u2275", nGt: "\u226B\u20D2", ngt: "\u226F", ngtr: "\u226F", nGtv: "\u226B\u0338", nharr: "\u21AE", nhArr: "\u21CE", nhpar: "\u2AF2", ni: "\u220B", nis: "\u22FC", nisd: "\u22FA", niv: "\u220B", NJcy: "\u040A", njcy: "\u045A", nlarr: "\u219A", nlArr: "\u21CD", nldr: "\u2025", nlE: "\u2266\u0338", nle: "\u2270", nleftarrow: "\u219A", nLeftarrow: "\u21CD", nleftrightarrow: "\u21AE", nLeftrightarrow: "\u21CE", nleq: "\u2270", nleqq: "\u2266\u0338", nleqslant: "\u2A7D\u0338", nles: "\u2A7D\u0338", nless: "\u226E", nLl: "\u22D8\u0338", nlsim: "\u2274", nLt: "\u226A\u20D2", nlt: "\u226E", nltri: "\u22EA", nltrie: "\u22EC", nLtv: "\u226A\u0338", nmid: "\u2224", NoBreak: "\u2060", NonBreakingSpace: "\xA0", nopf: "\u{1D55F}", Nopf: "\u2115", Not: "\u2AEC", not: "\xAC", NotCongruent: "\u2262", NotCupCap: "\u226D", NotDoubleVerticalBar: "\u2226", NotElement: "\u2209", NotEqual: "\u2260", NotEqualTilde: "\u2242\u0338", NotExists: "\u2204", NotGreater: "\u226F", NotGreaterEqual: "\u2271", NotGreaterFullEqual: "\u2267\u0338", NotGreaterGreater: "\u226B\u0338", NotGreaterLess: "\u2279", NotGreaterSlantEqual: "\u2A7E\u0338", NotGreaterTilde: "\u2275", NotHumpDownHump: "\u224E\u0338", NotHumpEqual: "\u224F\u0338", notin: "\u2209", notindot: "\u22F5\u0338", notinE: "\u22F9\u0338", notinva: "\u2209", notinvb: "\u22F7", notinvc: "\u22F6", NotLeftTriangleBar: "\u29CF\u0338", NotLeftTriangle: "\u22EA", NotLeftTriangleEqual: "\u22EC", NotLess: "\u226E", NotLessEqual: "\u2270", NotLessGreater: "\u2278", NotLessLess: "\u226A\u0338", NotLessSlantEqual: "\u2A7D\u0338", NotLessTilde: "\u2274", NotNestedGreaterGreater: "\u2AA2\u0338", NotNestedLessLess: "\u2AA1\u0338", notni: "\u220C", notniva: "\u220C", notnivb: "\u22FE", notnivc: "\u22FD", NotPrecedes: "\u2280", NotPrecedesEqual: "\u2AAF\u0338", NotPrecedesSlantEqual: "\u22E0", NotReverseElement: "\u220C", NotRightTriangleBar: "\u29D0\u0338", NotRightTriangle: "\u22EB", NotRightTriangleEqual: "\u22ED", NotSquareSubset: "\u228F\u0338", NotSquareSubsetEqual: "\u22E2", NotSquareSuperset: "\u2290\u0338", NotSquareSupersetEqual: "\u22E3", NotSubset: "\u2282\u20D2", NotSubsetEqual: "\u2288", NotSucceeds: "\u2281", NotSucceedsEqual: "\u2AB0\u0338", NotSucceedsSlantEqual: "\u22E1", NotSucceedsTilde: "\u227F\u0338", NotSuperset: "\u2283\u20D2", NotSupersetEqual: "\u2289", NotTilde: "\u2241", NotTildeEqual: "\u2244", NotTildeFullEqual: "\u2247", NotTildeTilde: "\u2249", NotVerticalBar: "\u2224", nparallel: "\u2226", npar: "\u2226", nparsl: "\u2AFD\u20E5", npart: "\u2202\u0338", npolint: "\u2A14", npr: "\u2280", nprcue: "\u22E0", nprec: "\u2280", npreceq: "\u2AAF\u0338", npre: "\u2AAF\u0338", nrarrc: "\u2933\u0338", nrarr: "\u219B", nrArr: "\u21CF", nrarrw: "\u219D\u0338", nrightarrow: "\u219B", nRightarrow: "\u21CF", nrtri: "\u22EB", nrtrie: "\u22ED", nsc: "\u2281", nsccue: "\u22E1", nsce: "\u2AB0\u0338", Nscr: "\u{1D4A9}", nscr: "\u{1D4C3}", nshortmid: "\u2224", nshortparallel: "\u2226", nsim: "\u2241", nsime: "\u2244", nsimeq: "\u2244", nsmid: "\u2224", nspar: "\u2226", nsqsube: "\u22E2", nsqsupe: "\u22E3", nsub: "\u2284", nsubE: "\u2AC5\u0338", nsube: "\u2288", nsubset: "\u2282\u20D2", nsubseteq: "\u2288", nsubseteqq: "\u2AC5\u0338", nsucc: "\u2281", nsucceq: "\u2AB0\u0338", nsup: "\u2285", nsupE: "\u2AC6\u0338", nsupe: "\u2289", nsupset: "\u2283\u20D2", nsupseteq: "\u2289", nsupseteqq: "\u2AC6\u0338", ntgl: "\u2279", Ntilde: "\xD1", ntilde: "\xF1", ntlg: "\u2278", ntriangleleft: "\u22EA", ntrianglelefteq: "\u22EC", ntriangleright: "\u22EB", ntrianglerighteq: "\u22ED", Nu: "\u039D", nu: "\u03BD", num: "#", numero: "\u2116", numsp: "\u2007", nvap: "\u224D\u20D2", nvdash: "\u22AC", nvDash: "\u22AD", nVdash: "\u22AE", nVDash: "\u22AF", nvge: "\u2265\u20D2", nvgt: ">\u20D2", nvHarr: "\u2904", nvinfin: "\u29DE", nvlArr: "\u2902", nvle: "\u2264\u20D2", nvlt: "<\u20D2", nvltrie: "\u22B4\u20D2", nvrArr: "\u2903", nvrtrie: "\u22B5\u20D2", nvsim: "\u223C\u20D2", nwarhk: "\u2923", nwarr: "\u2196", nwArr: "\u21D6", nwarrow: "\u2196", nwnear: "\u2927", Oacute: "\xD3", oacute: "\xF3", oast: "\u229B", Ocirc: "\xD4", ocirc: "\xF4", ocir: "\u229A", Ocy: "\u041E", ocy: "\u043E", odash: "\u229D", Odblac: "\u0150", odblac: "\u0151", odiv: "\u2A38", odot: "\u2299", odsold: "\u29BC", OElig: "\u0152", oelig: "\u0153", ofcir: "\u29BF", Ofr: "\u{1D512}", ofr: "\u{1D52C}", ogon: "\u02DB", Ograve: "\xD2", ograve: "\xF2", ogt: "\u29C1", ohbar: "\u29B5", ohm: "\u03A9", oint: "\u222E", olarr: "\u21BA", olcir: "\u29BE", olcross: "\u29BB", oline: "\u203E", olt: "\u29C0", Omacr: "\u014C", omacr: "\u014D", Omega: "\u03A9", omega: "\u03C9", Omicron: "\u039F", omicron: "\u03BF", omid: "\u29B6", ominus: "\u2296", Oopf: "\u{1D546}", oopf: "\u{1D560}", opar: "\u29B7", OpenCurlyDoubleQuote: "\u201C", OpenCurlyQuote: "\u2018", operp: "\u29B9", oplus: "\u2295", orarr: "\u21BB", Or: "\u2A54", or: "\u2228", ord: "\u2A5D", order: "\u2134", orderof: "\u2134", ordf: "\xAA", ordm: "\xBA", origof: "\u22B6", oror: "\u2A56", orslope: "\u2A57", orv: "\u2A5B", oS: "\u24C8", Oscr: "\u{1D4AA}", oscr: "\u2134", Oslash: "\xD8", oslash: "\xF8", osol: "\u2298", Otilde: "\xD5", otilde: "\xF5", otimesas: "\u2A36", Otimes: "\u2A37", otimes: "\u2297", Ouml: "\xD6", ouml: "\xF6", ovbar: "\u233D", OverBar: "\u203E", OverBrace: "\u23DE", OverBracket: "\u23B4", OverParenthesis: "\u23DC", para: "\xB6", parallel: "\u2225", par: "\u2225", parsim: "\u2AF3", parsl: "\u2AFD", part: "\u2202", PartialD: "\u2202", Pcy: "\u041F", pcy: "\u043F", percnt: "%", period: ".", permil: "\u2030", perp: "\u22A5", pertenk: "\u2031", Pfr: "\u{1D513}", pfr: "\u{1D52D}", Phi: "\u03A6", phi: "\u03C6", phiv: "\u03D5", phmmat: "\u2133", phone: "\u260E", Pi: "\u03A0", pi: "\u03C0", pitchfork: "\u22D4", piv: "\u03D6", planck: "\u210F", planckh: "\u210E", plankv: "\u210F", plusacir: "\u2A23", plusb: "\u229E", pluscir: "\u2A22", plus: "+", plusdo: "\u2214", plusdu: "\u2A25", pluse: "\u2A72", PlusMinus: "\xB1", plusmn: "\xB1", plussim: "\u2A26", plustwo: "\u2A27", pm: "\xB1", Poincareplane: "\u210C", pointint: "\u2A15", popf: "\u{1D561}", Popf: "\u2119", pound: "\xA3", prap: "\u2AB7", Pr: "\u2ABB", pr: "\u227A", prcue: "\u227C", precapprox: "\u2AB7", prec: "\u227A", preccurlyeq: "\u227C", Precedes: "\u227A", PrecedesEqual: "\u2AAF", PrecedesSlantEqual: "\u227C", PrecedesTilde: "\u227E", preceq: "\u2AAF", precnapprox: "\u2AB9", precneqq: "\u2AB5", precnsim: "\u22E8", pre: "\u2AAF", prE: "\u2AB3", precsim: "\u227E", prime: "\u2032", Prime: "\u2033", primes: "\u2119", prnap: "\u2AB9", prnE: "\u2AB5", prnsim: "\u22E8", prod: "\u220F", Product: "\u220F", profalar: "\u232E", profline: "\u2312", profsurf: "\u2313", prop: "\u221D", Proportional: "\u221D", Proportion: "\u2237", propto: "\u221D", prsim: "\u227E", prurel: "\u22B0", Pscr: "\u{1D4AB}", pscr: "\u{1D4C5}", Psi: "\u03A8", psi: "\u03C8", puncsp: "\u2008", Qfr: "\u{1D514}", qfr: "\u{1D52E}", qint: "\u2A0C", qopf: "\u{1D562}", Qopf: "\u211A", qprime: "\u2057", Qscr: "\u{1D4AC}", qscr: "\u{1D4C6}", quaternions: "\u210D", quatint: "\u2A16", quest: "?", questeq: "\u225F", quot: '"', QUOT: '"', rAarr: "\u21DB", race: "\u223D\u0331", Racute: "\u0154", racute: "\u0155", radic: "\u221A", raemptyv: "\u29B3", rang: "\u27E9", Rang: "\u27EB", rangd: "\u2992", range: "\u29A5", rangle: "\u27E9", raquo: "\xBB", rarrap: "\u2975", rarrb: "\u21E5", rarrbfs: "\u2920", rarrc: "\u2933", rarr: "\u2192", Rarr: "\u21A0", rArr: "\u21D2", rarrfs: "\u291E", rarrhk: "\u21AA", rarrlp: "\u21AC", rarrpl: "\u2945", rarrsim: "\u2974", Rarrtl: "\u2916", rarrtl: "\u21A3", rarrw: "\u219D", ratail: "\u291A", rAtail: "\u291C", ratio: "\u2236", rationals: "\u211A", rbarr: "\u290D", rBarr: "\u290F", RBarr: "\u2910", rbbrk: "\u2773", rbrace: "}", rbrack: "]", rbrke: "\u298C", rbrksld: "\u298E", rbrkslu: "\u2990", Rcaron: "\u0158", rcaron: "\u0159", Rcedil: "\u0156", rcedil: "\u0157", rceil: "\u2309", rcub: "}", Rcy: "\u0420", rcy: "\u0440", rdca: "\u2937", rdldhar: "\u2969", rdquo: "\u201D", rdquor: "\u201D", rdsh: "\u21B3", real: "\u211C", realine: "\u211B", realpart: "\u211C", reals: "\u211D", Re: "\u211C", rect: "\u25AD", reg: "\xAE", REG: "\xAE", ReverseElement: "\u220B", ReverseEquilibrium: "\u21CB", ReverseUpEquilibrium: "\u296F", rfisht: "\u297D", rfloor: "\u230B", rfr: "\u{1D52F}", Rfr: "\u211C", rHar: "\u2964", rhard: "\u21C1", rharu: "\u21C0", rharul: "\u296C", Rho: "\u03A1", rho: "\u03C1", rhov: "\u03F1", RightAngleBracket: "\u27E9", RightArrowBar: "\u21E5", rightarrow: "\u2192", RightArrow: "\u2192", Rightarrow: "\u21D2", RightArrowLeftArrow: "\u21C4", rightarrowtail: "\u21A3", RightCeiling: "\u2309", RightDoubleBracket: "\u27E7", RightDownTeeVector: "\u295D", RightDownVectorBar: "\u2955", RightDownVector: "\u21C2", RightFloor: "\u230B", rightharpoondown: "\u21C1", rightharpoonup: "\u21C0", rightleftarrows: "\u21C4", rightleftharpoons: "\u21CC", rightrightarrows: "\u21C9", rightsquigarrow: "\u219D", RightTeeArrow: "\u21A6", RightTee: "\u22A2", RightTeeVector: "\u295B", rightthreetimes: "\u22CC", RightTriangleBar: "\u29D0", RightTriangle: "\u22B3", RightTriangleEqual: "\u22B5", RightUpDownVector: "\u294F", RightUpTeeVector: "\u295C", RightUpVectorBar: "\u2954", RightUpVector: "\u21BE", RightVectorBar: "\u2953", RightVector: "\u21C0", ring: "\u02DA", risingdotseq: "\u2253", rlarr: "\u21C4", rlhar: "\u21CC", rlm: "\u200F", rmoustache: "\u23B1", rmoust: "\u23B1", rnmid: "\u2AEE", roang: "\u27ED", roarr: "\u21FE", robrk: "\u27E7", ropar: "\u2986", ropf: "\u{1D563}", Ropf: "\u211D", roplus: "\u2A2E", rotimes: "\u2A35", RoundImplies: "\u2970", rpar: ")", rpargt: "\u2994", rppolint: "\u2A12", rrarr: "\u21C9", Rrightarrow: "\u21DB", rsaquo: "\u203A", rscr: "\u{1D4C7}", Rscr: "\u211B", rsh: "\u21B1", Rsh: "\u21B1", rsqb: "]", rsquo: "\u2019", rsquor: "\u2019", rthree: "\u22CC", rtimes: "\u22CA", rtri: "\u25B9", rtrie: "\u22B5", rtrif: "\u25B8", rtriltri: "\u29CE", RuleDelayed: "\u29F4", ruluhar: "\u2968", rx: "\u211E", Sacute: "\u015A", sacute: "\u015B", sbquo: "\u201A", scap: "\u2AB8", Scaron: "\u0160", scaron: "\u0161", Sc: "\u2ABC", sc: "\u227B", sccue: "\u227D", sce: "\u2AB0", scE: "\u2AB4", Scedil: "\u015E", scedil: "\u015F", Scirc: "\u015C", scirc: "\u015D", scnap: "\u2ABA", scnE: "\u2AB6", scnsim: "\u22E9", scpolint: "\u2A13", scsim: "\u227F", Scy: "\u0421", scy: "\u0441", sdotb: "\u22A1", sdot: "\u22C5", sdote: "\u2A66", searhk: "\u2925", searr: "\u2198", seArr: "\u21D8", searrow: "\u2198", sect: "\xA7", semi: ";", seswar: "\u2929", setminus: "\u2216", setmn: "\u2216", sext: "\u2736", Sfr: "\u{1D516}", sfr: "\u{1D530}", sfrown: "\u2322", sharp: "\u266F", SHCHcy: "\u0429", shchcy: "\u0449", SHcy: "\u0428", shcy: "\u0448", ShortDownArrow: "\u2193", ShortLeftArrow: "\u2190", shortmid: "\u2223", shortparallel: "\u2225", ShortRightArrow: "\u2192", ShortUpArrow: "\u2191", shy: "\xAD", Sigma: "\u03A3", sigma: "\u03C3", sigmaf: "\u03C2", sigmav: "\u03C2", sim: "\u223C", simdot: "\u2A6A", sime: "\u2243", simeq: "\u2243", simg: "\u2A9E", simgE: "\u2AA0", siml: "\u2A9D", simlE: "\u2A9F", simne: "\u2246", simplus: "\u2A24", simrarr: "\u2972", slarr: "\u2190", SmallCircle: "\u2218", smallsetminus: "\u2216", smashp: "\u2A33", smeparsl: "\u29E4", smid: "\u2223", smile: "\u2323", smt: "\u2AAA", smte: "\u2AAC", smtes: "\u2AAC\uFE00", SOFTcy: "\u042C", softcy: "\u044C", solbar: "\u233F", solb: "\u29C4", sol: "/", Sopf: "\u{1D54A}", sopf: "\u{1D564}", spades: "\u2660", spadesuit: "\u2660", spar: "\u2225", sqcap: "\u2293", sqcaps: "\u2293\uFE00", sqcup: "\u2294", sqcups: "\u2294\uFE00", Sqrt: "\u221A", sqsub: "\u228F", sqsube: "\u2291", sqsubset: "\u228F", sqsubseteq: "\u2291", sqsup: "\u2290", sqsupe: "\u2292", sqsupset: "\u2290", sqsupseteq: "\u2292", square: "\u25A1", Square: "\u25A1", SquareIntersection: "\u2293", SquareSubset: "\u228F", SquareSubsetEqual: "\u2291", SquareSuperset: "\u2290", SquareSupersetEqual: "\u2292", SquareUnion: "\u2294", squarf: "\u25AA", squ: "\u25A1", squf: "\u25AA", srarr: "\u2192", Sscr: "\u{1D4AE}", sscr: "\u{1D4C8}", ssetmn: "\u2216", ssmile: "\u2323", sstarf: "\u22C6", Star: "\u22C6", star: "\u2606", starf: "\u2605", straightepsilon: "\u03F5", straightphi: "\u03D5", strns: "\xAF", sub: "\u2282", Sub: "\u22D0", subdot: "\u2ABD", subE: "\u2AC5", sube: "\u2286", subedot: "\u2AC3", submult: "\u2AC1", subnE: "\u2ACB", subne: "\u228A", subplus: "\u2ABF", subrarr: "\u2979", subset: "\u2282", Subset: "\u22D0", subseteq: "\u2286", subseteqq: "\u2AC5", SubsetEqual: "\u2286", subsetneq: "\u228A", subsetneqq: "\u2ACB", subsim: "\u2AC7", subsub: "\u2AD5", subsup: "\u2AD3", succapprox: "\u2AB8", succ: "\u227B", succcurlyeq: "\u227D", Succeeds: "\u227B", SucceedsEqual: "\u2AB0", SucceedsSlantEqual: "\u227D", SucceedsTilde: "\u227F", succeq: "\u2AB0", succnapprox: "\u2ABA", succneqq: "\u2AB6", succnsim: "\u22E9", succsim: "\u227F", SuchThat: "\u220B", sum: "\u2211", Sum: "\u2211", sung: "\u266A", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", sup: "\u2283", Sup: "\u22D1", supdot: "\u2ABE", supdsub: "\u2AD8", supE: "\u2AC6", supe: "\u2287", supedot: "\u2AC4", Superset: "\u2283", SupersetEqual: "\u2287", suphsol: "\u27C9", suphsub: "\u2AD7", suplarr: "\u297B", supmult: "\u2AC2", supnE: "\u2ACC", supne: "\u228B", supplus: "\u2AC0", supset: "\u2283", Supset: "\u22D1", supseteq: "\u2287", supseteqq: "\u2AC6", supsetneq: "\u228B", supsetneqq: "\u2ACC", supsim: "\u2AC8", supsub: "\u2AD4", supsup: "\u2AD6", swarhk: "\u2926", swarr: "\u2199", swArr: "\u21D9", swarrow: "\u2199", swnwar: "\u292A", szlig: "\xDF", Tab: " ", target: "\u2316", Tau: "\u03A4", tau: "\u03C4", tbrk: "\u23B4", Tcaron: "\u0164", tcaron: "\u0165", Tcedil: "\u0162", tcedil: "\u0163", Tcy: "\u0422", tcy: "\u0442", tdot: "\u20DB", telrec: "\u2315", Tfr: "\u{1D517}", tfr: "\u{1D531}", there4: "\u2234", therefore: "\u2234", Therefore: "\u2234", Theta: "\u0398", theta: "\u03B8", thetasym: "\u03D1", thetav: "\u03D1", thickapprox: "\u2248", thicksim: "\u223C", ThickSpace: "\u205F\u200A", ThinSpace: "\u2009", thinsp: "\u2009", thkap: "\u2248", thksim: "\u223C", THORN: "\xDE", thorn: "\xFE", tilde: "\u02DC", Tilde: "\u223C", TildeEqual: "\u2243", TildeFullEqual: "\u2245", TildeTilde: "\u2248", timesbar: "\u2A31", timesb: "\u22A0", times: "\xD7", timesd: "\u2A30", tint: "\u222D", toea: "\u2928", topbot: "\u2336", topcir: "\u2AF1", top: "\u22A4", Topf: "\u{1D54B}", topf: "\u{1D565}", topfork: "\u2ADA", tosa: "\u2929", tprime: "\u2034", trade: "\u2122", TRADE: "\u2122", triangle: "\u25B5", triangledown: "\u25BF", triangleleft: "\u25C3", trianglelefteq: "\u22B4", triangleq: "\u225C", triangleright: "\u25B9", trianglerighteq: "\u22B5", tridot: "\u25EC", trie: "\u225C", triminus: "\u2A3A", TripleDot: "\u20DB", triplus: "\u2A39", trisb: "\u29CD", tritime: "\u2A3B", trpezium: "\u23E2", Tscr: "\u{1D4AF}", tscr: "\u{1D4C9}", TScy: "\u0426", tscy: "\u0446", TSHcy: "\u040B", tshcy: "\u045B", Tstrok: "\u0166", tstrok: "\u0167", twixt: "\u226C", twoheadleftarrow: "\u219E", twoheadrightarrow: "\u21A0", Uacute: "\xDA", uacute: "\xFA", uarr: "\u2191", Uarr: "\u219F", uArr: "\u21D1", Uarrocir: "\u2949", Ubrcy: "\u040E", ubrcy: "\u045E", Ubreve: "\u016C", ubreve: "\u016D", Ucirc: "\xDB", ucirc: "\xFB", Ucy: "\u0423", ucy: "\u0443", udarr: "\u21C5", Udblac: "\u0170", udblac: "\u0171", udhar: "\u296E", ufisht: "\u297E", Ufr: "\u{1D518}", ufr: "\u{1D532}", Ugrave: "\xD9", ugrave: "\xF9", uHar: "\u2963", uharl: "\u21BF", uharr: "\u21BE", uhblk: "\u2580", ulcorn: "\u231C", ulcorner: "\u231C", ulcrop: "\u230F", ultri: "\u25F8", Umacr: "\u016A", umacr: "\u016B", uml: "\xA8", UnderBar: "_", UnderBrace: "\u23DF", UnderBracket: "\u23B5", UnderParenthesis: "\u23DD", Union: "\u22C3", UnionPlus: "\u228E", Uogon: "\u0172", uogon: "\u0173", Uopf: "\u{1D54C}", uopf: "\u{1D566}", UpArrowBar: "\u2912", uparrow: "\u2191", UpArrow: "\u2191", Uparrow: "\u21D1", UpArrowDownArrow: "\u21C5", updownarrow: "\u2195", UpDownArrow: "\u2195", Updownarrow: "\u21D5", UpEquilibrium: "\u296E", upharpoonleft: "\u21BF", upharpoonright: "\u21BE", uplus: "\u228E", UpperLeftArrow: "\u2196", UpperRightArrow: "\u2197", upsi: "\u03C5", Upsi: "\u03D2", upsih: "\u03D2", Upsilon: "\u03A5", upsilon: "\u03C5", UpTeeArrow: "\u21A5", UpTee: "\u22A5", upuparrows: "\u21C8", urcorn: "\u231D", urcorner: "\u231D", urcrop: "\u230E", Uring: "\u016E", uring: "\u016F", urtri: "\u25F9", Uscr: "\u{1D4B0}", uscr: "\u{1D4CA}", utdot: "\u22F0", Utilde: "\u0168", utilde: "\u0169", utri: "\u25B5", utrif: "\u25B4", uuarr: "\u21C8", Uuml: "\xDC", uuml: "\xFC", uwangle: "\u29A7", vangrt: "\u299C", varepsilon: "\u03F5", varkappa: "\u03F0", varnothing: "\u2205", varphi: "\u03D5", varpi: "\u03D6", varpropto: "\u221D", varr: "\u2195", vArr: "\u21D5", varrho: "\u03F1", varsigma: "\u03C2", varsubsetneq: "\u228A\uFE00", varsubsetneqq: "\u2ACB\uFE00", varsupsetneq: "\u228B\uFE00", varsupsetneqq: "\u2ACC\uFE00", vartheta: "\u03D1", vartriangleleft: "\u22B2", vartriangleright: "\u22B3", vBar: "\u2AE8", Vbar: "\u2AEB", vBarv: "\u2AE9", Vcy: "\u0412", vcy: "\u0432", vdash: "\u22A2", vDash: "\u22A8", Vdash: "\u22A9", VDash: "\u22AB", Vdashl: "\u2AE6", veebar: "\u22BB", vee: "\u2228", Vee: "\u22C1", veeeq: "\u225A", vellip: "\u22EE", verbar: "|", Verbar: "\u2016", vert: "|", Vert: "\u2016", VerticalBar: "\u2223", VerticalLine: "|", VerticalSeparator: "\u2758", VerticalTilde: "\u2240", VeryThinSpace: "\u200A", Vfr: "\u{1D519}", vfr: "\u{1D533}", vltri: "\u22B2", vnsub: "\u2282\u20D2", vnsup: "\u2283\u20D2", Vopf: "\u{1D54D}", vopf: "\u{1D567}", vprop: "\u221D", vrtri: "\u22B3", Vscr: "\u{1D4B1}", vscr: "\u{1D4CB}", vsubnE: "\u2ACB\uFE00", vsubne: "\u228A\uFE00", vsupnE: "\u2ACC\uFE00", vsupne: "\u228B\uFE00", Vvdash: "\u22AA", vzigzag: "\u299A", Wcirc: "\u0174", wcirc: "\u0175", wedbar: "\u2A5F", wedge: "\u2227", Wedge: "\u22C0", wedgeq: "\u2259", weierp: "\u2118", Wfr: "\u{1D51A}", wfr: "\u{1D534}", Wopf: "\u{1D54E}", wopf: "\u{1D568}", wp: "\u2118", wr: "\u2240", wreath: "\u2240", Wscr: "\u{1D4B2}", wscr: "\u{1D4CC}", xcap: "\u22C2", xcirc: "\u25EF", xcup: "\u22C3", xdtri: "\u25BD", Xfr: "\u{1D51B}", xfr: "\u{1D535}", xharr: "\u27F7", xhArr: "\u27FA", Xi: "\u039E", xi: "\u03BE", xlarr: "\u27F5", xlArr: "\u27F8", xmap: "\u27FC", xnis: "\u22FB", xodot: "\u2A00", Xopf: "\u{1D54F}", xopf: "\u{1D569}", xoplus: "\u2A01", xotime: "\u2A02", xrarr: "\u27F6", xrArr: "\u27F9", Xscr: "\u{1D4B3}", xscr: "\u{1D4CD}", xsqcup: "\u2A06", xuplus: "\u2A04", xutri: "\u25B3", xvee: "\u22C1", xwedge: "\u22C0", Yacute: "\xDD", yacute: "\xFD", YAcy: "\u042F", yacy: "\u044F", Ycirc: "\u0176", ycirc: "\u0177", Ycy: "\u042B", ycy: "\u044B", yen: "\xA5", Yfr: "\u{1D51C}", yfr: "\u{1D536}", YIcy: "\u0407", yicy: "\u0457", Yopf: "\u{1D550}", yopf: "\u{1D56A}", Yscr: "\u{1D4B4}", yscr: "\u{1D4CE}", YUcy: "\u042E", yucy: "\u044E", yuml: "\xFF", Yuml: "\u0178", Zacute: "\u0179", zacute: "\u017A", Zcaron: "\u017D", zcaron: "\u017E", Zcy: "\u0417", zcy: "\u0437", Zdot: "\u017B", zdot: "\u017C", zeetrf: "\u2128", ZeroWidthSpace: "\u200B", Zeta: "\u0396", zeta: "\u03B6", zfr: "\u{1D537}", Zfr: "\u2128", ZHcy: "\u0416", zhcy: "\u0436", zigrarr: "\u21DD", zopf: "\u{1D56B}", Zopf: "\u2124", Zscr: "\u{1D4B5}", zscr: "\u{1D4CF}", zwj: "\u200D", zwnj: "\u200C" }; + } +}); + +// node_modules/entities/lib/maps/legacy.json +var require_legacy = __commonJS({ + "node_modules/entities/lib/maps/legacy.json"(exports2, module2) { + module2.exports = { Aacute: "\xC1", aacute: "\xE1", Acirc: "\xC2", acirc: "\xE2", acute: "\xB4", AElig: "\xC6", aelig: "\xE6", Agrave: "\xC0", agrave: "\xE0", amp: "&", AMP: "&", Aring: "\xC5", aring: "\xE5", Atilde: "\xC3", atilde: "\xE3", Auml: "\xC4", auml: "\xE4", brvbar: "\xA6", Ccedil: "\xC7", ccedil: "\xE7", cedil: "\xB8", cent: "\xA2", copy: "\xA9", COPY: "\xA9", curren: "\xA4", deg: "\xB0", divide: "\xF7", Eacute: "\xC9", eacute: "\xE9", Ecirc: "\xCA", ecirc: "\xEA", Egrave: "\xC8", egrave: "\xE8", ETH: "\xD0", eth: "\xF0", Euml: "\xCB", euml: "\xEB", frac12: "\xBD", frac14: "\xBC", frac34: "\xBE", gt: ">", GT: ">", Iacute: "\xCD", iacute: "\xED", Icirc: "\xCE", icirc: "\xEE", iexcl: "\xA1", Igrave: "\xCC", igrave: "\xEC", iquest: "\xBF", Iuml: "\xCF", iuml: "\xEF", laquo: "\xAB", lt: "<", LT: "<", macr: "\xAF", micro: "\xB5", middot: "\xB7", nbsp: "\xA0", not: "\xAC", Ntilde: "\xD1", ntilde: "\xF1", Oacute: "\xD3", oacute: "\xF3", Ocirc: "\xD4", ocirc: "\xF4", Ograve: "\xD2", ograve: "\xF2", ordf: "\xAA", ordm: "\xBA", Oslash: "\xD8", oslash: "\xF8", Otilde: "\xD5", otilde: "\xF5", Ouml: "\xD6", ouml: "\xF6", para: "\xB6", plusmn: "\xB1", pound: "\xA3", quot: '"', QUOT: '"', raquo: "\xBB", reg: "\xAE", REG: "\xAE", sect: "\xA7", shy: "\xAD", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", szlig: "\xDF", THORN: "\xDE", thorn: "\xFE", times: "\xD7", Uacute: "\xDA", uacute: "\xFA", Ucirc: "\xDB", ucirc: "\xFB", Ugrave: "\xD9", ugrave: "\xF9", uml: "\xA8", Uuml: "\xDC", uuml: "\xFC", Yacute: "\xDD", yacute: "\xFD", yen: "\xA5", yuml: "\xFF" }; + } +}); + +// node_modules/entities/lib/maps/xml.json +var require_xml = __commonJS({ + "node_modules/entities/lib/maps/xml.json"(exports2, module2) { + module2.exports = { amp: "&", apos: "'", gt: ">", lt: "<", quot: '"' }; + } +}); + +// node_modules/entities/lib/maps/decode.json +var require_decode = __commonJS({ + "node_modules/entities/lib/maps/decode.json"(exports2, module2) { + module2.exports = { "0": 65533, "128": 8364, "130": 8218, "131": 402, "132": 8222, "133": 8230, "134": 8224, "135": 8225, "136": 710, "137": 8240, "138": 352, "139": 8249, "140": 338, "142": 381, "145": 8216, "146": 8217, "147": 8220, "148": 8221, "149": 8226, "150": 8211, "151": 8212, "152": 732, "153": 8482, "154": 353, "155": 8250, "156": 339, "158": 382, "159": 376 }; + } +}); + +// node_modules/entities/lib/decode_codepoint.js +var require_decode_codepoint = __commonJS({ + "node_modules/entities/lib/decode_codepoint.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var decode_json_1 = __importDefault(require_decode()); + var fromCodePoint = String.fromCodePoint || function(codePoint) { + var output = ""; + if (codePoint > 65535) { + codePoint -= 65536; + output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); + codePoint = 56320 | codePoint & 1023; + } + output += String.fromCharCode(codePoint); + return output; + }; + function decodeCodePoint(codePoint) { + if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { + return "\uFFFD"; + } + if (codePoint in decode_json_1.default) { + codePoint = decode_json_1.default[codePoint]; + } + return fromCodePoint(codePoint); + } + exports2.default = decodeCodePoint; + } +}); + +// node_modules/entities/lib/decode.js +var require_decode2 = __commonJS({ + "node_modules/entities/lib/decode.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.decodeHTML = exports2.decodeHTMLStrict = exports2.decodeXML = void 0; + var entities_json_1 = __importDefault(require_entities()); + var legacy_json_1 = __importDefault(require_legacy()); + var xml_json_1 = __importDefault(require_xml()); + var decode_codepoint_1 = __importDefault(require_decode_codepoint()); + var strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g; + exports2.decodeXML = getStrictDecoder(xml_json_1.default); + exports2.decodeHTMLStrict = getStrictDecoder(entities_json_1.default); + function getStrictDecoder(map) { + var replace = getReplacer(map); + return function(str) { + return String(str).replace(strictEntityRe, replace); + }; + } + var sorter = function(a, b) { + return a < b ? 1 : -1; + }; + exports2.decodeHTML = function() { + var legacy = Object.keys(legacy_json_1.default).sort(sorter); + var keys = Object.keys(entities_json_1.default).sort(sorter); + for (var i = 0, j = 0; i < keys.length; i++) { + if (legacy[j] === keys[i]) { + keys[i] += ";?"; + j++; + } else { + keys[i] += ";"; + } + } + var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g"); + var replace = getReplacer(entities_json_1.default); + function replacer(str) { + if (str.substr(-1) !== ";") + str += ";"; + return replace(str); + } + return function(str) { + return String(str).replace(re, replacer); + }; + }(); + function getReplacer(map) { + return function replace(str) { + if (str.charAt(1) === "#") { + var secondChar = str.charAt(2); + if (secondChar === "X" || secondChar === "x") { + return decode_codepoint_1.default(parseInt(str.substr(3), 16)); + } + return decode_codepoint_1.default(parseInt(str.substr(2), 10)); + } + return map[str.slice(1, -1)] || str; + }; + } + } +}); + +// node_modules/entities/lib/encode.js +var require_encode = __commonJS({ + "node_modules/entities/lib/encode.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.escapeUTF8 = exports2.escape = exports2.encodeNonAsciiHTML = exports2.encodeHTML = exports2.encodeXML = void 0; + var xml_json_1 = __importDefault(require_xml()); + var inverseXML = getInverseObj(xml_json_1.default); + var xmlReplacer = getInverseReplacer(inverseXML); + exports2.encodeXML = getASCIIEncoder(inverseXML); + var entities_json_1 = __importDefault(require_entities()); + var inverseHTML = getInverseObj(entities_json_1.default); + var htmlReplacer = getInverseReplacer(inverseHTML); + exports2.encodeHTML = getInverse(inverseHTML, htmlReplacer); + exports2.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML); + function getInverseObj(obj) { + return Object.keys(obj).sort().reduce(function(inverse, name) { + inverse[obj[name]] = "&" + name + ";"; + return inverse; + }, {}); + } + function getInverseReplacer(inverse) { + var single = []; + var multiple = []; + for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) { + var k = _a[_i]; + if (k.length === 1) { + single.push("\\" + k); + } else { + multiple.push(k); + } + } + single.sort(); + for (var start = 0; start < single.length - 1; start++) { + var end = start; + while (end < single.length - 1 && single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) { + end += 1; + } + var count = 1 + end - start; + if (count < 3) + continue; + single.splice(start, count, single[start] + "-" + single[end]); + } + multiple.unshift("[" + single.join("") + "]"); + return new RegExp(multiple.join("|"), "g"); + } + var reNonASCII = /(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g; + var getCodePoint = String.prototype.codePointAt != null ? function(str) { + return str.codePointAt(0); + } : function(c) { + return (c.charCodeAt(0) - 55296) * 1024 + c.charCodeAt(1) - 56320 + 65536; + }; + function singleCharReplacer(c) { + return "&#x" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0)).toString(16).toUpperCase() + ";"; + } + function getInverse(inverse, re) { + return function(data) { + return data.replace(re, function(name) { + return inverse[name]; + }).replace(reNonASCII, singleCharReplacer); + }; + } + var reEscapeChars = new RegExp(xmlReplacer.source + "|" + reNonASCII.source, "g"); + function escape(data) { + return data.replace(reEscapeChars, singleCharReplacer); + } + exports2.escape = escape; + function escapeUTF8(data) { + return data.replace(xmlReplacer, singleCharReplacer); + } + exports2.escapeUTF8 = escapeUTF8; + function getASCIIEncoder(obj) { + return function(data) { + return data.replace(reEscapeChars, function(c) { + return obj[c] || singleCharReplacer(c); + }); + }; + } + } +}); + +// node_modules/entities/lib/index.js +var require_lib4 = __commonJS({ + "node_modules/entities/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.decodeXMLStrict = exports2.decodeHTML5Strict = exports2.decodeHTML4Strict = exports2.decodeHTML5 = exports2.decodeHTML4 = exports2.decodeHTMLStrict = exports2.decodeHTML = exports2.decodeXML = exports2.encodeHTML5 = exports2.encodeHTML4 = exports2.escapeUTF8 = exports2.escape = exports2.encodeNonAsciiHTML = exports2.encodeHTML = exports2.encodeXML = exports2.encode = exports2.decodeStrict = exports2.decode = void 0; + var decode_1 = require_decode2(); + var encode_1 = require_encode(); + function decode(data, level) { + return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data); + } + exports2.decode = decode; + function decodeStrict(data, level) { + return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data); + } + exports2.decodeStrict = decodeStrict; + function encode(data, level) { + return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data); + } + exports2.encode = encode; + var encode_2 = require_encode(); + Object.defineProperty(exports2, "encodeXML", { enumerable: true, get: function() { + return encode_2.encodeXML; + } }); + Object.defineProperty(exports2, "encodeHTML", { enumerable: true, get: function() { + return encode_2.encodeHTML; + } }); + Object.defineProperty(exports2, "encodeNonAsciiHTML", { enumerable: true, get: function() { + return encode_2.encodeNonAsciiHTML; + } }); + Object.defineProperty(exports2, "escape", { enumerable: true, get: function() { + return encode_2.escape; + } }); + Object.defineProperty(exports2, "escapeUTF8", { enumerable: true, get: function() { + return encode_2.escapeUTF8; + } }); + Object.defineProperty(exports2, "encodeHTML4", { enumerable: true, get: function() { + return encode_2.encodeHTML; + } }); + Object.defineProperty(exports2, "encodeHTML5", { enumerable: true, get: function() { + return encode_2.encodeHTML; + } }); + var decode_2 = require_decode2(); + Object.defineProperty(exports2, "decodeXML", { enumerable: true, get: function() { + return decode_2.decodeXML; + } }); + Object.defineProperty(exports2, "decodeHTML", { enumerable: true, get: function() { + return decode_2.decodeHTML; + } }); + Object.defineProperty(exports2, "decodeHTMLStrict", { enumerable: true, get: function() { + return decode_2.decodeHTMLStrict; + } }); + Object.defineProperty(exports2, "decodeHTML4", { enumerable: true, get: function() { + return decode_2.decodeHTML; + } }); + Object.defineProperty(exports2, "decodeHTML5", { enumerable: true, get: function() { + return decode_2.decodeHTML; + } }); + Object.defineProperty(exports2, "decodeHTML4Strict", { enumerable: true, get: function() { + return decode_2.decodeHTMLStrict; + } }); + Object.defineProperty(exports2, "decodeHTML5Strict", { enumerable: true, get: function() { + return decode_2.decodeHTMLStrict; + } }); + Object.defineProperty(exports2, "decodeXMLStrict", { enumerable: true, get: function() { + return decode_2.decodeXML; + } }); + } +}); + +// node_modules/dom-serializer/lib/foreignNames.js +var require_foreignNames = __commonJS({ + "node_modules/dom-serializer/lib/foreignNames.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.attributeNames = exports2.elementNames = void 0; + exports2.elementNames = /* @__PURE__ */ new Map([ + ["altglyph", "altGlyph"], + ["altglyphdef", "altGlyphDef"], + ["altglyphitem", "altGlyphItem"], + ["animatecolor", "animateColor"], + ["animatemotion", "animateMotion"], + ["animatetransform", "animateTransform"], + ["clippath", "clipPath"], + ["feblend", "feBlend"], + ["fecolormatrix", "feColorMatrix"], + ["fecomponenttransfer", "feComponentTransfer"], + ["fecomposite", "feComposite"], + ["feconvolvematrix", "feConvolveMatrix"], + ["fediffuselighting", "feDiffuseLighting"], + ["fedisplacementmap", "feDisplacementMap"], + ["fedistantlight", "feDistantLight"], + ["fedropshadow", "feDropShadow"], + ["feflood", "feFlood"], + ["fefunca", "feFuncA"], + ["fefuncb", "feFuncB"], + ["fefuncg", "feFuncG"], + ["fefuncr", "feFuncR"], + ["fegaussianblur", "feGaussianBlur"], + ["feimage", "feImage"], + ["femerge", "feMerge"], + ["femergenode", "feMergeNode"], + ["femorphology", "feMorphology"], + ["feoffset", "feOffset"], + ["fepointlight", "fePointLight"], + ["fespecularlighting", "feSpecularLighting"], + ["fespotlight", "feSpotLight"], + ["fetile", "feTile"], + ["feturbulence", "feTurbulence"], + ["foreignobject", "foreignObject"], + ["glyphref", "glyphRef"], + ["lineargradient", "linearGradient"], + ["radialgradient", "radialGradient"], + ["textpath", "textPath"] + ]); + exports2.attributeNames = /* @__PURE__ */ new Map([ + ["definitionurl", "definitionURL"], + ["attributename", "attributeName"], + ["attributetype", "attributeType"], + ["basefrequency", "baseFrequency"], + ["baseprofile", "baseProfile"], + ["calcmode", "calcMode"], + ["clippathunits", "clipPathUnits"], + ["diffuseconstant", "diffuseConstant"], + ["edgemode", "edgeMode"], + ["filterunits", "filterUnits"], + ["glyphref", "glyphRef"], + ["gradienttransform", "gradientTransform"], + ["gradientunits", "gradientUnits"], + ["kernelmatrix", "kernelMatrix"], + ["kernelunitlength", "kernelUnitLength"], + ["keypoints", "keyPoints"], + ["keysplines", "keySplines"], + ["keytimes", "keyTimes"], + ["lengthadjust", "lengthAdjust"], + ["limitingconeangle", "limitingConeAngle"], + ["markerheight", "markerHeight"], + ["markerunits", "markerUnits"], + ["markerwidth", "markerWidth"], + ["maskcontentunits", "maskContentUnits"], + ["maskunits", "maskUnits"], + ["numoctaves", "numOctaves"], + ["pathlength", "pathLength"], + ["patterncontentunits", "patternContentUnits"], + ["patterntransform", "patternTransform"], + ["patternunits", "patternUnits"], + ["pointsatx", "pointsAtX"], + ["pointsaty", "pointsAtY"], + ["pointsatz", "pointsAtZ"], + ["preservealpha", "preserveAlpha"], + ["preserveaspectratio", "preserveAspectRatio"], + ["primitiveunits", "primitiveUnits"], + ["refx", "refX"], + ["refy", "refY"], + ["repeatcount", "repeatCount"], + ["repeatdur", "repeatDur"], + ["requiredextensions", "requiredExtensions"], + ["requiredfeatures", "requiredFeatures"], + ["specularconstant", "specularConstant"], + ["specularexponent", "specularExponent"], + ["spreadmethod", "spreadMethod"], + ["startoffset", "startOffset"], + ["stddeviation", "stdDeviation"], + ["stitchtiles", "stitchTiles"], + ["surfacescale", "surfaceScale"], + ["systemlanguage", "systemLanguage"], + ["tablevalues", "tableValues"], + ["targetx", "targetX"], + ["targety", "targetY"], + ["textlength", "textLength"], + ["viewbox", "viewBox"], + ["viewtarget", "viewTarget"], + ["xchannelselector", "xChannelSelector"], + ["ychannelselector", "yChannelSelector"], + ["zoomandpan", "zoomAndPan"] + ]); + } +}); + +// node_modules/dom-serializer/lib/index.js +var require_lib5 = __commonJS({ + "node_modules/dom-serializer/lib/index.js"(exports2) { + "use strict"; + var __assign = exports2 && exports2.__assign || function() { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { + return m[k]; + } }); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ElementType = __importStar(require_lib2()); + var entities_1 = require_lib4(); + var foreignNames_1 = require_foreignNames(); + var unencodedElements = /* @__PURE__ */ new Set([ + "style", + "script", + "xmp", + "iframe", + "noembed", + "noframes", + "plaintext", + "noscript" + ]); + function formatAttributes(attributes, opts) { + if (!attributes) + return; + return Object.keys(attributes).map(function(key) { + var _a, _b; + var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : ""; + if (opts.xmlMode === "foreign") { + key = (_b = foreignNames_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key; + } + if (!opts.emptyAttrs && !opts.xmlMode && value === "") { + return key; + } + return key + '="' + (opts.decodeEntities !== false ? entities_1.encodeXML(value) : value.replace(/"/g, """)) + '"'; + }).join(" "); + } + var singleTag = /* @__PURE__ */ new Set([ + "area", + "base", + "basefont", + "br", + "col", + "command", + "embed", + "frame", + "hr", + "img", + "input", + "isindex", + "keygen", + "link", + "meta", + "param", + "source", + "track", + "wbr" + ]); + function render(node, options) { + if (options === void 0) { + options = {}; + } + var nodes = "length" in node ? node : [node]; + var output = ""; + for (var i = 0; i < nodes.length; i++) { + output += renderNode(nodes[i], options); + } + return output; + } + exports2.default = render; + function renderNode(node, options) { + switch (node.type) { + case ElementType.Root: + return render(node.children, options); + case ElementType.Directive: + case ElementType.Doctype: + return renderDirective(node); + case ElementType.Comment: + return renderComment(node); + case ElementType.CDATA: + return renderCdata(node); + case ElementType.Script: + case ElementType.Style: + case ElementType.Tag: + return renderTag(node, options); + case ElementType.Text: + return renderText(node, options); + } + } + var foreignModeIntegrationPoints = /* @__PURE__ */ new Set([ + "mi", + "mo", + "mn", + "ms", + "mtext", + "annotation-xml", + "foreignObject", + "desc", + "title" + ]); + var foreignElements = /* @__PURE__ */ new Set(["svg", "math"]); + function renderTag(elem, opts) { + var _a; + if (opts.xmlMode === "foreign") { + elem.name = (_a = foreignNames_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name; + if (elem.parent && foreignModeIntegrationPoints.has(elem.parent.name)) { + opts = __assign(__assign({}, opts), { xmlMode: false }); + } + } + if (!opts.xmlMode && foreignElements.has(elem.name)) { + opts = __assign(__assign({}, opts), { xmlMode: "foreign" }); + } + var tag = "<" + elem.name; + var attribs = formatAttributes(elem.attribs, opts); + if (attribs) { + tag += " " + attribs; + } + if (elem.children.length === 0 && (opts.xmlMode ? opts.selfClosingTags !== false : opts.selfClosingTags && singleTag.has(elem.name))) { + if (!opts.xmlMode) + tag += " "; + tag += "/>"; + } else { + tag += ">"; + if (elem.children.length > 0) { + tag += render(elem.children, opts); + } + if (opts.xmlMode || !singleTag.has(elem.name)) { + tag += ""; + } + } + return tag; + } + function renderDirective(elem) { + return "<" + elem.data + ">"; + } + function renderText(elem, opts) { + var data = elem.data || ""; + if (opts.decodeEntities !== false && !(!opts.xmlMode && elem.parent && unencodedElements.has(elem.parent.name))) { + data = entities_1.encodeXML(data); + } + return data; + } + function renderCdata(elem) { + return ""; + } + function renderComment(elem) { + return ""; + } + } +}); + +// node_modules/domutils/lib/stringify.js +var require_stringify3 = __commonJS({ + "node_modules/domutils/lib/stringify.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.innerText = exports2.textContent = exports2.getText = exports2.getInnerHTML = exports2.getOuterHTML = void 0; + var domhandler_1 = require_lib3(); + var dom_serializer_1 = __importDefault(require_lib5()); + var domelementtype_1 = require_lib2(); + function getOuterHTML(node, options) { + return (0, dom_serializer_1.default)(node, options); + } + exports2.getOuterHTML = getOuterHTML; + function getInnerHTML(node, options) { + return (0, domhandler_1.hasChildren)(node) ? node.children.map(function(node2) { + return getOuterHTML(node2, options); + }).join("") : ""; + } + exports2.getInnerHTML = getInnerHTML; + function getText(node) { + if (Array.isArray(node)) + return node.map(getText).join(""); + if ((0, domhandler_1.isTag)(node)) + return node.name === "br" ? "\n" : getText(node.children); + if ((0, domhandler_1.isCDATA)(node)) + return getText(node.children); + if ((0, domhandler_1.isText)(node)) + return node.data; + return ""; + } + exports2.getText = getText; + function textContent(node) { + if (Array.isArray(node)) + return node.map(textContent).join(""); + if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) { + return textContent(node.children); + } + if ((0, domhandler_1.isText)(node)) + return node.data; + return ""; + } + exports2.textContent = textContent; + function innerText(node) { + if (Array.isArray(node)) + return node.map(innerText).join(""); + if ((0, domhandler_1.hasChildren)(node) && (node.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) { + return innerText(node.children); + } + if ((0, domhandler_1.isText)(node)) + return node.data; + return ""; + } + exports2.innerText = innerText; + } +}); + +// node_modules/domutils/lib/traversal.js +var require_traversal = __commonJS({ + "node_modules/domutils/lib/traversal.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.prevElementSibling = exports2.nextElementSibling = exports2.getName = exports2.hasAttrib = exports2.getAttributeValue = exports2.getSiblings = exports2.getParent = exports2.getChildren = void 0; + var domhandler_1 = require_lib3(); + var emptyArray = []; + function getChildren(elem) { + var _a; + return (_a = elem.children) !== null && _a !== void 0 ? _a : emptyArray; + } + exports2.getChildren = getChildren; + function getParent(elem) { + return elem.parent || null; + } + exports2.getParent = getParent; + function getSiblings(elem) { + var _a, _b; + var parent = getParent(elem); + if (parent != null) + return getChildren(parent); + var siblings = [elem]; + var prev = elem.prev, next = elem.next; + while (prev != null) { + siblings.unshift(prev); + _a = prev, prev = _a.prev; + } + while (next != null) { + siblings.push(next); + _b = next, next = _b.next; + } + return siblings; + } + exports2.getSiblings = getSiblings; + function getAttributeValue(elem, name) { + var _a; + return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name]; + } + exports2.getAttributeValue = getAttributeValue; + function hasAttrib(elem, name) { + return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null; + } + exports2.hasAttrib = hasAttrib; + function getName(elem) { + return elem.name; + } + exports2.getName = getName; + function nextElementSibling(elem) { + var _a; + var next = elem.next; + while (next !== null && !(0, domhandler_1.isTag)(next)) + _a = next, next = _a.next; + return next; + } + exports2.nextElementSibling = nextElementSibling; + function prevElementSibling(elem) { + var _a; + var prev = elem.prev; + while (prev !== null && !(0, domhandler_1.isTag)(prev)) + _a = prev, prev = _a.prev; + return prev; + } + exports2.prevElementSibling = prevElementSibling; + } +}); + +// node_modules/domutils/lib/manipulation.js +var require_manipulation = __commonJS({ + "node_modules/domutils/lib/manipulation.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.prepend = exports2.prependChild = exports2.append = exports2.appendChild = exports2.replaceElement = exports2.removeElement = void 0; + function removeElement(elem) { + if (elem.prev) + elem.prev.next = elem.next; + if (elem.next) + elem.next.prev = elem.prev; + if (elem.parent) { + var childs = elem.parent.children; + childs.splice(childs.lastIndexOf(elem), 1); + } + } + exports2.removeElement = removeElement; + function replaceElement(elem, replacement) { + var prev = replacement.prev = elem.prev; + if (prev) { + prev.next = replacement; + } + var next = replacement.next = elem.next; + if (next) { + next.prev = replacement; + } + var parent = replacement.parent = elem.parent; + if (parent) { + var childs = parent.children; + childs[childs.lastIndexOf(elem)] = replacement; + } + } + exports2.replaceElement = replaceElement; + function appendChild(elem, child) { + removeElement(child); + child.next = null; + child.parent = elem; + if (elem.children.push(child) > 1) { + var sibling = elem.children[elem.children.length - 2]; + sibling.next = child; + child.prev = sibling; + } else { + child.prev = null; + } + } + exports2.appendChild = appendChild; + function append(elem, next) { + removeElement(next); + var parent = elem.parent; + var currNext = elem.next; + next.next = currNext; + next.prev = elem; + elem.next = next; + next.parent = parent; + if (currNext) { + currNext.prev = next; + if (parent) { + var childs = parent.children; + childs.splice(childs.lastIndexOf(currNext), 0, next); + } + } else if (parent) { + parent.children.push(next); + } + } + exports2.append = append; + function prependChild(elem, child) { + removeElement(child); + child.parent = elem; + child.prev = null; + if (elem.children.unshift(child) !== 1) { + var sibling = elem.children[1]; + sibling.prev = child; + child.next = sibling; + } else { + child.next = null; + } + } + exports2.prependChild = prependChild; + function prepend(elem, prev) { + removeElement(prev); + var parent = elem.parent; + if (parent) { + var childs = parent.children; + childs.splice(childs.indexOf(elem), 0, prev); + } + if (elem.prev) { + elem.prev.next = prev; + } + prev.parent = parent; + prev.prev = elem.prev; + prev.next = elem; + elem.prev = prev; + } + exports2.prepend = prepend; + } +}); + +// node_modules/domutils/lib/querying.js +var require_querying = __commonJS({ + "node_modules/domutils/lib/querying.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.findAll = exports2.existsOne = exports2.findOne = exports2.findOneChild = exports2.find = exports2.filter = void 0; + var domhandler_1 = require_lib3(); + function filter(test, node, recurse, limit) { + if (recurse === void 0) { + recurse = true; + } + if (limit === void 0) { + limit = Infinity; + } + if (!Array.isArray(node)) + node = [node]; + return find(test, node, recurse, limit); + } + exports2.filter = filter; + function find(test, nodes, recurse, limit) { + var result = []; + for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) { + var elem = nodes_1[_i]; + if (test(elem)) { + result.push(elem); + if (--limit <= 0) + break; + } + if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) { + var children = find(test, elem.children, recurse, limit); + result.push.apply(result, children); + limit -= children.length; + if (limit <= 0) + break; + } + } + return result; + } + exports2.find = find; + function findOneChild(test, nodes) { + return nodes.find(test); + } + exports2.findOneChild = findOneChild; + function findOne(test, nodes, recurse) { + if (recurse === void 0) { + recurse = true; + } + var elem = null; + for (var i = 0; i < nodes.length && !elem; i++) { + var checked = nodes[i]; + if (!(0, domhandler_1.isTag)(checked)) { + continue; + } else if (test(checked)) { + elem = checked; + } else if (recurse && checked.children.length > 0) { + elem = findOne(test, checked.children); + } + } + return elem; + } + exports2.findOne = findOne; + function existsOne(test, nodes) { + return nodes.some(function(checked) { + return (0, domhandler_1.isTag)(checked) && (test(checked) || checked.children.length > 0 && existsOne(test, checked.children)); + }); + } + exports2.existsOne = existsOne; + function findAll(test, nodes) { + var _a; + var result = []; + var stack = nodes.filter(domhandler_1.isTag); + var elem; + while (elem = stack.shift()) { + var children = (_a = elem.children) === null || _a === void 0 ? void 0 : _a.filter(domhandler_1.isTag); + if (children && children.length > 0) { + stack.unshift.apply(stack, children); + } + if (test(elem)) + result.push(elem); + } + return result; + } + exports2.findAll = findAll; + } +}); + +// node_modules/domutils/lib/legacy.js +var require_legacy2 = __commonJS({ + "node_modules/domutils/lib/legacy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getElementsByTagType = exports2.getElementsByTagName = exports2.getElementById = exports2.getElements = exports2.testElement = void 0; + var domhandler_1 = require_lib3(); + var querying_1 = require_querying(); + var Checks = { + tag_name: function(name) { + if (typeof name === "function") { + return function(elem) { + return (0, domhandler_1.isTag)(elem) && name(elem.name); + }; + } else if (name === "*") { + return domhandler_1.isTag; + } + return function(elem) { + return (0, domhandler_1.isTag)(elem) && elem.name === name; + }; + }, + tag_type: function(type) { + if (typeof type === "function") { + return function(elem) { + return type(elem.type); + }; + } + return function(elem) { + return elem.type === type; + }; + }, + tag_contains: function(data) { + if (typeof data === "function") { + return function(elem) { + return (0, domhandler_1.isText)(elem) && data(elem.data); + }; + } + return function(elem) { + return (0, domhandler_1.isText)(elem) && elem.data === data; + }; + } + }; + function getAttribCheck(attrib, value) { + if (typeof value === "function") { + return function(elem) { + return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]); + }; + } + return function(elem) { + return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value; + }; + } + function combineFuncs(a, b) { + return function(elem) { + return a(elem) || b(elem); + }; + } + function compileTest(options) { + var funcs = Object.keys(options).map(function(key) { + var value = options[key]; + return Object.prototype.hasOwnProperty.call(Checks, key) ? Checks[key](value) : getAttribCheck(key, value); + }); + return funcs.length === 0 ? null : funcs.reduce(combineFuncs); + } + function testElement(options, node) { + var test = compileTest(options); + return test ? test(node) : true; + } + exports2.testElement = testElement; + function getElements(options, nodes, recurse, limit) { + if (limit === void 0) { + limit = Infinity; + } + var test = compileTest(options); + return test ? (0, querying_1.filter)(test, nodes, recurse, limit) : []; + } + exports2.getElements = getElements; + function getElementById(id, nodes, recurse) { + if (recurse === void 0) { + recurse = true; + } + if (!Array.isArray(nodes)) + nodes = [nodes]; + return (0, querying_1.findOne)(getAttribCheck("id", id), nodes, recurse); + } + exports2.getElementById = getElementById; + function getElementsByTagName(tagName, nodes, recurse, limit) { + if (recurse === void 0) { + recurse = true; + } + if (limit === void 0) { + limit = Infinity; + } + return (0, querying_1.filter)(Checks.tag_name(tagName), nodes, recurse, limit); + } + exports2.getElementsByTagName = getElementsByTagName; + function getElementsByTagType(type, nodes, recurse, limit) { + if (recurse === void 0) { + recurse = true; + } + if (limit === void 0) { + limit = Infinity; + } + return (0, querying_1.filter)(Checks.tag_type(type), nodes, recurse, limit); + } + exports2.getElementsByTagType = getElementsByTagType; + } +}); + +// node_modules/domutils/lib/helpers.js +var require_helpers = __commonJS({ + "node_modules/domutils/lib/helpers.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.uniqueSort = exports2.compareDocumentPosition = exports2.removeSubsets = void 0; + var domhandler_1 = require_lib3(); + function removeSubsets(nodes) { + var idx = nodes.length; + while (--idx >= 0) { + var node = nodes[idx]; + if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) { + nodes.splice(idx, 1); + continue; + } + for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) { + if (nodes.includes(ancestor)) { + nodes.splice(idx, 1); + break; + } + } + } + return nodes; + } + exports2.removeSubsets = removeSubsets; + function compareDocumentPosition(nodeA, nodeB) { + var aParents = []; + var bParents = []; + if (nodeA === nodeB) { + return 0; + } + var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent; + while (current) { + aParents.unshift(current); + current = current.parent; + } + current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent; + while (current) { + bParents.unshift(current); + current = current.parent; + } + var maxIdx = Math.min(aParents.length, bParents.length); + var idx = 0; + while (idx < maxIdx && aParents[idx] === bParents[idx]) { + idx++; + } + if (idx === 0) { + return 1; + } + var sharedParent = aParents[idx - 1]; + var siblings = sharedParent.children; + var aSibling = aParents[idx]; + var bSibling = bParents[idx]; + if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) { + if (sharedParent === nodeB) { + return 4 | 16; + } + return 4; + } + if (sharedParent === nodeA) { + return 2 | 8; + } + return 2; + } + exports2.compareDocumentPosition = compareDocumentPosition; + function uniqueSort(nodes) { + nodes = nodes.filter(function(node, i, arr) { + return !arr.includes(node, i + 1); + }); + nodes.sort(function(a, b) { + var relative = compareDocumentPosition(a, b); + if (relative & 2) { + return -1; + } else if (relative & 4) { + return 1; + } + return 0; + }); + return nodes; + } + exports2.uniqueSort = uniqueSort; + } +}); + +// node_modules/domutils/lib/feeds.js +var require_feeds = __commonJS({ + "node_modules/domutils/lib/feeds.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getFeed = void 0; + var stringify_1 = require_stringify3(); + var legacy_1 = require_legacy2(); + function getFeed(doc) { + var feedRoot = getOneElement(isValidFeed, doc); + return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot); + } + exports2.getFeed = getFeed; + function getAtomFeed(feedRoot) { + var _a; + var childs = feedRoot.children; + var feed = { + type: "atom", + items: (0, legacy_1.getElementsByTagName)("entry", childs).map(function(item) { + var _a2; + var children = item.children; + var entry = { media: getMediaElements(children) }; + addConditionally(entry, "id", "id", children); + addConditionally(entry, "title", "title", children); + var href2 = (_a2 = getOneElement("link", children)) === null || _a2 === void 0 ? void 0 : _a2.attribs.href; + if (href2) { + entry.link = href2; + } + var description = fetch("summary", children) || fetch("content", children); + if (description) { + entry.description = description; + } + var pubDate = fetch("updated", children); + if (pubDate) { + entry.pubDate = new Date(pubDate); + } + return entry; + }) + }; + addConditionally(feed, "id", "id", childs); + addConditionally(feed, "title", "title", childs); + var href = (_a = getOneElement("link", childs)) === null || _a === void 0 ? void 0 : _a.attribs.href; + if (href) { + feed.link = href; + } + addConditionally(feed, "description", "subtitle", childs); + var updated = fetch("updated", childs); + if (updated) { + feed.updated = new Date(updated); + } + addConditionally(feed, "author", "email", childs, true); + return feed; + } + function getRssFeed(feedRoot) { + var _a, _b; + var childs = (_b = (_a = getOneElement("channel", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : []; + var feed = { + type: feedRoot.name.substr(0, 3), + id: "", + items: (0, legacy_1.getElementsByTagName)("item", feedRoot.children).map(function(item) { + var children = item.children; + var entry = { media: getMediaElements(children) }; + addConditionally(entry, "id", "guid", children); + addConditionally(entry, "title", "title", children); + addConditionally(entry, "link", "link", children); + addConditionally(entry, "description", "description", children); + var pubDate = fetch("pubDate", children); + if (pubDate) + entry.pubDate = new Date(pubDate); + return entry; + }) + }; + addConditionally(feed, "title", "title", childs); + addConditionally(feed, "link", "link", childs); + addConditionally(feed, "description", "description", childs); + var updated = fetch("lastBuildDate", childs); + if (updated) { + feed.updated = new Date(updated); + } + addConditionally(feed, "author", "managingEditor", childs, true); + return feed; + } + var MEDIA_KEYS_STRING = ["url", "type", "lang"]; + var MEDIA_KEYS_INT = [ + "fileSize", + "bitrate", + "framerate", + "samplingrate", + "channels", + "duration", + "height", + "width" + ]; + function getMediaElements(where) { + return (0, legacy_1.getElementsByTagName)("media:content", where).map(function(elem) { + var attribs = elem.attribs; + var media = { + medium: attribs.medium, + isDefault: !!attribs.isDefault + }; + for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING; _i < MEDIA_KEYS_STRING_1.length; _i++) { + var attrib = MEDIA_KEYS_STRING_1[_i]; + if (attribs[attrib]) { + media[attrib] = attribs[attrib]; + } + } + for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT; _a < MEDIA_KEYS_INT_1.length; _a++) { + var attrib = MEDIA_KEYS_INT_1[_a]; + if (attribs[attrib]) { + media[attrib] = parseInt(attribs[attrib], 10); + } + } + if (attribs.expression) { + media.expression = attribs.expression; + } + return media; + }); + } + function getOneElement(tagName, node) { + return (0, legacy_1.getElementsByTagName)(tagName, node, true, 1)[0]; + } + function fetch(tagName, where, recurse) { + if (recurse === void 0) { + recurse = false; + } + return (0, stringify_1.textContent)((0, legacy_1.getElementsByTagName)(tagName, where, recurse, 1)).trim(); + } + function addConditionally(obj, prop, tagName, where, recurse) { + if (recurse === void 0) { + recurse = false; + } + var val = fetch(tagName, where, recurse); + if (val) + obj[prop] = val; + } + function isValidFeed(value) { + return value === "rss" || value === "feed" || value === "rdf:RDF"; + } + } +}); + +// node_modules/domutils/lib/index.js +var require_lib6 = __commonJS({ + "node_modules/domutils/lib/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { + return m[k]; + } }); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) + __createBinding(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.hasChildren = exports2.isDocument = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = void 0; + __exportStar(require_stringify3(), exports2); + __exportStar(require_traversal(), exports2); + __exportStar(require_manipulation(), exports2); + __exportStar(require_querying(), exports2); + __exportStar(require_legacy2(), exports2); + __exportStar(require_helpers(), exports2); + __exportStar(require_feeds(), exports2); + var domhandler_1 = require_lib3(); + Object.defineProperty(exports2, "isTag", { enumerable: true, get: function() { + return domhandler_1.isTag; + } }); + Object.defineProperty(exports2, "isCDATA", { enumerable: true, get: function() { + return domhandler_1.isCDATA; + } }); + Object.defineProperty(exports2, "isText", { enumerable: true, get: function() { + return domhandler_1.isText; + } }); + Object.defineProperty(exports2, "isComment", { enumerable: true, get: function() { + return domhandler_1.isComment; + } }); + Object.defineProperty(exports2, "isDocument", { enumerable: true, get: function() { + return domhandler_1.isDocument; + } }); + Object.defineProperty(exports2, "hasChildren", { enumerable: true, get: function() { + return domhandler_1.hasChildren; + } }); + } +}); + +// node_modules/boolbase/index.js +var require_boolbase = __commonJS({ + "node_modules/boolbase/index.js"(exports2, module2) { + module2.exports = { + trueFunc: function trueFunc() { + return true; + }, + falseFunc: function falseFunc() { + return false; + } + }; + } +}); + +// node_modules/css-what/lib/commonjs/types.js +var require_types = __commonJS({ + "node_modules/css-what/lib/commonjs/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AttributeAction = exports2.IgnoreCaseMode = exports2.SelectorType = void 0; + var SelectorType; + (function(SelectorType2) { + SelectorType2["Attribute"] = "attribute"; + SelectorType2["Pseudo"] = "pseudo"; + SelectorType2["PseudoElement"] = "pseudo-element"; + SelectorType2["Tag"] = "tag"; + SelectorType2["Universal"] = "universal"; + SelectorType2["Adjacent"] = "adjacent"; + SelectorType2["Child"] = "child"; + SelectorType2["Descendant"] = "descendant"; + SelectorType2["Parent"] = "parent"; + SelectorType2["Sibling"] = "sibling"; + SelectorType2["ColumnCombinator"] = "column-combinator"; + })(SelectorType = exports2.SelectorType || (exports2.SelectorType = {})); + exports2.IgnoreCaseMode = { + Unknown: null, + QuirksMode: "quirks", + IgnoreCase: true, + CaseSensitive: false + }; + var AttributeAction; + (function(AttributeAction2) { + AttributeAction2["Any"] = "any"; + AttributeAction2["Element"] = "element"; + AttributeAction2["End"] = "end"; + AttributeAction2["Equals"] = "equals"; + AttributeAction2["Exists"] = "exists"; + AttributeAction2["Hyphen"] = "hyphen"; + AttributeAction2["Not"] = "not"; + AttributeAction2["Start"] = "start"; + })(AttributeAction = exports2.AttributeAction || (exports2.AttributeAction = {})); + } +}); + +// node_modules/css-what/lib/commonjs/parse.js +var require_parse4 = __commonJS({ + "node_modules/css-what/lib/commonjs/parse.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.parse = exports2.isTraversal = void 0; + var types_1 = require_types(); + var reName = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/; + var reEscape = /\\([\da-f]{1,6}\s?|(\s)|.)/gi; + var actionTypes = /* @__PURE__ */ new Map([ + [126, types_1.AttributeAction.Element], + [94, types_1.AttributeAction.Start], + [36, types_1.AttributeAction.End], + [42, types_1.AttributeAction.Any], + [33, types_1.AttributeAction.Not], + [124, types_1.AttributeAction.Hyphen] + ]); + var unpackPseudos = /* @__PURE__ */ new Set([ + "has", + "not", + "matches", + "is", + "where", + "host", + "host-context" + ]); + function isTraversal(selector) { + switch (selector.type) { + case types_1.SelectorType.Adjacent: + case types_1.SelectorType.Child: + case types_1.SelectorType.Descendant: + case types_1.SelectorType.Parent: + case types_1.SelectorType.Sibling: + case types_1.SelectorType.ColumnCombinator: + return true; + default: + return false; + } + } + exports2.isTraversal = isTraversal; + var stripQuotesFromPseudos = /* @__PURE__ */ new Set(["contains", "icontains"]); + function funescape(_, escaped, escapedWhitespace) { + var high = parseInt(escaped, 16) - 65536; + return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320); + } + function unescapeCSS(str) { + return str.replace(reEscape, funescape); + } + function isQuote(c) { + return c === 39 || c === 34; + } + function isWhitespace(c) { + return c === 32 || c === 9 || c === 10 || c === 12 || c === 13; + } + function parse(selector) { + var subselects = []; + var endIndex = parseSelector(subselects, "".concat(selector), 0); + if (endIndex < selector.length) { + throw new Error("Unmatched selector: ".concat(selector.slice(endIndex))); + } + return subselects; + } + exports2.parse = parse; + function parseSelector(subselects, selector, selectorIndex) { + var tokens = []; + function getName(offset) { + var match = selector.slice(selectorIndex + offset).match(reName); + if (!match) { + throw new Error("Expected name, found ".concat(selector.slice(selectorIndex))); + } + var name = match[0]; + selectorIndex += offset + name.length; + return unescapeCSS(name); + } + function stripWhitespace(offset) { + selectorIndex += offset; + while (selectorIndex < selector.length && isWhitespace(selector.charCodeAt(selectorIndex))) { + selectorIndex++; + } + } + function readValueWithParenthesis() { + selectorIndex += 1; + var start = selectorIndex; + var counter = 1; + for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) { + if (selector.charCodeAt(selectorIndex) === 40 && !isEscaped(selectorIndex)) { + counter++; + } else if (selector.charCodeAt(selectorIndex) === 41 && !isEscaped(selectorIndex)) { + counter--; + } + } + if (counter) { + throw new Error("Parenthesis not matched"); + } + return unescapeCSS(selector.slice(start, selectorIndex - 1)); + } + function isEscaped(pos) { + var slashCount = 0; + while (selector.charCodeAt(--pos) === 92) + slashCount++; + return (slashCount & 1) === 1; + } + function ensureNotTraversal() { + if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) { + throw new Error("Did not expect successive traversals."); + } + } + function addTraversal(type) { + if (tokens.length > 0 && tokens[tokens.length - 1].type === types_1.SelectorType.Descendant) { + tokens[tokens.length - 1].type = type; + return; + } + ensureNotTraversal(); + tokens.push({ type }); + } + function addSpecialAttribute(name, action2) { + tokens.push({ + type: types_1.SelectorType.Attribute, + name, + action: action2, + value: getName(1), + namespace: null, + ignoreCase: "quirks" + }); + } + function finalizeSubselector() { + if (tokens.length && tokens[tokens.length - 1].type === types_1.SelectorType.Descendant) { + tokens.pop(); + } + if (tokens.length === 0) { + throw new Error("Empty sub-selector"); + } + subselects.push(tokens); + } + stripWhitespace(0); + if (selector.length === selectorIndex) { + return selectorIndex; + } + loop: + while (selectorIndex < selector.length) { + var firstChar = selector.charCodeAt(selectorIndex); + switch (firstChar) { + case 32: + case 9: + case 10: + case 12: + case 13: { + if (tokens.length === 0 || tokens[0].type !== types_1.SelectorType.Descendant) { + ensureNotTraversal(); + tokens.push({ type: types_1.SelectorType.Descendant }); + } + stripWhitespace(1); + break; + } + case 62: { + addTraversal(types_1.SelectorType.Child); + stripWhitespace(1); + break; + } + case 60: { + addTraversal(types_1.SelectorType.Parent); + stripWhitespace(1); + break; + } + case 126: { + addTraversal(types_1.SelectorType.Sibling); + stripWhitespace(1); + break; + } + case 43: { + addTraversal(types_1.SelectorType.Adjacent); + stripWhitespace(1); + break; + } + case 46: { + addSpecialAttribute("class", types_1.AttributeAction.Element); + break; + } + case 35: { + addSpecialAttribute("id", types_1.AttributeAction.Equals); + break; + } + case 91: { + stripWhitespace(1); + var name_1 = void 0; + var namespace = null; + if (selector.charCodeAt(selectorIndex) === 124) { + name_1 = getName(1); + } else if (selector.startsWith("*|", selectorIndex)) { + namespace = "*"; + name_1 = getName(2); + } else { + name_1 = getName(0); + if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 61) { + namespace = name_1; + name_1 = getName(1); + } + } + stripWhitespace(0); + var action = types_1.AttributeAction.Exists; + var possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex)); + if (possibleAction) { + action = possibleAction; + if (selector.charCodeAt(selectorIndex + 1) !== 61) { + throw new Error("Expected `=`"); + } + stripWhitespace(2); + } else if (selector.charCodeAt(selectorIndex) === 61) { + action = types_1.AttributeAction.Equals; + stripWhitespace(1); + } + var value = ""; + var ignoreCase = null; + if (action !== "exists") { + if (isQuote(selector.charCodeAt(selectorIndex))) { + var quote = selector.charCodeAt(selectorIndex); + var sectionEnd = selectorIndex + 1; + while (sectionEnd < selector.length && (selector.charCodeAt(sectionEnd) !== quote || isEscaped(sectionEnd))) { + sectionEnd += 1; + } + if (selector.charCodeAt(sectionEnd) !== quote) { + throw new Error("Attribute value didn't end"); + } + value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd)); + selectorIndex = sectionEnd + 1; + } else { + var valueStart = selectorIndex; + while (selectorIndex < selector.length && (!isWhitespace(selector.charCodeAt(selectorIndex)) && selector.charCodeAt(selectorIndex) !== 93 || isEscaped(selectorIndex))) { + selectorIndex += 1; + } + value = unescapeCSS(selector.slice(valueStart, selectorIndex)); + } + stripWhitespace(0); + var forceIgnore = selector.charCodeAt(selectorIndex) | 32; + if (forceIgnore === 115) { + ignoreCase = false; + stripWhitespace(1); + } else if (forceIgnore === 105) { + ignoreCase = true; + stripWhitespace(1); + } + } + if (selector.charCodeAt(selectorIndex) !== 93) { + throw new Error("Attribute selector didn't terminate"); + } + selectorIndex += 1; + var attributeSelector = { + type: types_1.SelectorType.Attribute, + name: name_1, + action, + value, + namespace, + ignoreCase + }; + tokens.push(attributeSelector); + break; + } + case 58: { + if (selector.charCodeAt(selectorIndex + 1) === 58) { + tokens.push({ + type: types_1.SelectorType.PseudoElement, + name: getName(2).toLowerCase(), + data: selector.charCodeAt(selectorIndex) === 40 ? readValueWithParenthesis() : null + }); + continue; + } + var name_2 = getName(1).toLowerCase(); + var data = null; + if (selector.charCodeAt(selectorIndex) === 40) { + if (unpackPseudos.has(name_2)) { + if (isQuote(selector.charCodeAt(selectorIndex + 1))) { + throw new Error("Pseudo-selector ".concat(name_2, " cannot be quoted")); + } + data = []; + selectorIndex = parseSelector(data, selector, selectorIndex + 1); + if (selector.charCodeAt(selectorIndex) !== 41) { + throw new Error("Missing closing parenthesis in :".concat(name_2, " (").concat(selector, ")")); + } + selectorIndex += 1; + } else { + data = readValueWithParenthesis(); + if (stripQuotesFromPseudos.has(name_2)) { + var quot = data.charCodeAt(0); + if (quot === data.charCodeAt(data.length - 1) && isQuote(quot)) { + data = data.slice(1, -1); + } + } + data = unescapeCSS(data); + } + } + tokens.push({ type: types_1.SelectorType.Pseudo, name: name_2, data }); + break; + } + case 44: { + finalizeSubselector(); + tokens = []; + stripWhitespace(1); + break; + } + default: { + if (selector.startsWith("/*", selectorIndex)) { + var endIndex = selector.indexOf("*/", selectorIndex + 2); + if (endIndex < 0) { + throw new Error("Comment was not terminated"); + } + selectorIndex = endIndex + 2; + if (tokens.length === 0) { + stripWhitespace(0); + } + break; + } + var namespace = null; + var name_3 = void 0; + if (firstChar === 42) { + selectorIndex += 1; + name_3 = "*"; + } else if (firstChar === 124) { + name_3 = ""; + if (selector.charCodeAt(selectorIndex + 1) === 124) { + addTraversal(types_1.SelectorType.ColumnCombinator); + stripWhitespace(2); + break; + } + } else if (reName.test(selector.slice(selectorIndex))) { + name_3 = getName(0); + } else { + break loop; + } + if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 124) { + namespace = name_3; + if (selector.charCodeAt(selectorIndex + 1) === 42) { + name_3 = "*"; + selectorIndex += 2; + } else { + name_3 = getName(1); + } + } + tokens.push(name_3 === "*" ? { type: types_1.SelectorType.Universal, namespace } : { type: types_1.SelectorType.Tag, name: name_3, namespace }); + } + } + } + finalizeSubselector(); + return selectorIndex; + } + } +}); + +// node_modules/css-what/lib/commonjs/stringify.js +var require_stringify4 = __commonJS({ + "node_modules/css-what/lib/commonjs/stringify.js"(exports2) { + "use strict"; + var __spreadArray = exports2 && exports2.__spreadArray || function(to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.stringify = void 0; + var types_1 = require_types(); + var attribValChars = ["\\", '"']; + var pseudoValChars = __spreadArray(__spreadArray([], attribValChars, true), ["(", ")"], false); + var charsToEscapeInAttributeValue = new Set(attribValChars.map(function(c) { + return c.charCodeAt(0); + })); + var charsToEscapeInPseudoValue = new Set(pseudoValChars.map(function(c) { + return c.charCodeAt(0); + })); + var charsToEscapeInName = new Set(__spreadArray(__spreadArray([], pseudoValChars, true), [ + "~", + "^", + "$", + "*", + "+", + "!", + "|", + ":", + "[", + "]", + " ", + "." + ], false).map(function(c) { + return c.charCodeAt(0); + })); + function stringify(selector) { + return selector.map(function(token) { + return token.map(stringifyToken).join(""); + }).join(", "); + } + exports2.stringify = stringify; + function stringifyToken(token, index, arr) { + switch (token.type) { + case types_1.SelectorType.Child: + return index === 0 ? "> " : " > "; + case types_1.SelectorType.Parent: + return index === 0 ? "< " : " < "; + case types_1.SelectorType.Sibling: + return index === 0 ? "~ " : " ~ "; + case types_1.SelectorType.Adjacent: + return index === 0 ? "+ " : " + "; + case types_1.SelectorType.Descendant: + return " "; + case types_1.SelectorType.ColumnCombinator: + return index === 0 ? "|| " : " || "; + case types_1.SelectorType.Universal: + return token.namespace === "*" && index + 1 < arr.length && "name" in arr[index + 1] ? "" : "".concat(getNamespace(token.namespace), "*"); + case types_1.SelectorType.Tag: + return getNamespacedName(token); + case types_1.SelectorType.PseudoElement: + return "::".concat(escapeName(token.name, charsToEscapeInName)).concat(token.data === null ? "" : "(".concat(escapeName(token.data, charsToEscapeInPseudoValue), ")")); + case types_1.SelectorType.Pseudo: + return ":".concat(escapeName(token.name, charsToEscapeInName)).concat(token.data === null ? "" : "(".concat(typeof token.data === "string" ? escapeName(token.data, charsToEscapeInPseudoValue) : stringify(token.data), ")")); + case types_1.SelectorType.Attribute: { + if (token.name === "id" && token.action === types_1.AttributeAction.Equals && token.ignoreCase === "quirks" && !token.namespace) { + return "#".concat(escapeName(token.value, charsToEscapeInName)); + } + if (token.name === "class" && token.action === types_1.AttributeAction.Element && token.ignoreCase === "quirks" && !token.namespace) { + return ".".concat(escapeName(token.value, charsToEscapeInName)); + } + var name_1 = getNamespacedName(token); + if (token.action === types_1.AttributeAction.Exists) { + return "[".concat(name_1, "]"); + } + return "[".concat(name_1).concat(getActionValue(token.action), '="').concat(escapeName(token.value, charsToEscapeInAttributeValue), '"').concat(token.ignoreCase === null ? "" : token.ignoreCase ? " i" : " s", "]"); + } + } + } + function getActionValue(action) { + switch (action) { + case types_1.AttributeAction.Equals: + return ""; + case types_1.AttributeAction.Element: + return "~"; + case types_1.AttributeAction.Start: + return "^"; + case types_1.AttributeAction.End: + return "$"; + case types_1.AttributeAction.Any: + return "*"; + case types_1.AttributeAction.Not: + return "!"; + case types_1.AttributeAction.Hyphen: + return "|"; + case types_1.AttributeAction.Exists: + throw new Error("Shouldn't be here"); + } + } + function getNamespacedName(token) { + return "".concat(getNamespace(token.namespace)).concat(escapeName(token.name, charsToEscapeInName)); + } + function getNamespace(namespace) { + return namespace !== null ? "".concat(namespace === "*" ? "*" : escapeName(namespace, charsToEscapeInName), "|") : ""; + } + function escapeName(str, charsToEscape) { + var lastIdx = 0; + var ret = ""; + for (var i = 0; i < str.length; i++) { + if (charsToEscape.has(str.charCodeAt(i))) { + ret += "".concat(str.slice(lastIdx, i), "\\").concat(str.charAt(i)); + lastIdx = i + 1; + } + } + return ret.length > 0 ? ret + str.slice(lastIdx) : str; + } + } +}); + +// node_modules/css-what/lib/commonjs/index.js +var require_commonjs = __commonJS({ + "node_modules/css-what/lib/commonjs/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + 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 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) + __createBinding(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.stringify = exports2.parse = exports2.isTraversal = void 0; + __exportStar(require_types(), exports2); + var parse_1 = require_parse4(); + Object.defineProperty(exports2, "isTraversal", { enumerable: true, get: function() { + return parse_1.isTraversal; + } }); + Object.defineProperty(exports2, "parse", { enumerable: true, get: function() { + return parse_1.parse; + } }); + var stringify_1 = require_stringify4(); + Object.defineProperty(exports2, "stringify", { enumerable: true, get: function() { + return stringify_1.stringify; + } }); + } +}); + +// node_modules/css-select/lib/procedure.js +var require_procedure = __commonJS({ + "node_modules/css-select/lib/procedure.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isTraversal = exports2.procedure = void 0; + exports2.procedure = { + universal: 50, + tag: 30, + attribute: 1, + pseudo: 0, + "pseudo-element": 0, + "column-combinator": -1, + descendant: -1, + child: -1, + parent: -1, + sibling: -1, + adjacent: -1, + _flexibleDescendant: -1 + }; + function isTraversal(t) { + return exports2.procedure[t.type] < 0; + } + exports2.isTraversal = isTraversal; + } +}); + +// node_modules/css-select/lib/sort.js +var require_sort = __commonJS({ + "node_modules/css-select/lib/sort.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var css_what_1 = require_commonjs(); + var procedure_1 = require_procedure(); + var attributes = { + exists: 10, + equals: 8, + not: 7, + start: 6, + end: 6, + any: 5, + hyphen: 4, + element: 4 + }; + function sortByProcedure(arr) { + var procs = arr.map(getProcedure); + for (var i = 1; i < arr.length; i++) { + var procNew = procs[i]; + if (procNew < 0) + continue; + for (var j = i - 1; j >= 0 && procNew < procs[j]; j--) { + var token = arr[j + 1]; + arr[j + 1] = arr[j]; + arr[j] = token; + procs[j + 1] = procs[j]; + procs[j] = procNew; + } + } + } + exports2.default = sortByProcedure; + function getProcedure(token) { + var proc = procedure_1.procedure[token.type]; + if (token.type === css_what_1.SelectorType.Attribute) { + proc = attributes[token.action]; + if (proc === attributes.equals && token.name === "id") { + proc = 9; + } + if (token.ignoreCase) { + proc >>= 1; + } + } else if (token.type === css_what_1.SelectorType.Pseudo) { + if (!token.data) { + proc = 3; + } else if (token.name === "has" || token.name === "contains") { + proc = 0; + } else if (Array.isArray(token.data)) { + proc = 0; + for (var i = 0; i < token.data.length; i++) { + if (token.data[i].length !== 1) + continue; + var cur = getProcedure(token.data[i][0]); + if (cur === 0) { + proc = 0; + break; + } + if (cur > proc) + proc = cur; + } + if (token.data.length > 1 && proc > 0) + proc -= 1; + } else { + proc = 1; + } + } + return proc; + } + } +}); + +// node_modules/css-select/lib/attributes.js +var require_attributes = __commonJS({ + "node_modules/css-select/lib/attributes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.attributeRules = void 0; + var boolbase_1 = require_boolbase(); + var reChars = /[-[\]{}()*+?.,\\^$|#\s]/g; + function escapeRegex(value) { + return value.replace(reChars, "\\$&"); + } + var caseInsensitiveAttributes = /* @__PURE__ */ new Set([ + "accept", + "accept-charset", + "align", + "alink", + "axis", + "bgcolor", + "charset", + "checked", + "clear", + "codetype", + "color", + "compact", + "declare", + "defer", + "dir", + "direction", + "disabled", + "enctype", + "face", + "frame", + "hreflang", + "http-equiv", + "lang", + "language", + "link", + "media", + "method", + "multiple", + "nohref", + "noresize", + "noshade", + "nowrap", + "readonly", + "rel", + "rev", + "rules", + "scope", + "scrolling", + "selected", + "shape", + "target", + "text", + "type", + "valign", + "valuetype", + "vlink" + ]); + function shouldIgnoreCase(selector, options) { + return typeof selector.ignoreCase === "boolean" ? selector.ignoreCase : selector.ignoreCase === "quirks" ? !!options.quirksMode : !options.xmlMode && caseInsensitiveAttributes.has(selector.name); + } + exports2.attributeRules = { + equals: function(next, data, options) { + var adapter = options.adapter; + var name = data.name; + var value = data.value; + if (shouldIgnoreCase(data, options)) { + value = value.toLowerCase(); + return function(elem) { + var attr = adapter.getAttributeValue(elem, name); + return attr != null && attr.length === value.length && attr.toLowerCase() === value && next(elem); + }; + } + return function(elem) { + return adapter.getAttributeValue(elem, name) === value && next(elem); + }; + }, + hyphen: function(next, data, options) { + var adapter = options.adapter; + var name = data.name; + var value = data.value; + var len = value.length; + if (shouldIgnoreCase(data, options)) { + value = value.toLowerCase(); + return function hyphenIC(elem) { + var attr = adapter.getAttributeValue(elem, name); + return attr != null && (attr.length === len || attr.charAt(len) === "-") && attr.substr(0, len).toLowerCase() === value && next(elem); + }; + } + return function hyphen(elem) { + var attr = adapter.getAttributeValue(elem, name); + return attr != null && (attr.length === len || attr.charAt(len) === "-") && attr.substr(0, len) === value && next(elem); + }; + }, + element: function(next, data, options) { + var adapter = options.adapter; + var name = data.name, value = data.value; + if (/\s/.test(value)) { + return boolbase_1.falseFunc; + } + var regex = new RegExp("(?:^|\\s)".concat(escapeRegex(value), "(?:$|\\s)"), shouldIgnoreCase(data, options) ? "i" : ""); + return function element(elem) { + var attr = adapter.getAttributeValue(elem, name); + return attr != null && attr.length >= value.length && regex.test(attr) && next(elem); + }; + }, + exists: function(next, _a, _b) { + var name = _a.name; + var adapter = _b.adapter; + return function(elem) { + return adapter.hasAttrib(elem, name) && next(elem); + }; + }, + start: function(next, data, options) { + var adapter = options.adapter; + var name = data.name; + var value = data.value; + var len = value.length; + if (len === 0) { + return boolbase_1.falseFunc; + } + if (shouldIgnoreCase(data, options)) { + value = value.toLowerCase(); + return function(elem) { + var attr = adapter.getAttributeValue(elem, name); + return attr != null && attr.length >= len && attr.substr(0, len).toLowerCase() === value && next(elem); + }; + } + return function(elem) { + var _a; + return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) && next(elem); + }; + }, + end: function(next, data, options) { + var adapter = options.adapter; + var name = data.name; + var value = data.value; + var len = -value.length; + if (len === 0) { + return boolbase_1.falseFunc; + } + if (shouldIgnoreCase(data, options)) { + value = value.toLowerCase(); + return function(elem) { + var _a; + return ((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem); + }; + } + return function(elem) { + var _a; + return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) && next(elem); + }; + }, + any: function(next, data, options) { + var adapter = options.adapter; + var name = data.name, value = data.value; + if (value === "") { + return boolbase_1.falseFunc; + } + if (shouldIgnoreCase(data, options)) { + var regex_1 = new RegExp(escapeRegex(value), "i"); + return function anyIC(elem) { + var attr = adapter.getAttributeValue(elem, name); + return attr != null && attr.length >= value.length && regex_1.test(attr) && next(elem); + }; + } + return function(elem) { + var _a; + return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) && next(elem); + }; + }, + not: function(next, data, options) { + var adapter = options.adapter; + var name = data.name; + var value = data.value; + if (value === "") { + return function(elem) { + return !!adapter.getAttributeValue(elem, name) && next(elem); + }; + } else if (shouldIgnoreCase(data, options)) { + value = value.toLowerCase(); + return function(elem) { + var attr = adapter.getAttributeValue(elem, name); + return (attr == null || attr.length !== value.length || attr.toLowerCase() !== value) && next(elem); + }; + } + return function(elem) { + return adapter.getAttributeValue(elem, name) !== value && next(elem); + }; + } + }; + } +}); + +// node_modules/nth-check/lib/parse.js +var require_parse5 = __commonJS({ + "node_modules/nth-check/lib/parse.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.parse = void 0; + var whitespace = /* @__PURE__ */ new Set([9, 10, 12, 13, 32]); + var ZERO = "0".charCodeAt(0); + var NINE = "9".charCodeAt(0); + function parse(formula) { + formula = formula.trim().toLowerCase(); + if (formula === "even") { + return [2, 0]; + } else if (formula === "odd") { + return [2, 1]; + } + var idx = 0; + var a = 0; + var sign = readSign(); + var number = readNumber(); + if (idx < formula.length && formula.charAt(idx) === "n") { + idx++; + a = sign * (number !== null && number !== void 0 ? number : 1); + skipWhitespace(); + if (idx < formula.length) { + sign = readSign(); + skipWhitespace(); + number = readNumber(); + } else { + sign = number = 0; + } + } + if (number === null || idx < formula.length) { + throw new Error("n-th rule couldn't be parsed ('".concat(formula, "')")); + } + return [a, sign * number]; + function readSign() { + if (formula.charAt(idx) === "-") { + idx++; + return -1; + } + if (formula.charAt(idx) === "+") { + idx++; + } + return 1; + } + function readNumber() { + var start = idx; + var value = 0; + while (idx < formula.length && formula.charCodeAt(idx) >= ZERO && formula.charCodeAt(idx) <= NINE) { + value = value * 10 + (formula.charCodeAt(idx) - ZERO); + idx++; + } + return idx === start ? null : value; + } + function skipWhitespace() { + while (idx < formula.length && whitespace.has(formula.charCodeAt(idx))) { + idx++; + } + } + } + exports2.parse = parse; + } +}); + +// node_modules/nth-check/lib/compile.js +var require_compile = __commonJS({ + "node_modules/nth-check/lib/compile.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.generate = exports2.compile = void 0; + var boolbase_1 = __importDefault(require_boolbase()); + function compile(parsed) { + var a = parsed[0]; + var b = parsed[1] - 1; + if (b < 0 && a <= 0) + return boolbase_1.default.falseFunc; + if (a === -1) + return function(index) { + return index <= b; + }; + if (a === 0) + return function(index) { + return index === b; + }; + if (a === 1) + return b < 0 ? boolbase_1.default.trueFunc : function(index) { + return index >= b; + }; + var absA = Math.abs(a); + var bMod = (b % absA + absA) % absA; + return a > 1 ? function(index) { + return index >= b && index % absA === bMod; + } : function(index) { + return index <= b && index % absA === bMod; + }; + } + exports2.compile = compile; + function generate(parsed) { + var a = parsed[0]; + var b = parsed[1] - 1; + var n = 0; + if (a < 0) { + var aPos_1 = -a; + var minValue_1 = (b % aPos_1 + aPos_1) % aPos_1; + return function() { + var val = minValue_1 + aPos_1 * n++; + return val > b ? null : val; + }; + } + if (a === 0) + return b < 0 ? function() { + return null; + } : function() { + return n++ === 0 ? b : null; + }; + if (b < 0) { + b += a * Math.ceil(-b / a); + } + return function() { + return a * n++ + b; + }; + } + exports2.generate = generate; + } +}); + +// node_modules/nth-check/lib/index.js +var require_lib7 = __commonJS({ + "node_modules/nth-check/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.sequence = exports2.generate = exports2.compile = exports2.parse = void 0; + var parse_js_1 = require_parse5(); + Object.defineProperty(exports2, "parse", { enumerable: true, get: function() { + return parse_js_1.parse; + } }); + var compile_js_1 = require_compile(); + Object.defineProperty(exports2, "compile", { enumerable: true, get: function() { + return compile_js_1.compile; + } }); + Object.defineProperty(exports2, "generate", { enumerable: true, get: function() { + return compile_js_1.generate; + } }); + function nthCheck(formula) { + return (0, compile_js_1.compile)((0, parse_js_1.parse)(formula)); + } + exports2.default = nthCheck; + function sequence(formula) { + return (0, compile_js_1.generate)((0, parse_js_1.parse)(formula)); + } + exports2.sequence = sequence; + } +}); + +// node_modules/css-select/lib/pseudo-selectors/filters.js +var require_filters = __commonJS({ + "node_modules/css-select/lib/pseudo-selectors/filters.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.filters = void 0; + var nth_check_1 = __importDefault(require_lib7()); + var boolbase_1 = require_boolbase(); + function getChildFunc(next, adapter) { + return function(elem) { + var parent = adapter.getParent(elem); + return parent != null && adapter.isTag(parent) && next(elem); + }; + } + exports2.filters = { + contains: function(next, text, _a) { + var adapter = _a.adapter; + return function contains(elem) { + return next(elem) && adapter.getText(elem).includes(text); + }; + }, + icontains: function(next, text, _a) { + var adapter = _a.adapter; + var itext = text.toLowerCase(); + return function icontains(elem) { + return next(elem) && adapter.getText(elem).toLowerCase().includes(itext); + }; + }, + "nth-child": function(next, rule, _a) { + var adapter = _a.adapter, equals = _a.equals; + var func = (0, nth_check_1.default)(rule); + if (func === boolbase_1.falseFunc) + return boolbase_1.falseFunc; + if (func === boolbase_1.trueFunc) + return getChildFunc(next, adapter); + return function nthChild(elem) { + var siblings = adapter.getSiblings(elem); + var pos = 0; + for (var i = 0; i < siblings.length; i++) { + if (equals(elem, siblings[i])) + break; + if (adapter.isTag(siblings[i])) { + pos++; + } + } + return func(pos) && next(elem); + }; + }, + "nth-last-child": function(next, rule, _a) { + var adapter = _a.adapter, equals = _a.equals; + var func = (0, nth_check_1.default)(rule); + if (func === boolbase_1.falseFunc) + return boolbase_1.falseFunc; + if (func === boolbase_1.trueFunc) + return getChildFunc(next, adapter); + return function nthLastChild(elem) { + var siblings = adapter.getSiblings(elem); + var pos = 0; + for (var i = siblings.length - 1; i >= 0; i--) { + if (equals(elem, siblings[i])) + break; + if (adapter.isTag(siblings[i])) { + pos++; + } + } + return func(pos) && next(elem); + }; + }, + "nth-of-type": function(next, rule, _a) { + var adapter = _a.adapter, equals = _a.equals; + var func = (0, nth_check_1.default)(rule); + if (func === boolbase_1.falseFunc) + return boolbase_1.falseFunc; + if (func === boolbase_1.trueFunc) + return getChildFunc(next, adapter); + return function nthOfType(elem) { + var siblings = adapter.getSiblings(elem); + var pos = 0; + for (var i = 0; i < siblings.length; i++) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + break; + if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === adapter.getName(elem)) { + pos++; + } + } + return func(pos) && next(elem); + }; + }, + "nth-last-of-type": function(next, rule, _a) { + var adapter = _a.adapter, equals = _a.equals; + var func = (0, nth_check_1.default)(rule); + if (func === boolbase_1.falseFunc) + return boolbase_1.falseFunc; + if (func === boolbase_1.trueFunc) + return getChildFunc(next, adapter); + return function nthLastOfType(elem) { + var siblings = adapter.getSiblings(elem); + var pos = 0; + for (var i = siblings.length - 1; i >= 0; i--) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + break; + if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === adapter.getName(elem)) { + pos++; + } + } + return func(pos) && next(elem); + }; + }, + root: function(next, _rule, _a) { + var adapter = _a.adapter; + return function(elem) { + var parent = adapter.getParent(elem); + return (parent == null || !adapter.isTag(parent)) && next(elem); + }; + }, + scope: function(next, rule, options, context) { + var equals = options.equals; + if (!context || context.length === 0) { + return exports2.filters.root(next, rule, options); + } + if (context.length === 1) { + return function(elem) { + return equals(context[0], elem) && next(elem); + }; + } + return function(elem) { + return context.includes(elem) && next(elem); + }; + }, + hover: dynamicStatePseudo("isHovered"), + visited: dynamicStatePseudo("isVisited"), + active: dynamicStatePseudo("isActive") + }; + function dynamicStatePseudo(name) { + return function dynamicPseudo(next, _rule, _a) { + var adapter = _a.adapter; + var func = adapter[name]; + if (typeof func !== "function") { + return boolbase_1.falseFunc; + } + return function active(elem) { + return func(elem) && next(elem); + }; + }; + } + } +}); + +// node_modules/css-select/lib/pseudo-selectors/pseudos.js +var require_pseudos = __commonJS({ + "node_modules/css-select/lib/pseudo-selectors/pseudos.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.verifyPseudoArgs = exports2.pseudos = void 0; + exports2.pseudos = { + empty: function(elem, _a) { + var adapter = _a.adapter; + return !adapter.getChildren(elem).some(function(elem2) { + return adapter.isTag(elem2) || adapter.getText(elem2) !== ""; + }); + }, + "first-child": function(elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + var firstChild = adapter.getSiblings(elem).find(function(elem2) { + return adapter.isTag(elem2); + }); + return firstChild != null && equals(elem, firstChild); + }, + "last-child": function(elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + var siblings = adapter.getSiblings(elem); + for (var i = siblings.length - 1; i >= 0; i--) { + if (equals(elem, siblings[i])) + return true; + if (adapter.isTag(siblings[i])) + break; + } + return false; + }, + "first-of-type": function(elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + var siblings = adapter.getSiblings(elem); + var elemName = adapter.getName(elem); + for (var i = 0; i < siblings.length; i++) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + return true; + if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === elemName) { + break; + } + } + return false; + }, + "last-of-type": function(elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + var siblings = adapter.getSiblings(elem); + var elemName = adapter.getName(elem); + for (var i = siblings.length - 1; i >= 0; i--) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + return true; + if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === elemName) { + break; + } + } + return false; + }, + "only-of-type": function(elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + var elemName = adapter.getName(elem); + return adapter.getSiblings(elem).every(function(sibling) { + return equals(elem, sibling) || !adapter.isTag(sibling) || adapter.getName(sibling) !== elemName; + }); + }, + "only-child": function(elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + return adapter.getSiblings(elem).every(function(sibling) { + return equals(elem, sibling) || !adapter.isTag(sibling); + }); + } + }; + function verifyPseudoArgs(func, name, subselect) { + if (subselect === null) { + if (func.length > 2) { + throw new Error("pseudo-selector :".concat(name, " requires an argument")); + } + } else if (func.length === 2) { + throw new Error("pseudo-selector :".concat(name, " doesn't have any arguments")); + } + } + exports2.verifyPseudoArgs = verifyPseudoArgs; + } +}); + +// node_modules/css-select/lib/pseudo-selectors/aliases.js +var require_aliases = __commonJS({ + "node_modules/css-select/lib/pseudo-selectors/aliases.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.aliases = void 0; + exports2.aliases = { + "any-link": ":is(a, area, link)[href]", + link: ":any-link:not(:visited)", + disabled: ":is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )", + enabled: ":not(:disabled)", + checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)", + required: ":is(input, select, textarea)[required]", + optional: ":is(input, select, textarea):not([required])", + selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)", + checkbox: "[type=checkbox]", + file: "[type=file]", + password: "[type=password]", + radio: "[type=radio]", + reset: "[type=reset]", + image: "[type=image]", + submit: "[type=submit]", + parent: ":not(:empty)", + header: ":is(h1, h2, h3, h4, h5, h6)", + button: ":is(button, input[type=button])", + input: ":is(input, textarea, select, button)", + text: "input:is(:not([type!='']), [type=text])" + }; + } +}); + +// node_modules/css-select/lib/pseudo-selectors/subselects.js +var require_subselects = __commonJS({ + "node_modules/css-select/lib/pseudo-selectors/subselects.js"(exports2) { + "use strict"; + var __spreadArray = exports2 && exports2.__spreadArray || function(to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.subselects = exports2.getNextSiblings = exports2.ensureIsTag = exports2.PLACEHOLDER_ELEMENT = void 0; + var boolbase_1 = require_boolbase(); + var procedure_1 = require_procedure(); + exports2.PLACEHOLDER_ELEMENT = {}; + function ensureIsTag(next, adapter) { + if (next === boolbase_1.falseFunc) + return boolbase_1.falseFunc; + return function(elem) { + return adapter.isTag(elem) && next(elem); + }; + } + exports2.ensureIsTag = ensureIsTag; + function getNextSiblings(elem, adapter) { + var siblings = adapter.getSiblings(elem); + if (siblings.length <= 1) + return []; + var elemIndex = siblings.indexOf(elem); + if (elemIndex < 0 || elemIndex === siblings.length - 1) + return []; + return siblings.slice(elemIndex + 1).filter(adapter.isTag); + } + exports2.getNextSiblings = getNextSiblings; + var is = function(next, token, options, context, compileToken) { + var opts = { + xmlMode: !!options.xmlMode, + adapter: options.adapter, + equals: options.equals + }; + var func = compileToken(token, opts, context); + return function(elem) { + return func(elem) && next(elem); + }; + }; + exports2.subselects = { + is, + matches: is, + where: is, + not: function(next, token, options, context, compileToken) { + var opts = { + xmlMode: !!options.xmlMode, + adapter: options.adapter, + equals: options.equals + }; + var func = compileToken(token, opts, context); + if (func === boolbase_1.falseFunc) + return next; + if (func === boolbase_1.trueFunc) + return boolbase_1.falseFunc; + return function not(elem) { + return !func(elem) && next(elem); + }; + }, + has: function(next, subselect, options, _context, compileToken) { + var adapter = options.adapter; + var opts = { + xmlMode: !!options.xmlMode, + adapter, + equals: options.equals + }; + var context = subselect.some(function(s) { + return s.some(procedure_1.isTraversal); + }) ? [exports2.PLACEHOLDER_ELEMENT] : void 0; + var compiled = compileToken(subselect, opts, context); + if (compiled === boolbase_1.falseFunc) + return boolbase_1.falseFunc; + if (compiled === boolbase_1.trueFunc) { + return function(elem) { + return adapter.getChildren(elem).some(adapter.isTag) && next(elem); + }; + } + var hasElement = ensureIsTag(compiled, adapter); + var _a = compiled.shouldTestNextSiblings, shouldTestNextSiblings = _a === void 0 ? false : _a; + if (context) { + return function(elem) { + context[0] = elem; + var childs = adapter.getChildren(elem); + var nextElements = shouldTestNextSiblings ? __spreadArray(__spreadArray([], childs, true), getNextSiblings(elem, adapter), true) : childs; + return next(elem) && adapter.existsOne(hasElement, nextElements); + }; + } + return function(elem) { + return next(elem) && adapter.existsOne(hasElement, adapter.getChildren(elem)); + }; + } + }; + } +}); + +// node_modules/css-select/lib/pseudo-selectors/index.js +var require_pseudo_selectors = __commonJS({ + "node_modules/css-select/lib/pseudo-selectors/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.compilePseudoSelector = exports2.aliases = exports2.pseudos = exports2.filters = void 0; + var boolbase_1 = require_boolbase(); + var css_what_1 = require_commonjs(); + var filters_1 = require_filters(); + Object.defineProperty(exports2, "filters", { enumerable: true, get: function() { + return filters_1.filters; + } }); + var pseudos_1 = require_pseudos(); + Object.defineProperty(exports2, "pseudos", { enumerable: true, get: function() { + return pseudos_1.pseudos; + } }); + var aliases_1 = require_aliases(); + Object.defineProperty(exports2, "aliases", { enumerable: true, get: function() { + return aliases_1.aliases; + } }); + var subselects_1 = require_subselects(); + function compilePseudoSelector(next, selector, options, context, compileToken) { + var name = selector.name, data = selector.data; + if (Array.isArray(data)) { + return subselects_1.subselects[name](next, data, options, context, compileToken); + } + if (name in aliases_1.aliases) { + if (data != null) { + throw new Error("Pseudo ".concat(name, " doesn't have any arguments")); + } + var alias = (0, css_what_1.parse)(aliases_1.aliases[name]); + return subselects_1.subselects.is(next, alias, options, context, compileToken); + } + if (name in filters_1.filters) { + return filters_1.filters[name](next, data, options, context); + } + if (name in pseudos_1.pseudos) { + var pseudo_1 = pseudos_1.pseudos[name]; + (0, pseudos_1.verifyPseudoArgs)(pseudo_1, name, data); + return pseudo_1 === boolbase_1.falseFunc ? boolbase_1.falseFunc : next === boolbase_1.trueFunc ? function(elem) { + return pseudo_1(elem, options, data); + } : function(elem) { + return pseudo_1(elem, options, data) && next(elem); + }; + } + throw new Error("unmatched pseudo-class :".concat(name)); + } + exports2.compilePseudoSelector = compilePseudoSelector; + } +}); + +// node_modules/css-select/lib/general.js +var require_general = __commonJS({ + "node_modules/css-select/lib/general.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.compileGeneralSelector = void 0; + var attributes_1 = require_attributes(); + var pseudo_selectors_1 = require_pseudo_selectors(); + var css_what_1 = require_commonjs(); + function compileGeneralSelector(next, selector, options, context, compileToken) { + var adapter = options.adapter, equals = options.equals; + switch (selector.type) { + case css_what_1.SelectorType.PseudoElement: { + throw new Error("Pseudo-elements are not supported by css-select"); + } + case css_what_1.SelectorType.ColumnCombinator: { + throw new Error("Column combinators are not yet supported by css-select"); + } + case css_what_1.SelectorType.Attribute: { + if (selector.namespace != null) { + throw new Error("Namespaced attributes are not yet supported by css-select"); + } + if (!options.xmlMode || options.lowerCaseAttributeNames) { + selector.name = selector.name.toLowerCase(); + } + return attributes_1.attributeRules[selector.action](next, selector, options); + } + case css_what_1.SelectorType.Pseudo: { + return (0, pseudo_selectors_1.compilePseudoSelector)(next, selector, options, context, compileToken); + } + case css_what_1.SelectorType.Tag: { + if (selector.namespace != null) { + throw new Error("Namespaced tag names are not yet supported by css-select"); + } + var name_1 = selector.name; + if (!options.xmlMode || options.lowerCaseTags) { + name_1 = name_1.toLowerCase(); + } + return function tag(elem) { + return adapter.getName(elem) === name_1 && next(elem); + }; + } + case css_what_1.SelectorType.Descendant: { + if (options.cacheResults === false || typeof WeakSet === "undefined") { + return function descendant(elem) { + var current = elem; + while (current = adapter.getParent(current)) { + if (adapter.isTag(current) && next(current)) { + return true; + } + } + return false; + }; + } + var isFalseCache_1 = /* @__PURE__ */ new WeakSet(); + return function cachedDescendant(elem) { + var current = elem; + while (current = adapter.getParent(current)) { + if (!isFalseCache_1.has(current)) { + if (adapter.isTag(current) && next(current)) { + return true; + } + isFalseCache_1.add(current); + } + } + return false; + }; + } + case "_flexibleDescendant": { + return function flexibleDescendant(elem) { + var current = elem; + do { + if (adapter.isTag(current) && next(current)) + return true; + } while (current = adapter.getParent(current)); + return false; + }; + } + case css_what_1.SelectorType.Parent: { + return function parent(elem) { + return adapter.getChildren(elem).some(function(elem2) { + return adapter.isTag(elem2) && next(elem2); + }); + }; + } + case css_what_1.SelectorType.Child: { + return function child(elem) { + var parent = adapter.getParent(elem); + return parent != null && adapter.isTag(parent) && next(parent); + }; + } + case css_what_1.SelectorType.Sibling: { + return function sibling(elem) { + var siblings = adapter.getSiblings(elem); + for (var i = 0; i < siblings.length; i++) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + break; + if (adapter.isTag(currentSibling) && next(currentSibling)) { + return true; + } + } + return false; + }; + } + case css_what_1.SelectorType.Adjacent: { + if (adapter.prevElementSibling) { + return function adjacent(elem) { + var previous = adapter.prevElementSibling(elem); + return previous != null && next(previous); + }; + } + return function adjacent(elem) { + var siblings = adapter.getSiblings(elem); + var lastElement; + for (var i = 0; i < siblings.length; i++) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + break; + if (adapter.isTag(currentSibling)) { + lastElement = currentSibling; + } + } + return !!lastElement && next(lastElement); + }; + } + case css_what_1.SelectorType.Universal: { + if (selector.namespace != null && selector.namespace !== "*") { + throw new Error("Namespaced universal selectors are not yet supported by css-select"); + } + return next; + } + } + } + exports2.compileGeneralSelector = compileGeneralSelector; + } +}); + +// node_modules/css-select/lib/compile.js +var require_compile2 = __commonJS({ + "node_modules/css-select/lib/compile.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.compileToken = exports2.compileUnsafe = exports2.compile = void 0; + var css_what_1 = require_commonjs(); + var boolbase_1 = require_boolbase(); + var sort_1 = __importDefault(require_sort()); + var procedure_1 = require_procedure(); + var general_1 = require_general(); + var subselects_1 = require_subselects(); + function compile(selector, options, context) { + var next = compileUnsafe(selector, options, context); + return (0, subselects_1.ensureIsTag)(next, options.adapter); + } + exports2.compile = compile; + function compileUnsafe(selector, options, context) { + var token = typeof selector === "string" ? (0, css_what_1.parse)(selector) : selector; + return compileToken(token, options, context); + } + exports2.compileUnsafe = compileUnsafe; + function includesScopePseudo(t) { + return t.type === "pseudo" && (t.name === "scope" || Array.isArray(t.data) && t.data.some(function(data) { + return data.some(includesScopePseudo); + })); + } + var DESCENDANT_TOKEN = { type: css_what_1.SelectorType.Descendant }; + var FLEXIBLE_DESCENDANT_TOKEN = { + type: "_flexibleDescendant" + }; + var SCOPE_TOKEN = { + type: css_what_1.SelectorType.Pseudo, + name: "scope", + data: null + }; + function absolutize(token, _a, context) { + var adapter = _a.adapter; + var hasContext = !!(context === null || context === void 0 ? void 0 : context.every(function(e) { + var parent = adapter.isTag(e) && adapter.getParent(e); + return e === subselects_1.PLACEHOLDER_ELEMENT || parent && adapter.isTag(parent); + })); + for (var _i = 0, token_1 = token; _i < token_1.length; _i++) { + var t = token_1[_i]; + if (t.length > 0 && (0, procedure_1.isTraversal)(t[0]) && t[0].type !== "descendant") { + } else if (hasContext && !t.some(includesScopePseudo)) { + t.unshift(DESCENDANT_TOKEN); + } else { + continue; + } + t.unshift(SCOPE_TOKEN); + } + } + function compileToken(token, options, context) { + var _a; + token = token.filter(function(t) { + return t.length > 0; + }); + token.forEach(sort_1.default); + context = (_a = options.context) !== null && _a !== void 0 ? _a : context; + var isArrayContext = Array.isArray(context); + var finalContext = context && (Array.isArray(context) ? context : [context]); + absolutize(token, options, finalContext); + var shouldTestNextSiblings = false; + var query = token.map(function(rules) { + if (rules.length >= 2) { + var first = rules[0], second = rules[1]; + if (first.type !== "pseudo" || first.name !== "scope") { + } else if (isArrayContext && second.type === "descendant") { + rules[1] = FLEXIBLE_DESCENDANT_TOKEN; + } else if (second.type === "adjacent" || second.type === "sibling") { + shouldTestNextSiblings = true; + } + } + return compileRules(rules, options, finalContext); + }).reduce(reduceRules, boolbase_1.falseFunc); + query.shouldTestNextSiblings = shouldTestNextSiblings; + return query; + } + exports2.compileToken = compileToken; + function compileRules(rules, options, context) { + var _a; + return rules.reduce(function(previous, rule) { + return previous === boolbase_1.falseFunc ? boolbase_1.falseFunc : (0, general_1.compileGeneralSelector)(previous, rule, options, context, compileToken); + }, (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase_1.trueFunc); + } + function reduceRules(a, b) { + if (b === boolbase_1.falseFunc || a === boolbase_1.trueFunc) { + return a; + } + if (a === boolbase_1.falseFunc || b === boolbase_1.trueFunc) { + return b; + } + return function combine(elem) { + return a(elem) || b(elem); + }; + } + } +}); + +// node_modules/css-select/lib/index.js +var require_lib8 = __commonJS({ + "node_modules/css-select/lib/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + 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 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.aliases = exports2.pseudos = exports2.filters = exports2.is = exports2.selectOne = exports2.selectAll = exports2.prepareContext = exports2._compileToken = exports2._compileUnsafe = exports2.compile = void 0; + var DomUtils = __importStar(require_lib6()); + var boolbase_1 = require_boolbase(); + var compile_1 = require_compile2(); + var subselects_1 = require_subselects(); + var defaultEquals = function(a, b) { + return a === b; + }; + var defaultOptions = { + adapter: DomUtils, + equals: defaultEquals + }; + function convertOptionFormats(options) { + var _a, _b, _c, _d; + var opts = options !== null && options !== void 0 ? options : defaultOptions; + (_a = opts.adapter) !== null && _a !== void 0 ? _a : opts.adapter = DomUtils; + (_b = opts.equals) !== null && _b !== void 0 ? _b : opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals; + return opts; + } + function wrapCompile(func) { + return function addAdapter(selector, options, context) { + var opts = convertOptionFormats(options); + return func(selector, opts, context); + }; + } + exports2.compile = wrapCompile(compile_1.compile); + exports2._compileUnsafe = wrapCompile(compile_1.compileUnsafe); + exports2._compileToken = wrapCompile(compile_1.compileToken); + function getSelectorFunc(searchFunc) { + return function select(query, elements, options) { + var opts = convertOptionFormats(options); + if (typeof query !== "function") { + query = (0, compile_1.compileUnsafe)(query, opts, elements); + } + var filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings); + return searchFunc(query, filteredElements, opts); + }; + } + function prepareContext(elems, adapter, shouldTestNextSiblings) { + if (shouldTestNextSiblings === void 0) { + shouldTestNextSiblings = false; + } + if (shouldTestNextSiblings) { + elems = appendNextSiblings(elems, adapter); + } + return Array.isArray(elems) ? adapter.removeSubsets(elems) : adapter.getChildren(elems); + } + exports2.prepareContext = prepareContext; + function appendNextSiblings(elem, adapter) { + var elems = Array.isArray(elem) ? elem.slice(0) : [elem]; + var elemsLength = elems.length; + for (var i = 0; i < elemsLength; i++) { + var nextSiblings = (0, subselects_1.getNextSiblings)(elems[i], adapter); + elems.push.apply(elems, nextSiblings); + } + return elems; + } + exports2.selectAll = getSelectorFunc(function(query, elems, options) { + return query === boolbase_1.falseFunc || !elems || elems.length === 0 ? [] : options.adapter.findAll(query, elems); + }); + exports2.selectOne = getSelectorFunc(function(query, elems, options) { + return query === boolbase_1.falseFunc || !elems || elems.length === 0 ? null : options.adapter.findOne(query, elems); + }); + function is(elem, query, options) { + var opts = convertOptionFormats(options); + return (typeof query === "function" ? query : (0, compile_1.compile)(query, opts))(elem); + } + exports2.is = is; + exports2.default = exports2.selectAll; + var pseudo_selectors_1 = require_pseudo_selectors(); + Object.defineProperty(exports2, "filters", { enumerable: true, get: function() { + return pseudo_selectors_1.filters; + } }); + Object.defineProperty(exports2, "pseudos", { enumerable: true, get: function() { + return pseudo_selectors_1.pseudos; + } }); + Object.defineProperty(exports2, "aliases", { enumerable: true, get: function() { + return pseudo_selectors_1.aliases; + } }); + } +}); + +// node_modules/svgo/lib/svgo/css-select-adapter.js +var require_css_select_adapter = __commonJS({ + "node_modules/svgo/lib/svgo/css-select-adapter.js"(exports2, module2) { + "use strict"; + var isTag = (node) => { + return node.type === "element"; + }; + var existsOne = (test, elems) => { + return elems.some((elem) => { + if (isTag(elem)) { + return test(elem) || existsOne(test, getChildren(elem)); + } else { + return false; + } + }); + }; + var getAttributeValue = (elem, name) => { + return elem.attributes[name]; + }; + var getChildren = (node) => { + return node.children || []; + }; + var getName = (elemAst) => { + return elemAst.name; + }; + var getParent = (node) => { + return node.parentNode || null; + }; + var getSiblings = (elem) => { + var parent = getParent(elem); + return parent ? getChildren(parent) : []; + }; + var getText = (node) => { + if (node.children[0].type === "text" && node.children[0].type === "cdata") { + return node.children[0].value; + } + return ""; + }; + var hasAttrib = (elem, name) => { + return elem.attributes[name] !== void 0; + }; + var removeSubsets = (nodes) => { + let idx = nodes.length; + let node; + let ancestor; + let replace; + while (--idx > -1) { + node = ancestor = nodes[idx]; + nodes[idx] = null; + replace = true; + while (ancestor) { + if (nodes.includes(ancestor)) { + replace = false; + nodes.splice(idx, 1); + break; + } + ancestor = getParent(ancestor); + } + if (replace) { + nodes[idx] = node; + } + } + return nodes; + }; + var findAll = (test, elems) => { + const result = []; + for (const elem of elems) { + if (isTag(elem)) { + if (test(elem)) { + result.push(elem); + } + result.push(...findAll(test, getChildren(elem))); + } + } + return result; + }; + var findOne = (test, elems) => { + for (const elem of elems) { + if (isTag(elem)) { + if (test(elem)) { + return elem; + } + const result = findOne(test, getChildren(elem)); + if (result) { + return result; + } + } + } + return null; + }; + var svgoCssSelectAdapter = { + isTag, + existsOne, + getAttributeValue, + getChildren, + getName, + getParent, + getSiblings, + getText, + hasAttrib, + removeSubsets, + findAll, + findOne + }; + module2.exports = svgoCssSelectAdapter; + } +}); + +// node_modules/svgo/lib/xast.js +var require_xast = __commonJS({ + "node_modules/svgo/lib/xast.js"(exports2) { + "use strict"; + var { selectAll, selectOne, is } = require_lib8(); + var xastAdaptor = require_css_select_adapter(); + var cssSelectOptions = { + xmlMode: true, + adapter: xastAdaptor + }; + var querySelectorAll = (node, selector) => { + return selectAll(selector, node, cssSelectOptions); + }; + exports2.querySelectorAll = querySelectorAll; + var querySelector = (node, selector) => { + return selectOne(selector, node, cssSelectOptions); + }; + exports2.querySelector = querySelector; + var matches = (node, selector) => { + return is(node, selector, cssSelectOptions); + }; + exports2.matches = matches; + var closestByName = (node, name) => { + let currentNode = node; + while (currentNode) { + if (currentNode.type === "element" && currentNode.name === name) { + return currentNode; + } + currentNode = currentNode.parentNode; + } + return null; + }; + exports2.closestByName = closestByName; + var visitSkip = Symbol(); + exports2.visitSkip = visitSkip; + var visit = (node, visitor, parentNode) => { + const callbacks = visitor[node.type]; + if (callbacks && callbacks.enter) { + const symbol = callbacks.enter(node, parentNode); + if (symbol === visitSkip) { + return; + } + } + if (node.type === "root") { + for (const child of node.children) { + visit(child, visitor, node); + } + } + if (node.type === "element") { + if (parentNode.children.includes(node)) { + for (const child of node.children) { + visit(child, visitor, node); + } + } + } + if (callbacks && callbacks.exit) { + callbacks.exit(node, parentNode); + } + }; + exports2.visit = visit; + var detachNodeFromParent = (node, parentNode) => { + parentNode.children = parentNode.children.filter((child) => child !== node); + }; + exports2.detachNodeFromParent = detachNodeFromParent; + } +}); + +// node_modules/svgo/lib/svgo/plugins.js +var require_plugins = __commonJS({ + "node_modules/svgo/lib/svgo/plugins.js"(exports2) { + "use strict"; + var { visit } = require_xast(); + var invokePlugins = (ast, info, plugins, overrides, globalOverrides) => { + for (const plugin of plugins) { + const override = overrides == null ? null : overrides[plugin.name]; + if (override === false) { + continue; + } + const params = { ...plugin.params, ...globalOverrides, ...override }; + if (plugin.type === "perItem") { + ast = perItem(ast, info, plugin, params); + } + if (plugin.type === "perItemReverse") { + ast = perItem(ast, info, plugin, params, true); + } + if (plugin.type === "full") { + if (plugin.active) { + ast = plugin.fn(ast, params, info); + } + } + if (plugin.type === "visitor") { + if (plugin.active) { + const visitor = plugin.fn(ast, params, info); + if (visitor != null) { + visit(ast, visitor); + } + } + } + } + return ast; + }; + exports2.invokePlugins = invokePlugins; + function perItem(data, info, plugin, params, reverse) { + function monkeys(items) { + items.children = items.children.filter(function(item) { + if (reverse && item.children) { + monkeys(item); + } + let kept = true; + if (plugin.active) { + kept = plugin.fn(item, params, info) !== false; + } + if (!reverse && item.children) { + monkeys(item); + } + return kept; + }); + return items; + } + return monkeys(data); + } + var createPreset = ({ name, plugins }) => { + return { + name, + type: "full", + fn: (ast, params, info) => { + const { floatPrecision, overrides } = params; + const globalOverrides = {}; + if (floatPrecision != null) { + globalOverrides.floatPrecision = floatPrecision; + } + if (overrides) { + for (const [pluginName, override] of Object.entries(overrides)) { + if (override === true) { + console.warn( + `You are trying to enable ${pluginName} which is not part of preset. +Try to put it before or after preset, for example + +plugins: [ + { + name: 'preset-default', + }, + 'cleanupListOfValues' +] +` + ); + } + } + } + return invokePlugins(ast, info, plugins, overrides, globalOverrides); + } + }; + }; + exports2.createPreset = createPreset; + } +}); + +// node_modules/svgo/plugins/removeDoctype.js +var require_removeDoctype = __commonJS({ + "node_modules/svgo/plugins/removeDoctype.js"(exports2) { + "use strict"; + var { detachNodeFromParent } = require_xast(); + exports2.name = "removeDoctype"; + exports2.type = "visitor"; + exports2.active = true; + exports2.description = "removes doctype declaration"; + exports2.fn = () => { + return { + doctype: { + enter: (node, parentNode) => { + detachNodeFromParent(node, parentNode); + } + } + }; + }; + } +}); + +// node_modules/svgo/plugins/removeXMLProcInst.js +var require_removeXMLProcInst = __commonJS({ + "node_modules/svgo/plugins/removeXMLProcInst.js"(exports2) { + "use strict"; + var { detachNodeFromParent } = require_xast(); + exports2.name = "removeXMLProcInst"; + exports2.type = "visitor"; + exports2.active = true; + exports2.description = "removes XML processing instructions"; + exports2.fn = () => { + return { + instruction: { + enter: (node, parentNode) => { + if (node.name === "xml") { + detachNodeFromParent(node, parentNode); + } + } + } + }; + }; + } +}); + +// node_modules/svgo/plugins/removeComments.js +var require_removeComments = __commonJS({ + "node_modules/svgo/plugins/removeComments.js"(exports2) { + "use strict"; + var { detachNodeFromParent } = require_xast(); + exports2.name = "removeComments"; + exports2.type = "visitor"; + exports2.active = true; + exports2.description = "removes comments"; + exports2.fn = () => { + return { + comment: { + enter: (node, parentNode) => { + if (node.value.charAt(0) !== "!") { + detachNodeFromParent(node, parentNode); + } + } + } + }; + }; + } +}); + +// node_modules/svgo/plugins/removeMetadata.js +var require_removeMetadata = __commonJS({ + "node_modules/svgo/plugins/removeMetadata.js"(exports2) { + "use strict"; + var { detachNodeFromParent } = require_xast(); + exports2.name = "removeMetadata"; + exports2.type = "visitor"; + exports2.active = true; + exports2.description = "removes "; + exports2.fn = () => { + return { + element: { + enter: (node, parentNode) => { + if (node.name === "metadata") { + detachNodeFromParent(node, parentNode); + } + } + } + }; + }; + } +}); + +// node_modules/svgo/plugins/_collections.js +var require_collections = __commonJS({ + "node_modules/svgo/plugins/_collections.js"(exports2) { + "use strict"; + exports2.elemsGroups = { + animation: [ + "animate", + "animateColor", + "animateMotion", + "animateTransform", + "set" + ], + descriptive: ["desc", "metadata", "title"], + shape: ["circle", "ellipse", "line", "path", "polygon", "polyline", "rect"], + structural: ["defs", "g", "svg", "symbol", "use"], + paintServer: [ + "solidColor", + "linearGradient", + "radialGradient", + "meshGradient", + "pattern", + "hatch" + ], + nonRendering: [ + "linearGradient", + "radialGradient", + "pattern", + "clipPath", + "mask", + "marker", + "symbol", + "filter", + "solidColor" + ], + container: [ + "a", + "defs", + "g", + "marker", + "mask", + "missing-glyph", + "pattern", + "svg", + "switch", + "symbol", + "foreignObject" + ], + textContent: [ + "altGlyph", + "altGlyphDef", + "altGlyphItem", + "glyph", + "glyphRef", + "textPath", + "text", + "tref", + "tspan" + ], + textContentChild: ["altGlyph", "textPath", "tref", "tspan"], + lightSource: [ + "feDiffuseLighting", + "feSpecularLighting", + "feDistantLight", + "fePointLight", + "feSpotLight" + ], + filterPrimitive: [ + "feBlend", + "feColorMatrix", + "feComponentTransfer", + "feComposite", + "feConvolveMatrix", + "feDiffuseLighting", + "feDisplacementMap", + "feDropShadow", + "feFlood", + "feFuncA", + "feFuncB", + "feFuncG", + "feFuncR", + "feGaussianBlur", + "feImage", + "feMerge", + "feMergeNode", + "feMorphology", + "feOffset", + "feSpecularLighting", + "feTile", + "feTurbulence" + ] + }; + exports2.textElems = exports2.elemsGroups.textContent.concat("title"); + exports2.pathElems = ["path", "glyph", "missing-glyph"]; + exports2.attrsGroups = { + animationAddition: ["additive", "accumulate"], + animationAttributeTarget: ["attributeType", "attributeName"], + animationEvent: ["onbegin", "onend", "onrepeat", "onload"], + animationTiming: [ + "begin", + "dur", + "end", + "min", + "max", + "restart", + "repeatCount", + "repeatDur", + "fill" + ], + animationValue: [ + "calcMode", + "values", + "keyTimes", + "keySplines", + "from", + "to", + "by" + ], + conditionalProcessing: [ + "requiredFeatures", + "requiredExtensions", + "systemLanguage" + ], + core: ["id", "tabindex", "xml:base", "xml:lang", "xml:space"], + graphicalEvent: [ + "onfocusin", + "onfocusout", + "onactivate", + "onclick", + "onmousedown", + "onmouseup", + "onmouseover", + "onmousemove", + "onmouseout", + "onload" + ], + presentation: [ + "alignment-baseline", + "baseline-shift", + "clip", + "clip-path", + "clip-rule", + "color", + "color-interpolation", + "color-interpolation-filters", + "color-profile", + "color-rendering", + "cursor", + "direction", + "display", + "dominant-baseline", + "enable-background", + "fill", + "fill-opacity", + "fill-rule", + "filter", + "flood-color", + "flood-opacity", + "font-family", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-variant", + "font-weight", + "glyph-orientation-horizontal", + "glyph-orientation-vertical", + "image-rendering", + "letter-spacing", + "lighting-color", + "marker-end", + "marker-mid", + "marker-start", + "mask", + "opacity", + "overflow", + "paint-order", + "pointer-events", + "shape-rendering", + "stop-color", + "stop-opacity", + "stroke", + "stroke-dasharray", + "stroke-dashoffset", + "stroke-linecap", + "stroke-linejoin", + "stroke-miterlimit", + "stroke-opacity", + "stroke-width", + "text-anchor", + "text-decoration", + "text-overflow", + "text-rendering", + "transform", + "transform-origin", + "unicode-bidi", + "vector-effect", + "visibility", + "word-spacing", + "writing-mode" + ], + xlink: [ + "xlink:href", + "xlink:show", + "xlink:actuate", + "xlink:type", + "xlink:role", + "xlink:arcrole", + "xlink:title" + ], + documentEvent: [ + "onunload", + "onabort", + "onerror", + "onresize", + "onscroll", + "onzoom" + ], + filterPrimitive: ["x", "y", "width", "height", "result"], + transferFunction: [ + "type", + "tableValues", + "slope", + "intercept", + "amplitude", + "exponent", + "offset" + ] + }; + exports2.attrsGroupsDefaults = { + core: { "xml:space": "default" }, + presentation: { + clip: "auto", + "clip-path": "none", + "clip-rule": "nonzero", + mask: "none", + opacity: "1", + "stop-color": "#000", + "stop-opacity": "1", + "fill-opacity": "1", + "fill-rule": "nonzero", + fill: "#000", + stroke: "none", + "stroke-width": "1", + "stroke-linecap": "butt", + "stroke-linejoin": "miter", + "stroke-miterlimit": "4", + "stroke-dasharray": "none", + "stroke-dashoffset": "0", + "stroke-opacity": "1", + "paint-order": "normal", + "vector-effect": "none", + display: "inline", + visibility: "visible", + "marker-start": "none", + "marker-mid": "none", + "marker-end": "none", + "color-interpolation": "sRGB", + "color-interpolation-filters": "linearRGB", + "color-rendering": "auto", + "shape-rendering": "auto", + "text-rendering": "auto", + "image-rendering": "auto", + "font-style": "normal", + "font-variant": "normal", + "font-weight": "normal", + "font-stretch": "normal", + "font-size": "medium", + "font-size-adjust": "none", + kerning: "auto", + "letter-spacing": "normal", + "word-spacing": "normal", + "text-decoration": "none", + "text-anchor": "start", + "text-overflow": "clip", + "writing-mode": "lr-tb", + "glyph-orientation-vertical": "auto", + "glyph-orientation-horizontal": "0deg", + direction: "ltr", + "unicode-bidi": "normal", + "dominant-baseline": "auto", + "alignment-baseline": "baseline", + "baseline-shift": "baseline" + }, + transferFunction: { + slope: "1", + intercept: "0", + amplitude: "1", + exponent: "1", + offset: "0" + } + }; + exports2.elems = { + a: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation", + "xlink" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "target" + ], + defaults: { + target: "_self" + }, + contentGroups: [ + "animation", + "descriptive", + "shape", + "structural", + "paintServer" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view", + "tspan" + ] + }, + altGlyph: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation", + "xlink" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "x", + "y", + "dx", + "dy", + "glyphRef", + "format", + "rotate" + ] + }, + altGlyphDef: { + attrsGroups: ["core"], + content: ["glyphRef"] + }, + altGlyphItem: { + attrsGroups: ["core"], + content: ["glyphRef", "altGlyphItem"] + }, + animate: { + attrsGroups: [ + "conditionalProcessing", + "core", + "animationAddition", + "animationAttributeTarget", + "animationEvent", + "animationTiming", + "animationValue", + "presentation", + "xlink" + ], + attrs: ["externalResourcesRequired"], + contentGroups: ["descriptive"] + }, + animateColor: { + attrsGroups: [ + "conditionalProcessing", + "core", + "animationEvent", + "xlink", + "animationAttributeTarget", + "animationTiming", + "animationValue", + "animationAddition", + "presentation" + ], + attrs: ["externalResourcesRequired"], + contentGroups: ["descriptive"] + }, + animateMotion: { + attrsGroups: [ + "conditionalProcessing", + "core", + "animationEvent", + "xlink", + "animationTiming", + "animationValue", + "animationAddition" + ], + attrs: [ + "externalResourcesRequired", + "path", + "keyPoints", + "rotate", + "origin" + ], + defaults: { + rotate: "0" + }, + contentGroups: ["descriptive"], + content: ["mpath"] + }, + animateTransform: { + attrsGroups: [ + "conditionalProcessing", + "core", + "animationEvent", + "xlink", + "animationAttributeTarget", + "animationTiming", + "animationValue", + "animationAddition" + ], + attrs: ["externalResourcesRequired", "type"], + contentGroups: ["descriptive"] + }, + circle: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "cx", + "cy", + "r" + ], + defaults: { + cx: "0", + cy: "0" + }, + contentGroups: ["animation", "descriptive"] + }, + clipPath: { + attrsGroups: ["conditionalProcessing", "core", "presentation"], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "clipPathUnits" + ], + defaults: { + clipPathUnits: "userSpaceOnUse" + }, + contentGroups: ["animation", "descriptive", "shape"], + content: ["text", "use"] + }, + "color-profile": { + attrsGroups: ["core", "xlink"], + attrs: ["local", "name", "rendering-intent"], + defaults: { + name: "sRGB", + "rendering-intent": "auto" + }, + contentGroups: ["descriptive"] + }, + cursor: { + attrsGroups: ["core", "conditionalProcessing", "xlink"], + attrs: ["externalResourcesRequired", "x", "y"], + defaults: { + x: "0", + y: "0" + }, + contentGroups: ["descriptive"] + }, + defs: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: ["class", "style", "externalResourcesRequired", "transform"], + contentGroups: [ + "animation", + "descriptive", + "shape", + "structural", + "paintServer" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view" + ] + }, + desc: { + attrsGroups: ["core"], + attrs: ["class", "style"] + }, + ellipse: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "cx", + "cy", + "rx", + "ry" + ], + defaults: { + cx: "0", + cy: "0" + }, + contentGroups: ["animation", "descriptive"] + }, + feBlend: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: [ + "class", + "style", + "in", + "in2", + "mode" + ], + defaults: { + mode: "normal" + }, + content: ["animate", "set"] + }, + feColorMatrix: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: ["class", "style", "in", "type", "values"], + defaults: { + type: "matrix" + }, + content: ["animate", "set"] + }, + feComponentTransfer: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: ["class", "style", "in"], + content: ["feFuncA", "feFuncB", "feFuncG", "feFuncR"] + }, + feComposite: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: ["class", "style", "in", "in2", "operator", "k1", "k2", "k3", "k4"], + defaults: { + operator: "over", + k1: "0", + k2: "0", + k3: "0", + k4: "0" + }, + content: ["animate", "set"] + }, + feConvolveMatrix: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: [ + "class", + "style", + "in", + "order", + "kernelMatrix", + "divisor", + "bias", + "targetX", + "targetY", + "edgeMode", + "kernelUnitLength", + "preserveAlpha" + ], + defaults: { + order: "3", + bias: "0", + edgeMode: "duplicate", + preserveAlpha: "false" + }, + content: ["animate", "set"] + }, + feDiffuseLighting: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: [ + "class", + "style", + "in", + "surfaceScale", + "diffuseConstant", + "kernelUnitLength" + ], + defaults: { + surfaceScale: "1", + diffuseConstant: "1" + }, + contentGroups: ["descriptive"], + content: [ + "feDistantLight", + "fePointLight", + "feSpotLight" + ] + }, + feDisplacementMap: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: [ + "class", + "style", + "in", + "in2", + "scale", + "xChannelSelector", + "yChannelSelector" + ], + defaults: { + scale: "0", + xChannelSelector: "A", + yChannelSelector: "A" + }, + content: ["animate", "set"] + }, + feDistantLight: { + attrsGroups: ["core"], + attrs: ["azimuth", "elevation"], + defaults: { + azimuth: "0", + elevation: "0" + }, + content: ["animate", "set"] + }, + feFlood: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: ["class", "style"], + content: ["animate", "animateColor", "set"] + }, + feFuncA: { + attrsGroups: ["core", "transferFunction"], + content: ["set", "animate"] + }, + feFuncB: { + attrsGroups: ["core", "transferFunction"], + content: ["set", "animate"] + }, + feFuncG: { + attrsGroups: ["core", "transferFunction"], + content: ["set", "animate"] + }, + feFuncR: { + attrsGroups: ["core", "transferFunction"], + content: ["set", "animate"] + }, + feGaussianBlur: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: ["class", "style", "in", "stdDeviation"], + defaults: { + stdDeviation: "0" + }, + content: ["set", "animate"] + }, + feImage: { + attrsGroups: ["core", "presentation", "filterPrimitive", "xlink"], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "preserveAspectRatio", + "href", + "xlink:href" + ], + defaults: { + preserveAspectRatio: "xMidYMid meet" + }, + content: ["animate", "animateTransform", "set"] + }, + feMerge: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: ["class", "style"], + content: ["feMergeNode"] + }, + feMergeNode: { + attrsGroups: ["core"], + attrs: ["in"], + content: ["animate", "set"] + }, + feMorphology: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: ["class", "style", "in", "operator", "radius"], + defaults: { + operator: "erode", + radius: "0" + }, + content: ["animate", "set"] + }, + feOffset: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: ["class", "style", "in", "dx", "dy"], + defaults: { + dx: "0", + dy: "0" + }, + content: ["animate", "set"] + }, + fePointLight: { + attrsGroups: ["core"], + attrs: ["x", "y", "z"], + defaults: { + x: "0", + y: "0", + z: "0" + }, + content: ["animate", "set"] + }, + feSpecularLighting: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: [ + "class", + "style", + "in", + "surfaceScale", + "specularConstant", + "specularExponent", + "kernelUnitLength" + ], + defaults: { + surfaceScale: "1", + specularConstant: "1", + specularExponent: "1" + }, + contentGroups: [ + "descriptive", + "lightSource" + ] + }, + feSpotLight: { + attrsGroups: ["core"], + attrs: [ + "x", + "y", + "z", + "pointsAtX", + "pointsAtY", + "pointsAtZ", + "specularExponent", + "limitingConeAngle" + ], + defaults: { + x: "0", + y: "0", + z: "0", + pointsAtX: "0", + pointsAtY: "0", + pointsAtZ: "0", + specularExponent: "1" + }, + content: ["animate", "set"] + }, + feTile: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: ["class", "style", "in"], + content: ["animate", "set"] + }, + feTurbulence: { + attrsGroups: ["core", "presentation", "filterPrimitive"], + attrs: [ + "class", + "style", + "baseFrequency", + "numOctaves", + "seed", + "stitchTiles", + "type" + ], + defaults: { + baseFrequency: "0", + numOctaves: "1", + seed: "0", + stitchTiles: "noStitch", + type: "turbulence" + }, + content: ["animate", "set"] + }, + filter: { + attrsGroups: ["core", "presentation", "xlink"], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "x", + "y", + "width", + "height", + "filterRes", + "filterUnits", + "primitiveUnits", + "href", + "xlink:href" + ], + defaults: { + primitiveUnits: "userSpaceOnUse", + x: "-10%", + y: "-10%", + width: "120%", + height: "120%" + }, + contentGroups: ["descriptive", "filterPrimitive"], + content: ["animate", "set"] + }, + font: { + attrsGroups: ["core", "presentation"], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "horiz-origin-x", + "horiz-origin-y", + "horiz-adv-x", + "vert-origin-x", + "vert-origin-y", + "vert-adv-y" + ], + defaults: { + "horiz-origin-x": "0", + "horiz-origin-y": "0" + }, + contentGroups: ["descriptive"], + content: ["font-face", "glyph", "hkern", "missing-glyph", "vkern"] + }, + "font-face": { + attrsGroups: ["core"], + attrs: [ + "font-family", + "font-style", + "font-variant", + "font-weight", + "font-stretch", + "font-size", + "unicode-range", + "units-per-em", + "panose-1", + "stemv", + "stemh", + "slope", + "cap-height", + "x-height", + "accent-height", + "ascent", + "descent", + "widths", + "bbox", + "ideographic", + "alphabetic", + "mathematical", + "hanging", + "v-ideographic", + "v-alphabetic", + "v-mathematical", + "v-hanging", + "underline-position", + "underline-thickness", + "strikethrough-position", + "strikethrough-thickness", + "overline-position", + "overline-thickness" + ], + defaults: { + "font-style": "all", + "font-variant": "normal", + "font-weight": "all", + "font-stretch": "normal", + "unicode-range": "U+0-10FFFF", + "units-per-em": "1000", + "panose-1": "0 0 0 0 0 0 0 0 0 0", + slope: "0" + }, + contentGroups: ["descriptive"], + content: [ + "font-face-src" + ] + }, + "font-face-format": { + attrsGroups: ["core"], + attrs: ["string"] + }, + "font-face-name": { + attrsGroups: ["core"], + attrs: ["name"] + }, + "font-face-src": { + attrsGroups: ["core"], + content: ["font-face-name", "font-face-uri"] + }, + "font-face-uri": { + attrsGroups: ["core", "xlink"], + attrs: ["href", "xlink:href"], + content: ["font-face-format"] + }, + foreignObject: { + attrsGroups: [ + "core", + "conditionalProcessing", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "x", + "y", + "width", + "height" + ], + defaults: { + x: "0", + y: "0" + } + }, + g: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: ["class", "style", "externalResourcesRequired", "transform"], + contentGroups: [ + "animation", + "descriptive", + "shape", + "structural", + "paintServer" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view" + ] + }, + glyph: { + attrsGroups: ["core", "presentation"], + attrs: [ + "class", + "style", + "d", + "horiz-adv-x", + "vert-origin-x", + "vert-origin-y", + "vert-adv-y", + "unicode", + "glyph-name", + "orientation", + "arabic-form", + "lang" + ], + defaults: { + "arabic-form": "initial" + }, + contentGroups: [ + "animation", + "descriptive", + "shape", + "structural", + "paintServer" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view" + ] + }, + glyphRef: { + attrsGroups: ["core", "presentation"], + attrs: [ + "class", + "style", + "d", + "horiz-adv-x", + "vert-origin-x", + "vert-origin-y", + "vert-adv-y" + ], + contentGroups: [ + "animation", + "descriptive", + "shape", + "structural", + "paintServer" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view" + ] + }, + hatch: { + attrsGroups: ["core", "presentation", "xlink"], + attrs: [ + "class", + "style", + "x", + "y", + "pitch", + "rotate", + "hatchUnits", + "hatchContentUnits", + "transform" + ], + defaults: { + hatchUnits: "objectBoundingBox", + hatchContentUnits: "userSpaceOnUse", + x: "0", + y: "0", + pitch: "0", + rotate: "0" + }, + contentGroups: ["animation", "descriptive"], + content: ["hatchPath"] + }, + hatchPath: { + attrsGroups: ["core", "presentation", "xlink"], + attrs: ["class", "style", "d", "offset"], + defaults: { + offset: "0" + }, + contentGroups: ["animation", "descriptive"] + }, + hkern: { + attrsGroups: ["core"], + attrs: ["u1", "g1", "u2", "g2", "k"] + }, + image: { + attrsGroups: [ + "core", + "conditionalProcessing", + "graphicalEvent", + "xlink", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "preserveAspectRatio", + "transform", + "x", + "y", + "width", + "height", + "href", + "xlink:href" + ], + defaults: { + x: "0", + y: "0", + preserveAspectRatio: "xMidYMid meet" + }, + contentGroups: ["animation", "descriptive"] + }, + line: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "x1", + "y1", + "x2", + "y2" + ], + defaults: { + x1: "0", + y1: "0", + x2: "0", + y2: "0" + }, + contentGroups: ["animation", "descriptive"] + }, + linearGradient: { + attrsGroups: ["core", "presentation", "xlink"], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "x1", + "y1", + "x2", + "y2", + "gradientUnits", + "gradientTransform", + "spreadMethod", + "href", + "xlink:href" + ], + defaults: { + x1: "0", + y1: "0", + x2: "100%", + y2: "0", + spreadMethod: "pad" + }, + contentGroups: ["descriptive"], + content: ["animate", "animateTransform", "set", "stop"] + }, + marker: { + attrsGroups: ["core", "presentation"], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "viewBox", + "preserveAspectRatio", + "refX", + "refY", + "markerUnits", + "markerWidth", + "markerHeight", + "orient" + ], + defaults: { + markerUnits: "strokeWidth", + refX: "0", + refY: "0", + markerWidth: "3", + markerHeight: "3" + }, + contentGroups: [ + "animation", + "descriptive", + "shape", + "structural", + "paintServer" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view" + ] + }, + mask: { + attrsGroups: ["conditionalProcessing", "core", "presentation"], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "x", + "y", + "width", + "height", + "mask-type", + "maskUnits", + "maskContentUnits" + ], + defaults: { + maskUnits: "objectBoundingBox", + maskContentUnits: "userSpaceOnUse", + x: "-10%", + y: "-10%", + width: "120%", + height: "120%" + }, + contentGroups: [ + "animation", + "descriptive", + "shape", + "structural", + "paintServer" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view" + ] + }, + metadata: { + attrsGroups: ["core"] + }, + "missing-glyph": { + attrsGroups: ["core", "presentation"], + attrs: [ + "class", + "style", + "d", + "horiz-adv-x", + "vert-origin-x", + "vert-origin-y", + "vert-adv-y" + ], + contentGroups: [ + "animation", + "descriptive", + "shape", + "structural", + "paintServer" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view" + ] + }, + mpath: { + attrsGroups: ["core", "xlink"], + attrs: ["externalResourcesRequired", "href", "xlink:href"], + contentGroups: ["descriptive"] + }, + path: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "d", + "pathLength" + ], + contentGroups: ["animation", "descriptive"] + }, + pattern: { + attrsGroups: ["conditionalProcessing", "core", "presentation", "xlink"], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "viewBox", + "preserveAspectRatio", + "x", + "y", + "width", + "height", + "patternUnits", + "patternContentUnits", + "patternTransform", + "href", + "xlink:href" + ], + defaults: { + patternUnits: "objectBoundingBox", + patternContentUnits: "userSpaceOnUse", + x: "0", + y: "0", + width: "0", + height: "0", + preserveAspectRatio: "xMidYMid meet" + }, + contentGroups: [ + "animation", + "descriptive", + "paintServer", + "shape", + "structural" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view" + ] + }, + polygon: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "points" + ], + contentGroups: ["animation", "descriptive"] + }, + polyline: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "points" + ], + contentGroups: ["animation", "descriptive"] + }, + radialGradient: { + attrsGroups: ["core", "presentation", "xlink"], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "cx", + "cy", + "r", + "fx", + "fy", + "fr", + "gradientUnits", + "gradientTransform", + "spreadMethod", + "href", + "xlink:href" + ], + defaults: { + gradientUnits: "objectBoundingBox", + cx: "50%", + cy: "50%", + r: "50%" + }, + contentGroups: ["descriptive"], + content: ["animate", "animateTransform", "set", "stop"] + }, + meshGradient: { + attrsGroups: ["core", "presentation", "xlink"], + attrs: ["class", "style", "x", "y", "gradientUnits", "transform"], + contentGroups: ["descriptive", "paintServer", "animation"], + content: ["meshRow"] + }, + meshRow: { + attrsGroups: ["core", "presentation"], + attrs: ["class", "style"], + contentGroups: ["descriptive"], + content: ["meshPatch"] + }, + meshPatch: { + attrsGroups: ["core", "presentation"], + attrs: ["class", "style"], + contentGroups: ["descriptive"], + content: ["stop"] + }, + rect: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "x", + "y", + "width", + "height", + "rx", + "ry" + ], + defaults: { + x: "0", + y: "0" + }, + contentGroups: ["animation", "descriptive"] + }, + script: { + attrsGroups: ["core", "xlink"], + attrs: ["externalResourcesRequired", "type", "href", "xlink:href"] + }, + set: { + attrsGroups: [ + "conditionalProcessing", + "core", + "animation", + "xlink", + "animationAttributeTarget", + "animationTiming" + ], + attrs: ["externalResourcesRequired", "to"], + contentGroups: ["descriptive"] + }, + solidColor: { + attrsGroups: ["core", "presentation"], + attrs: ["class", "style"], + contentGroups: ["paintServer"] + }, + stop: { + attrsGroups: ["core", "presentation"], + attrs: ["class", "style", "offset", "path"], + content: ["animate", "animateColor", "set"] + }, + style: { + attrsGroups: ["core"], + attrs: ["type", "media", "title"], + defaults: { + type: "text/css" + } + }, + svg: { + attrsGroups: [ + "conditionalProcessing", + "core", + "documentEvent", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "x", + "y", + "width", + "height", + "viewBox", + "preserveAspectRatio", + "zoomAndPan", + "version", + "baseProfile", + "contentScriptType", + "contentStyleType" + ], + defaults: { + x: "0", + y: "0", + width: "100%", + height: "100%", + preserveAspectRatio: "xMidYMid meet", + zoomAndPan: "magnify", + version: "1.1", + baseProfile: "none", + contentScriptType: "application/ecmascript", + contentStyleType: "text/css" + }, + contentGroups: [ + "animation", + "descriptive", + "shape", + "structural", + "paintServer" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view" + ] + }, + switch: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: ["class", "style", "externalResourcesRequired", "transform"], + contentGroups: ["animation", "descriptive", "shape"], + content: [ + "a", + "foreignObject", + "g", + "image", + "svg", + "switch", + "text", + "use" + ] + }, + symbol: { + attrsGroups: ["core", "graphicalEvent", "presentation"], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "preserveAspectRatio", + "viewBox", + "refX", + "refY" + ], + defaults: { + refX: "0", + refY: "0" + }, + contentGroups: [ + "animation", + "descriptive", + "shape", + "structural", + "paintServer" + ], + content: [ + "a", + "altGlyphDef", + "clipPath", + "color-profile", + "cursor", + "filter", + "font", + "font-face", + "foreignObject", + "image", + "marker", + "mask", + "pattern", + "script", + "style", + "switch", + "text", + "view" + ] + }, + text: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "lengthAdjust", + "x", + "y", + "dx", + "dy", + "rotate", + "textLength" + ], + defaults: { + x: "0", + y: "0", + lengthAdjust: "spacing" + }, + contentGroups: ["animation", "descriptive", "textContentChild"], + content: ["a"] + }, + textPath: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation", + "xlink" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "href", + "xlink:href", + "startOffset", + "method", + "spacing", + "d" + ], + defaults: { + startOffset: "0", + method: "align", + spacing: "exact" + }, + contentGroups: ["descriptive"], + content: [ + "a", + "altGlyph", + "animate", + "animateColor", + "set", + "tref", + "tspan" + ] + }, + title: { + attrsGroups: ["core"], + attrs: ["class", "style"] + }, + tref: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation", + "xlink" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "href", + "xlink:href" + ], + contentGroups: ["descriptive"], + content: ["animate", "animateColor", "set"] + }, + tspan: { + attrsGroups: [ + "conditionalProcessing", + "core", + "graphicalEvent", + "presentation" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "x", + "y", + "dx", + "dy", + "rotate", + "textLength", + "lengthAdjust" + ], + contentGroups: ["descriptive"], + content: [ + "a", + "altGlyph", + "animate", + "animateColor", + "set", + "tref", + "tspan" + ] + }, + use: { + attrsGroups: [ + "core", + "conditionalProcessing", + "graphicalEvent", + "presentation", + "xlink" + ], + attrs: [ + "class", + "style", + "externalResourcesRequired", + "transform", + "x", + "y", + "width", + "height", + "href", + "xlink:href" + ], + defaults: { + x: "0", + y: "0" + }, + contentGroups: ["animation", "descriptive"] + }, + view: { + attrsGroups: ["core"], + attrs: [ + "externalResourcesRequired", + "viewBox", + "preserveAspectRatio", + "zoomAndPan", + "viewTarget" + ], + contentGroups: ["descriptive"] + }, + vkern: { + attrsGroups: ["core"], + attrs: ["u1", "g1", "u2", "g2", "k"] + } + }; + exports2.editorNamespaces = [ + "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd", + "http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd", + "http://www.inkscape.org/namespaces/inkscape", + "http://www.bohemiancoding.com/sketch/ns", + "http://ns.adobe.com/AdobeIllustrator/10.0/", + "http://ns.adobe.com/Graphs/1.0/", + "http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/", + "http://ns.adobe.com/Variables/1.0/", + "http://ns.adobe.com/SaveForWeb/1.0/", + "http://ns.adobe.com/Extensibility/1.0/", + "http://ns.adobe.com/Flows/1.0/", + "http://ns.adobe.com/ImageReplacement/1.0/", + "http://ns.adobe.com/GenericCustomNamespace/1.0/", + "http://ns.adobe.com/XPath/1.0/", + "http://schemas.microsoft.com/visio/2003/SVGExtensions/", + "http://taptrix.com/vectorillustrator/svg_extensions", + "http://www.figma.com/figma/ns", + "http://purl.org/dc/elements/1.1/", + "http://creativecommons.org/ns#", + "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "http://www.serif.com/", + "http://www.vector.evaxdesign.sk" + ]; + exports2.referencesProps = [ + "clip-path", + "color-profile", + "fill", + "filter", + "marker-start", + "marker-mid", + "marker-end", + "mask", + "stroke", + "style" + ]; + exports2.inheritableAttrs = [ + "clip-rule", + "color", + "color-interpolation", + "color-interpolation-filters", + "color-profile", + "color-rendering", + "cursor", + "direction", + "dominant-baseline", + "fill", + "fill-opacity", + "fill-rule", + "font", + "font-family", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-variant", + "font-weight", + "glyph-orientation-horizontal", + "glyph-orientation-vertical", + "image-rendering", + "letter-spacing", + "marker", + "marker-end", + "marker-mid", + "marker-start", + "paint-order", + "pointer-events", + "shape-rendering", + "stroke", + "stroke-dasharray", + "stroke-dashoffset", + "stroke-linecap", + "stroke-linejoin", + "stroke-miterlimit", + "stroke-opacity", + "stroke-width", + "text-anchor", + "text-rendering", + "transform", + "visibility", + "word-spacing", + "writing-mode" + ]; + exports2.presentationNonInheritableGroupAttrs = [ + "display", + "clip-path", + "filter", + "mask", + "opacity", + "text-decoration", + "transform", + "unicode-bidi" + ]; + exports2.colorsNames = { + aliceblue: "#f0f8ff", + antiquewhite: "#faebd7", + aqua: "#0ff", + aquamarine: "#7fffd4", + azure: "#f0ffff", + beige: "#f5f5dc", + bisque: "#ffe4c4", + black: "#000", + blanchedalmond: "#ffebcd", + blue: "#00f", + blueviolet: "#8a2be2", + brown: "#a52a2a", + burlywood: "#deb887", + cadetblue: "#5f9ea0", + chartreuse: "#7fff00", + chocolate: "#d2691e", + coral: "#ff7f50", + cornflowerblue: "#6495ed", + cornsilk: "#fff8dc", + crimson: "#dc143c", + cyan: "#0ff", + darkblue: "#00008b", + darkcyan: "#008b8b", + darkgoldenrod: "#b8860b", + darkgray: "#a9a9a9", + darkgreen: "#006400", + darkgrey: "#a9a9a9", + darkkhaki: "#bdb76b", + darkmagenta: "#8b008b", + darkolivegreen: "#556b2f", + darkorange: "#ff8c00", + darkorchid: "#9932cc", + darkred: "#8b0000", + darksalmon: "#e9967a", + darkseagreen: "#8fbc8f", + darkslateblue: "#483d8b", + darkslategray: "#2f4f4f", + darkslategrey: "#2f4f4f", + darkturquoise: "#00ced1", + darkviolet: "#9400d3", + deeppink: "#ff1493", + deepskyblue: "#00bfff", + dimgray: "#696969", + dimgrey: "#696969", + dodgerblue: "#1e90ff", + firebrick: "#b22222", + floralwhite: "#fffaf0", + forestgreen: "#228b22", + fuchsia: "#f0f", + gainsboro: "#dcdcdc", + ghostwhite: "#f8f8ff", + gold: "#ffd700", + goldenrod: "#daa520", + gray: "#808080", + green: "#008000", + greenyellow: "#adff2f", + grey: "#808080", + honeydew: "#f0fff0", + hotpink: "#ff69b4", + indianred: "#cd5c5c", + indigo: "#4b0082", + ivory: "#fffff0", + khaki: "#f0e68c", + lavender: "#e6e6fa", + lavenderblush: "#fff0f5", + lawngreen: "#7cfc00", + lemonchiffon: "#fffacd", + lightblue: "#add8e6", + lightcoral: "#f08080", + lightcyan: "#e0ffff", + lightgoldenrodyellow: "#fafad2", + lightgray: "#d3d3d3", + lightgreen: "#90ee90", + lightgrey: "#d3d3d3", + lightpink: "#ffb6c1", + lightsalmon: "#ffa07a", + lightseagreen: "#20b2aa", + lightskyblue: "#87cefa", + lightslategray: "#789", + lightslategrey: "#789", + lightsteelblue: "#b0c4de", + lightyellow: "#ffffe0", + lime: "#0f0", + limegreen: "#32cd32", + linen: "#faf0e6", + magenta: "#f0f", + maroon: "#800000", + mediumaquamarine: "#66cdaa", + mediumblue: "#0000cd", + mediumorchid: "#ba55d3", + mediumpurple: "#9370db", + mediumseagreen: "#3cb371", + mediumslateblue: "#7b68ee", + mediumspringgreen: "#00fa9a", + mediumturquoise: "#48d1cc", + mediumvioletred: "#c71585", + midnightblue: "#191970", + mintcream: "#f5fffa", + mistyrose: "#ffe4e1", + moccasin: "#ffe4b5", + navajowhite: "#ffdead", + navy: "#000080", + oldlace: "#fdf5e6", + olive: "#808000", + olivedrab: "#6b8e23", + orange: "#ffa500", + orangered: "#ff4500", + orchid: "#da70d6", + palegoldenrod: "#eee8aa", + palegreen: "#98fb98", + paleturquoise: "#afeeee", + palevioletred: "#db7093", + papayawhip: "#ffefd5", + peachpuff: "#ffdab9", + peru: "#cd853f", + pink: "#ffc0cb", + plum: "#dda0dd", + powderblue: "#b0e0e6", + purple: "#800080", + rebeccapurple: "#639", + red: "#f00", + rosybrown: "#bc8f8f", + royalblue: "#4169e1", + saddlebrown: "#8b4513", + salmon: "#fa8072", + sandybrown: "#f4a460", + seagreen: "#2e8b57", + seashell: "#fff5ee", + sienna: "#a0522d", + silver: "#c0c0c0", + skyblue: "#87ceeb", + slateblue: "#6a5acd", + slategray: "#708090", + slategrey: "#708090", + snow: "#fffafa", + springgreen: "#00ff7f", + steelblue: "#4682b4", + tan: "#d2b48c", + teal: "#008080", + thistle: "#d8bfd8", + tomato: "#ff6347", + turquoise: "#40e0d0", + violet: "#ee82ee", + wheat: "#f5deb3", + white: "#fff", + whitesmoke: "#f5f5f5", + yellow: "#ff0", + yellowgreen: "#9acd32" + }; + exports2.colorsShortNames = { + "#f0ffff": "azure", + "#f5f5dc": "beige", + "#ffe4c4": "bisque", + "#a52a2a": "brown", + "#ff7f50": "coral", + "#ffd700": "gold", + "#808080": "gray", + "#008000": "green", + "#4b0082": "indigo", + "#fffff0": "ivory", + "#f0e68c": "khaki", + "#faf0e6": "linen", + "#800000": "maroon", + "#000080": "navy", + "#808000": "olive", + "#ffa500": "orange", + "#da70d6": "orchid", + "#cd853f": "peru", + "#ffc0cb": "pink", + "#dda0dd": "plum", + "#800080": "purple", + "#f00": "red", + "#ff0000": "red", + "#fa8072": "salmon", + "#a0522d": "sienna", + "#c0c0c0": "silver", + "#fffafa": "snow", + "#d2b48c": "tan", + "#008080": "teal", + "#ff6347": "tomato", + "#ee82ee": "violet", + "#f5deb3": "wheat" + }; + exports2.colorsProps = [ + "color", + "fill", + "stroke", + "stop-color", + "flood-color", + "lighting-color" + ]; + } +}); + +// node_modules/svgo/plugins/removeEditorsNSData.js +var require_removeEditorsNSData = __commonJS({ + "node_modules/svgo/plugins/removeEditorsNSData.js"(exports2) { + "use strict"; + var { detachNodeFromParent } = require_xast(); + var { editorNamespaces } = require_collections(); + exports2.type = "visitor"; + exports2.name = "removeEditorsNSData"; + exports2.active = true; + exports2.description = "removes editors namespaces, elements and attributes"; + exports2.fn = (_root, params) => { + let namespaces = editorNamespaces; + if (Array.isArray(params.additionalNamespaces)) { + namespaces = [...editorNamespaces, ...params.additionalNamespaces]; + } + const prefixes = []; + return { + element: { + enter: (node, parentNode) => { + if (node.name === "svg") { + for (const [name, value] of Object.entries(node.attributes)) { + if (name.startsWith("xmlns:") && namespaces.includes(value)) { + prefixes.push(name.slice("xmlns:".length)); + delete node.attributes[name]; + } + } + } + for (const name of Object.keys(node.attributes)) { + if (name.includes(":")) { + const [prefix] = name.split(":"); + if (prefixes.includes(prefix)) { + delete node.attributes[name]; + } + } + } + if (node.name.includes(":")) { + const [prefix] = node.name.split(":"); + if (prefixes.includes(prefix)) { + detachNodeFromParent(node, parentNode); + } + } + } + } + }; + }; + } +}); + +// node_modules/svgo/plugins/cleanupAttrs.js +var require_cleanupAttrs = __commonJS({ + "node_modules/svgo/plugins/cleanupAttrs.js"(exports2) { + "use strict"; + exports2.name = "cleanupAttrs"; + exports2.type = "visitor"; + exports2.active = true; + exports2.description = "cleanups attributes from newlines, trailing and repeating spaces"; + var regNewlinesNeedSpace = /(\S)\r?\n(\S)/g; + var regNewlines = /\r?\n/g; + var regSpaces = /\s{2,}/g; + exports2.fn = (root, params) => { + const { newlines = true, trim = true, spaces = true } = params; + return { + element: { + enter: (node) => { + for (const name of Object.keys(node.attributes)) { + if (newlines) { + node.attributes[name] = node.attributes[name].replace( + regNewlinesNeedSpace, + (match, p1, p2) => p1 + " " + p2 + ); + node.attributes[name] = node.attributes[name].replace( + regNewlines, + "" + ); + } + if (trim) { + node.attributes[name] = node.attributes[name].trim(); + } + if (spaces) { + node.attributes[name] = node.attributes[name].replace( + regSpaces, + " " + ); + } + } + } + } + }; + }; + } +}); + +// node_modules/svgo/lib/svgo/css-class-list.js +var require_css_class_list = __commonJS({ + "node_modules/svgo/lib/svgo/css-class-list.js"(exports2, module2) { + "use strict"; + var CSSClassList = function(node) { + this.parentNode = node; + this.classNames = /* @__PURE__ */ new Set(); + const value = node.attributes.class; + if (value != null) { + this.addClassValueHandler(); + this.setClassValue(value); + } + }; + CSSClassList.prototype.addClassValueHandler = function() { + Object.defineProperty(this.parentNode.attributes, "class", { + get: this.getClassValue.bind(this), + set: this.setClassValue.bind(this), + enumerable: true, + configurable: true + }); + }; + CSSClassList.prototype.getClassValue = function() { + var arrClassNames = Array.from(this.classNames); + return arrClassNames.join(" "); + }; + CSSClassList.prototype.setClassValue = function(newValue) { + if (typeof newValue === "undefined") { + this.classNames.clear(); + return; + } + var arrClassNames = newValue.split(" "); + this.classNames = new Set(arrClassNames); + }; + CSSClassList.prototype.add = function() { + this.addClassValueHandler(); + Object.values(arguments).forEach(this._addSingle.bind(this)); + }; + CSSClassList.prototype._addSingle = function(className) { + this.classNames.add(className); + }; + CSSClassList.prototype.remove = function() { + this.addClassValueHandler(); + Object.values(arguments).forEach(this._removeSingle.bind(this)); + }; + CSSClassList.prototype._removeSingle = function(className) { + this.classNames.delete(className); + }; + CSSClassList.prototype.item = function(index) { + var arrClassNames = Array.from(this.classNames); + return arrClassNames[index]; + }; + CSSClassList.prototype.toggle = function(className, force) { + if (this.contains(className) || force === false) { + this.classNames.delete(className); + } + this.classNames.add(className); + }; + CSSClassList.prototype.contains = function(className) { + return this.classNames.has(className); + }; + module2.exports = CSSClassList; + } +}); + +// node_modules/css-tree/lib/common/List.js +var require_List = __commonJS({ + "node_modules/css-tree/lib/common/List.js"(exports2, module2) { + function createItem(data) { + return { + prev: null, + next: null, + data + }; + } + function allocateCursor(node, prev, next) { + var cursor; + if (cursors !== null) { + cursor = cursors; + cursors = cursors.cursor; + cursor.prev = prev; + cursor.next = next; + cursor.cursor = node.cursor; + } else { + cursor = { + prev, + next, + cursor: node.cursor + }; + } + node.cursor = cursor; + return cursor; + } + function releaseCursor(node) { + var cursor = node.cursor; + node.cursor = cursor.cursor; + cursor.prev = null; + cursor.next = null; + cursor.cursor = cursors; + cursors = cursor; + } + var cursors = null; + var List = function() { + this.cursor = null; + this.head = null; + this.tail = null; + }; + List.createItem = createItem; + List.prototype.createItem = createItem; + List.prototype.updateCursors = function(prevOld, prevNew, nextOld, nextNew) { + var cursor = this.cursor; + while (cursor !== null) { + if (cursor.prev === prevOld) { + cursor.prev = prevNew; + } + if (cursor.next === nextOld) { + cursor.next = nextNew; + } + cursor = cursor.cursor; + } + }; + List.prototype.getSize = function() { + var size = 0; + var cursor = this.head; + while (cursor) { + size++; + cursor = cursor.next; + } + return size; + }; + List.prototype.fromArray = function(array) { + var cursor = null; + this.head = null; + for (var i = 0; i < array.length; i++) { + var item = createItem(array[i]); + if (cursor !== null) { + cursor.next = item; + } else { + this.head = item; + } + item.prev = cursor; + cursor = item; + } + this.tail = cursor; + return this; + }; + List.prototype.toArray = function() { + var cursor = this.head; + var result = []; + while (cursor) { + result.push(cursor.data); + cursor = cursor.next; + } + return result; + }; + List.prototype.toJSON = List.prototype.toArray; + List.prototype.isEmpty = function() { + return this.head === null; + }; + List.prototype.first = function() { + return this.head && this.head.data; + }; + List.prototype.last = function() { + return this.tail && this.tail.data; + }; + List.prototype.each = function(fn, context) { + var item; + if (context === void 0) { + context = this; + } + var cursor = allocateCursor(this, null, this.head); + while (cursor.next !== null) { + item = cursor.next; + cursor.next = item.next; + fn.call(context, item.data, item, this); + } + releaseCursor(this); + }; + List.prototype.forEach = List.prototype.each; + List.prototype.eachRight = function(fn, context) { + var item; + if (context === void 0) { + context = this; + } + var cursor = allocateCursor(this, this.tail, null); + while (cursor.prev !== null) { + item = cursor.prev; + cursor.prev = item.prev; + fn.call(context, item.data, item, this); + } + releaseCursor(this); + }; + List.prototype.forEachRight = List.prototype.eachRight; + List.prototype.reduce = function(fn, initialValue, context) { + var item; + if (context === void 0) { + context = this; + } + var cursor = allocateCursor(this, null, this.head); + var acc = initialValue; + while (cursor.next !== null) { + item = cursor.next; + cursor.next = item.next; + acc = fn.call(context, acc, item.data, item, this); + } + releaseCursor(this); + return acc; + }; + List.prototype.reduceRight = function(fn, initialValue, context) { + var item; + if (context === void 0) { + context = this; + } + var cursor = allocateCursor(this, this.tail, null); + var acc = initialValue; + while (cursor.prev !== null) { + item = cursor.prev; + cursor.prev = item.prev; + acc = fn.call(context, acc, item.data, item, this); + } + releaseCursor(this); + return acc; + }; + List.prototype.nextUntil = function(start, fn, context) { + if (start === null) { + return; + } + var item; + if (context === void 0) { + context = this; + } + var cursor = allocateCursor(this, null, start); + while (cursor.next !== null) { + item = cursor.next; + cursor.next = item.next; + if (fn.call(context, item.data, item, this)) { + break; + } + } + releaseCursor(this); + }; + List.prototype.prevUntil = function(start, fn, context) { + if (start === null) { + return; + } + var item; + if (context === void 0) { + context = this; + } + var cursor = allocateCursor(this, start, null); + while (cursor.prev !== null) { + item = cursor.prev; + cursor.prev = item.prev; + if (fn.call(context, item.data, item, this)) { + break; + } + } + releaseCursor(this); + }; + List.prototype.some = function(fn, context) { + var cursor = this.head; + if (context === void 0) { + context = this; + } + while (cursor !== null) { + if (fn.call(context, cursor.data, cursor, this)) { + return true; + } + cursor = cursor.next; + } + return false; + }; + List.prototype.map = function(fn, context) { + var result = new List(); + var cursor = this.head; + if (context === void 0) { + context = this; + } + while (cursor !== null) { + result.appendData(fn.call(context, cursor.data, cursor, this)); + cursor = cursor.next; + } + return result; + }; + List.prototype.filter = function(fn, context) { + var result = new List(); + var cursor = this.head; + if (context === void 0) { + context = this; + } + while (cursor !== null) { + if (fn.call(context, cursor.data, cursor, this)) { + result.appendData(cursor.data); + } + cursor = cursor.next; + } + return result; + }; + List.prototype.clear = function() { + this.head = null; + this.tail = null; + }; + List.prototype.copy = function() { + var result = new List(); + var cursor = this.head; + while (cursor !== null) { + result.insert(createItem(cursor.data)); + cursor = cursor.next; + } + return result; + }; + List.prototype.prepend = function(item) { + this.updateCursors(null, item, this.head, item); + if (this.head !== null) { + this.head.prev = item; + item.next = this.head; + } else { + this.tail = item; + } + this.head = item; + return this; + }; + List.prototype.prependData = function(data) { + return this.prepend(createItem(data)); + }; + List.prototype.append = function(item) { + return this.insert(item); + }; + List.prototype.appendData = function(data) { + return this.insert(createItem(data)); + }; + List.prototype.insert = function(item, before) { + if (before !== void 0 && before !== null) { + this.updateCursors(before.prev, item, before, item); + if (before.prev === null) { + if (this.head !== before) { + throw new Error("before doesn't belong to list"); + } + this.head = item; + before.prev = item; + item.next = before; + this.updateCursors(null, item); + } else { + before.prev.next = item; + item.prev = before.prev; + before.prev = item; + item.next = before; + } + } else { + this.updateCursors(this.tail, item, null, item); + if (this.tail !== null) { + this.tail.next = item; + item.prev = this.tail; + } else { + this.head = item; + } + this.tail = item; + } + return this; + }; + List.prototype.insertData = function(data, before) { + return this.insert(createItem(data), before); + }; + List.prototype.remove = function(item) { + this.updateCursors(item, item.prev, item, item.next); + if (item.prev !== null) { + item.prev.next = item.next; + } else { + if (this.head !== item) { + throw new Error("item doesn't belong to list"); + } + this.head = item.next; + } + if (item.next !== null) { + item.next.prev = item.prev; + } else { + if (this.tail !== item) { + throw new Error("item doesn't belong to list"); + } + this.tail = item.prev; + } + item.prev = null; + item.next = null; + return item; + }; + List.prototype.push = function(data) { + this.insert(createItem(data)); + }; + List.prototype.pop = function() { + if (this.tail !== null) { + return this.remove(this.tail); + } + }; + List.prototype.unshift = function(data) { + this.prepend(createItem(data)); + }; + List.prototype.shift = function() { + if (this.head !== null) { + return this.remove(this.head); + } + }; + List.prototype.prependList = function(list) { + return this.insertList(list, this.head); + }; + List.prototype.appendList = function(list) { + return this.insertList(list); + }; + List.prototype.insertList = function(list, before) { + if (list.head === null) { + return this; + } + if (before !== void 0 && before !== null) { + this.updateCursors(before.prev, list.tail, before, list.head); + if (before.prev !== null) { + before.prev.next = list.head; + list.head.prev = before.prev; + } else { + this.head = list.head; + } + before.prev = list.tail; + list.tail.next = before; + } else { + this.updateCursors(this.tail, list.tail, null, list.head); + if (this.tail !== null) { + this.tail.next = list.head; + list.head.prev = this.tail; + } else { + this.head = list.head; + } + this.tail = list.tail; + } + list.head = null; + list.tail = null; + return this; + }; + List.prototype.replace = function(oldItem, newItemOrList) { + if ("head" in newItemOrList) { + this.insertList(newItemOrList, oldItem); + } else { + this.insert(newItemOrList, oldItem); + } + this.remove(oldItem); + }; + module2.exports = List; + } +}); + +// node_modules/css-tree/lib/utils/createCustomError.js +var require_createCustomError = __commonJS({ + "node_modules/css-tree/lib/utils/createCustomError.js"(exports2, module2) { + module2.exports = function createCustomError(name, message) { + var error = Object.create(SyntaxError.prototype); + var errorStack = new Error(); + error.name = name; + error.message = message; + Object.defineProperty(error, "stack", { + get: function() { + return (errorStack.stack || "").replace(/^(.+\n){1,3}/, name + ": " + message + "\n"); + } + }); + return error; + }; + } +}); + +// node_modules/css-tree/lib/common/SyntaxError.js +var require_SyntaxError = __commonJS({ + "node_modules/css-tree/lib/common/SyntaxError.js"(exports2, module2) { + var createCustomError = require_createCustomError(); + var MAX_LINE_LENGTH = 100; + var OFFSET_CORRECTION = 60; + var TAB_REPLACEMENT = " "; + function sourceFragment(error, extraLines) { + function processLines(start, end) { + return lines.slice(start, end).map(function(line2, idx) { + var num = String(start + idx + 1); + while (num.length < maxNumLength) { + num = " " + num; + } + return num + " |" + line2; + }).join("\n"); + } + var lines = error.source.split(/\r\n?|\n|\f/); + var line = error.line; + var column = error.column; + var startLine = Math.max(1, line - extraLines) - 1; + var endLine = Math.min(line + extraLines, lines.length + 1); + var maxNumLength = Math.max(4, String(endLine).length) + 1; + var cutLeft = 0; + column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\t/g) || []).length; + if (column > MAX_LINE_LENGTH) { + cutLeft = column - OFFSET_CORRECTION + 3; + column = OFFSET_CORRECTION - 2; + } + for (var i = startLine; i <= endLine; i++) { + if (i >= 0 && i < lines.length) { + lines[i] = lines[i].replace(/\t/g, TAB_REPLACEMENT); + lines[i] = (cutLeft > 0 && lines[i].length > cutLeft ? "\u2026" : "") + lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) + (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? "\u2026" : ""); + } + } + return [ + processLines(startLine, line), + new Array(column + maxNumLength + 2).join("-") + "^", + processLines(line, endLine) + ].filter(Boolean).join("\n"); + } + var SyntaxError2 = function(message, source, offset, line, column) { + var error = createCustomError("SyntaxError", message); + error.source = source; + error.offset = offset; + error.line = line; + error.column = column; + error.sourceFragment = function(extraLines) { + return sourceFragment(error, isNaN(extraLines) ? 0 : extraLines); + }; + Object.defineProperty(error, "formattedMessage", { + get: function() { + return "Parse error: " + error.message + "\n" + sourceFragment(error, 2); + } + }); + error.parseError = { + offset, + line, + column + }; + return error; + }; + module2.exports = SyntaxError2; + } +}); + +// node_modules/css-tree/lib/tokenizer/const.js +var require_const2 = __commonJS({ + "node_modules/css-tree/lib/tokenizer/const.js"(exports2, module2) { + var TYPE = { + EOF: 0, + Ident: 1, + Function: 2, + AtKeyword: 3, + Hash: 4, + String: 5, + BadString: 6, + Url: 7, + BadUrl: 8, + Delim: 9, + Number: 10, + Percentage: 11, + Dimension: 12, + WhiteSpace: 13, + CDO: 14, + CDC: 15, + Colon: 16, + Semicolon: 17, + Comma: 18, + LeftSquareBracket: 19, + RightSquareBracket: 20, + LeftParenthesis: 21, + RightParenthesis: 22, + LeftCurlyBracket: 23, + RightCurlyBracket: 24, + Comment: 25 + }; + var NAME = Object.keys(TYPE).reduce(function(result, key) { + result[TYPE[key]] = key; + return result; + }, {}); + module2.exports = { + TYPE, + NAME + }; + } +}); + +// node_modules/css-tree/lib/tokenizer/char-code-definitions.js +var require_char_code_definitions = __commonJS({ + "node_modules/css-tree/lib/tokenizer/char-code-definitions.js"(exports2, module2) { + var EOF = 0; + function isDigit(code) { + return code >= 48 && code <= 57; + } + function isHexDigit(code) { + return isDigit(code) || code >= 65 && code <= 70 || code >= 97 && code <= 102; + } + function isUppercaseLetter(code) { + return code >= 65 && code <= 90; + } + function isLowercaseLetter(code) { + return code >= 97 && code <= 122; + } + function isLetter(code) { + return isUppercaseLetter(code) || isLowercaseLetter(code); + } + function isNonAscii(code) { + return code >= 128; + } + function isNameStart(code) { + return isLetter(code) || isNonAscii(code) || code === 95; + } + function isName(code) { + return isNameStart(code) || isDigit(code) || code === 45; + } + function isNonPrintable(code) { + return code >= 0 && code <= 8 || code === 11 || code >= 14 && code <= 31 || code === 127; + } + function isNewline(code) { + return code === 10 || code === 13 || code === 12; + } + function isWhiteSpace(code) { + return isNewline(code) || code === 32 || code === 9; + } + function isValidEscape(first, second) { + if (first !== 92) { + return false; + } + if (isNewline(second) || second === EOF) { + return false; + } + return true; + } + function isIdentifierStart(first, second, third) { + if (first === 45) { + return isNameStart(second) || second === 45 || isValidEscape(second, third); + } + if (isNameStart(first)) { + return true; + } + if (first === 92) { + return isValidEscape(first, second); + } + return false; + } + function isNumberStart(first, second, third) { + if (first === 43 || first === 45) { + if (isDigit(second)) { + return 2; + } + return second === 46 && isDigit(third) ? 3 : 0; + } + if (first === 46) { + return isDigit(second) ? 2 : 0; + } + if (isDigit(first)) { + return 1; + } + return 0; + } + function isBOM(code) { + if (code === 65279) { + return 1; + } + if (code === 65534) { + return 1; + } + return 0; + } + var CATEGORY = new Array(128); + charCodeCategory.Eof = 128; + charCodeCategory.WhiteSpace = 130; + charCodeCategory.Digit = 131; + charCodeCategory.NameStart = 132; + charCodeCategory.NonPrintable = 133; + for (i = 0; i < CATEGORY.length; i++) { + switch (true) { + case isWhiteSpace(i): + CATEGORY[i] = charCodeCategory.WhiteSpace; + break; + case isDigit(i): + CATEGORY[i] = charCodeCategory.Digit; + break; + case isNameStart(i): + CATEGORY[i] = charCodeCategory.NameStart; + break; + case isNonPrintable(i): + CATEGORY[i] = charCodeCategory.NonPrintable; + break; + default: + CATEGORY[i] = i || charCodeCategory.Eof; + } + } + var i; + function charCodeCategory(code) { + return code < 128 ? CATEGORY[code] : charCodeCategory.NameStart; + } + module2.exports = { + isDigit, + isHexDigit, + isUppercaseLetter, + isLowercaseLetter, + isLetter, + isNonAscii, + isNameStart, + isName, + isNonPrintable, + isNewline, + isWhiteSpace, + isValidEscape, + isIdentifierStart, + isNumberStart, + isBOM, + charCodeCategory + }; + } +}); + +// node_modules/css-tree/lib/tokenizer/utils.js +var require_utils3 = __commonJS({ + "node_modules/css-tree/lib/tokenizer/utils.js"(exports2, module2) { + var charCodeDef = require_char_code_definitions(); + var isDigit = charCodeDef.isDigit; + var isHexDigit = charCodeDef.isHexDigit; + var isUppercaseLetter = charCodeDef.isUppercaseLetter; + var isName = charCodeDef.isName; + var isWhiteSpace = charCodeDef.isWhiteSpace; + var isValidEscape = charCodeDef.isValidEscape; + function getCharCode(source, offset) { + return offset < source.length ? source.charCodeAt(offset) : 0; + } + function getNewlineLength(source, offset, code) { + if (code === 13 && getCharCode(source, offset + 1) === 10) { + return 2; + } + return 1; + } + function cmpChar(testStr, offset, referenceCode) { + var code = testStr.charCodeAt(offset); + if (isUppercaseLetter(code)) { + code = code | 32; + } + return code === referenceCode; + } + function cmpStr(testStr, start, end, referenceStr) { + if (end - start !== referenceStr.length) { + return false; + } + if (start < 0 || end > testStr.length) { + return false; + } + for (var i = start; i < end; i++) { + var testCode = testStr.charCodeAt(i); + var referenceCode = referenceStr.charCodeAt(i - start); + if (isUppercaseLetter(testCode)) { + testCode = testCode | 32; + } + if (testCode !== referenceCode) { + return false; + } + } + return true; + } + function findWhiteSpaceStart(source, offset) { + for (; offset >= 0; offset--) { + if (!isWhiteSpace(source.charCodeAt(offset))) { + break; + } + } + return offset + 1; + } + function findWhiteSpaceEnd(source, offset) { + for (; offset < source.length; offset++) { + if (!isWhiteSpace(source.charCodeAt(offset))) { + break; + } + } + return offset; + } + function findDecimalNumberEnd(source, offset) { + for (; offset < source.length; offset++) { + if (!isDigit(source.charCodeAt(offset))) { + break; + } + } + return offset; + } + function consumeEscaped(source, offset) { + offset += 2; + if (isHexDigit(getCharCode(source, offset - 1))) { + for (var maxOffset = Math.min(source.length, offset + 5); offset < maxOffset; offset++) { + if (!isHexDigit(getCharCode(source, offset))) { + break; + } + } + var code = getCharCode(source, offset); + if (isWhiteSpace(code)) { + offset += getNewlineLength(source, offset, code); + } + } + return offset; + } + function consumeName(source, offset) { + for (; offset < source.length; offset++) { + var code = source.charCodeAt(offset); + if (isName(code)) { + continue; + } + if (isValidEscape(code, getCharCode(source, offset + 1))) { + offset = consumeEscaped(source, offset) - 1; + continue; + } + break; + } + return offset; + } + function consumeNumber(source, offset) { + var code = source.charCodeAt(offset); + if (code === 43 || code === 45) { + code = source.charCodeAt(offset += 1); + } + if (isDigit(code)) { + offset = findDecimalNumberEnd(source, offset + 1); + code = source.charCodeAt(offset); + } + if (code === 46 && isDigit(source.charCodeAt(offset + 1))) { + code = source.charCodeAt(offset += 2); + offset = findDecimalNumberEnd(source, offset); + } + if (cmpChar(source, offset, 101)) { + var sign = 0; + code = source.charCodeAt(offset + 1); + if (code === 45 || code === 43) { + sign = 1; + code = source.charCodeAt(offset + 2); + } + if (isDigit(code)) { + offset = findDecimalNumberEnd(source, offset + 1 + sign + 1); + } + } + return offset; + } + function consumeBadUrlRemnants(source, offset) { + for (; offset < source.length; offset++) { + var code = source.charCodeAt(offset); + if (code === 41) { + offset++; + break; + } + if (isValidEscape(code, getCharCode(source, offset + 1))) { + offset = consumeEscaped(source, offset); + } + } + return offset; + } + module2.exports = { + consumeEscaped, + consumeName, + consumeNumber, + consumeBadUrlRemnants, + cmpChar, + cmpStr, + getNewlineLength, + findWhiteSpaceStart, + findWhiteSpaceEnd + }; + } +}); + +// node_modules/css-tree/lib/common/TokenStream.js +var require_TokenStream = __commonJS({ + "node_modules/css-tree/lib/common/TokenStream.js"(exports2, module2) { + var constants = require_const2(); + var TYPE = constants.TYPE; + var NAME = constants.NAME; + var utils = require_utils3(); + var cmpStr = utils.cmpStr; + var EOF = TYPE.EOF; + var WHITESPACE = TYPE.WhiteSpace; + var COMMENT = TYPE.Comment; + var OFFSET_MASK = 16777215; + var TYPE_SHIFT = 24; + var TokenStream = function() { + this.offsetAndType = null; + this.balance = null; + this.reset(); + }; + TokenStream.prototype = { + reset: function() { + this.eof = false; + this.tokenIndex = -1; + this.tokenType = 0; + this.tokenStart = this.firstCharOffset; + this.tokenEnd = this.firstCharOffset; + }, + lookupType: function(offset) { + offset += this.tokenIndex; + if (offset < this.tokenCount) { + return this.offsetAndType[offset] >> TYPE_SHIFT; + } + return EOF; + }, + lookupOffset: function(offset) { + offset += this.tokenIndex; + if (offset < this.tokenCount) { + return this.offsetAndType[offset - 1] & OFFSET_MASK; + } + return this.source.length; + }, + lookupValue: function(offset, referenceStr) { + offset += this.tokenIndex; + if (offset < this.tokenCount) { + return cmpStr( + this.source, + this.offsetAndType[offset - 1] & OFFSET_MASK, + this.offsetAndType[offset] & OFFSET_MASK, + referenceStr + ); + } + return false; + }, + getTokenStart: function(tokenIndex) { + if (tokenIndex === this.tokenIndex) { + return this.tokenStart; + } + if (tokenIndex > 0) { + return tokenIndex < this.tokenCount ? this.offsetAndType[tokenIndex - 1] & OFFSET_MASK : this.offsetAndType[this.tokenCount] & OFFSET_MASK; + } + return this.firstCharOffset; + }, + getRawLength: function(startToken, mode) { + var cursor = startToken; + var balanceEnd; + var offset = this.offsetAndType[Math.max(cursor - 1, 0)] & OFFSET_MASK; + var type; + loop: + for (; cursor < this.tokenCount; cursor++) { + balanceEnd = this.balance[cursor]; + if (balanceEnd < startToken) { + break loop; + } + type = this.offsetAndType[cursor] >> TYPE_SHIFT; + switch (mode(type, this.source, offset)) { + case 1: + break loop; + case 2: + cursor++; + break loop; + default: + if (this.balance[balanceEnd] === cursor) { + cursor = balanceEnd; + } + offset = this.offsetAndType[cursor] & OFFSET_MASK; + } + } + return cursor - this.tokenIndex; + }, + isBalanceEdge: function(pos) { + return this.balance[this.tokenIndex] < pos; + }, + isDelim: function(code, offset) { + if (offset) { + return this.lookupType(offset) === TYPE.Delim && this.source.charCodeAt(this.lookupOffset(offset)) === code; + } + return this.tokenType === TYPE.Delim && this.source.charCodeAt(this.tokenStart) === code; + }, + getTokenValue: function() { + return this.source.substring(this.tokenStart, this.tokenEnd); + }, + getTokenLength: function() { + return this.tokenEnd - this.tokenStart; + }, + substrToCursor: function(start) { + return this.source.substring(start, this.tokenStart); + }, + skipWS: function() { + for (var i = this.tokenIndex, skipTokenCount = 0; i < this.tokenCount; i++, skipTokenCount++) { + if (this.offsetAndType[i] >> TYPE_SHIFT !== WHITESPACE) { + break; + } + } + if (skipTokenCount > 0) { + this.skip(skipTokenCount); + } + }, + skipSC: function() { + while (this.tokenType === WHITESPACE || this.tokenType === COMMENT) { + this.next(); + } + }, + skip: function(tokenCount) { + var next = this.tokenIndex + tokenCount; + if (next < this.tokenCount) { + this.tokenIndex = next; + this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK; + next = this.offsetAndType[next]; + this.tokenType = next >> TYPE_SHIFT; + this.tokenEnd = next & OFFSET_MASK; + } else { + this.tokenIndex = this.tokenCount; + this.next(); + } + }, + next: function() { + var next = this.tokenIndex + 1; + if (next < this.tokenCount) { + this.tokenIndex = next; + this.tokenStart = this.tokenEnd; + next = this.offsetAndType[next]; + this.tokenType = next >> TYPE_SHIFT; + this.tokenEnd = next & OFFSET_MASK; + } else { + this.tokenIndex = this.tokenCount; + this.eof = true; + this.tokenType = EOF; + this.tokenStart = this.tokenEnd = this.source.length; + } + }, + forEachToken(fn) { + for (var i = 0, offset = this.firstCharOffset; i < this.tokenCount; i++) { + var start = offset; + var item = this.offsetAndType[i]; + var end = item & OFFSET_MASK; + var type = item >> TYPE_SHIFT; + offset = end; + fn(type, start, end, i); + } + }, + dump() { + var tokens = new Array(this.tokenCount); + this.forEachToken((type, start, end, index) => { + tokens[index] = { + idx: index, + type: NAME[type], + chunk: this.source.substring(start, end), + balance: this.balance[index] + }; + }); + return tokens; + } + }; + module2.exports = TokenStream; + } +}); + +// node_modules/css-tree/lib/definition-syntax/generate.js +var require_generate = __commonJS({ + "node_modules/css-tree/lib/definition-syntax/generate.js"(exports2, module2) { + function noop(value) { + return value; + } + function generateMultiplier(multiplier) { + if (multiplier.min === 0 && multiplier.max === 0) { + return "*"; + } + if (multiplier.min === 0 && multiplier.max === 1) { + return "?"; + } + if (multiplier.min === 1 && multiplier.max === 0) { + return multiplier.comma ? "#" : "+"; + } + if (multiplier.min === 1 && multiplier.max === 1) { + return ""; + } + return (multiplier.comma ? "#" : "") + (multiplier.min === multiplier.max ? "{" + multiplier.min + "}" : "{" + multiplier.min + "," + (multiplier.max !== 0 ? multiplier.max : "") + "}"); + } + function generateTypeOpts(node) { + switch (node.type) { + case "Range": + return " [" + (node.min === null ? "-\u221E" : node.min) + "," + (node.max === null ? "\u221E" : node.max) + "]"; + default: + throw new Error("Unknown node type `" + node.type + "`"); + } + } + function generateSequence(node, decorate, forceBraces, compact) { + var combinator = node.combinator === " " || compact ? node.combinator : " " + node.combinator + " "; + var result = node.terms.map(function(term) { + return generate(term, decorate, forceBraces, compact); + }).join(combinator); + if (node.explicit || forceBraces) { + result = (compact || result[0] === "," ? "[" : "[ ") + result + (compact ? "]" : " ]"); + } + return result; + } + function generate(node, decorate, forceBraces, compact) { + var result; + switch (node.type) { + case "Group": + result = generateSequence(node, decorate, forceBraces, compact) + (node.disallowEmpty ? "!" : ""); + break; + case "Multiplier": + return generate(node.term, decorate, forceBraces, compact) + decorate(generateMultiplier(node), node); + case "Type": + result = "<" + node.name + (node.opts ? decorate(generateTypeOpts(node.opts), node.opts) : "") + ">"; + break; + case "Property": + result = "<'" + node.name + "'>"; + break; + case "Keyword": + result = node.name; + break; + case "AtKeyword": + result = "@" + node.name; + break; + case "Function": + result = node.name + "("; + break; + case "String": + case "Token": + result = node.value; + break; + case "Comma": + result = ","; + break; + default: + throw new Error("Unknown node type `" + node.type + "`"); + } + return decorate(result, node); + } + module2.exports = function(node, options) { + var decorate = noop; + var forceBraces = false; + var compact = false; + if (typeof options === "function") { + decorate = options; + } else if (options) { + forceBraces = Boolean(options.forceBraces); + compact = Boolean(options.compact); + if (typeof options.decorate === "function") { + decorate = options.decorate; + } + } + return generate(node, decorate, forceBraces, compact); + }; + } +}); + +// node_modules/css-tree/lib/lexer/error.js +var require_error2 = __commonJS({ + "node_modules/css-tree/lib/lexer/error.js"(exports2, module2) { + var createCustomError = require_createCustomError(); + var generate = require_generate(); + var defaultLoc = { offset: 0, line: 1, column: 1 }; + function locateMismatch(matchResult, node) { + const tokens = matchResult.tokens; + const longestMatch = matchResult.longestMatch; + const mismatchNode = longestMatch < tokens.length ? tokens[longestMatch].node || null : null; + const badNode = mismatchNode !== node ? mismatchNode : null; + let mismatchOffset = 0; + let mismatchLength = 0; + let entries = 0; + let css = ""; + let start; + let end; + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i].value; + if (i === longestMatch) { + mismatchLength = token.length; + mismatchOffset = css.length; + } + if (badNode !== null && tokens[i].node === badNode) { + if (i <= longestMatch) { + entries++; + } else { + entries = 0; + } + } + css += token; + } + if (longestMatch === tokens.length || entries > 1) { + start = fromLoc(badNode || node, "end") || buildLoc(defaultLoc, css); + end = buildLoc(start); + } else { + start = fromLoc(badNode, "start") || buildLoc(fromLoc(node, "start") || defaultLoc, css.slice(0, mismatchOffset)); + end = fromLoc(badNode, "end") || buildLoc(start, css.substr(mismatchOffset, mismatchLength)); + } + return { + css, + mismatchOffset, + mismatchLength, + start, + end + }; + } + function fromLoc(node, point) { + const value = node && node.loc && node.loc[point]; + if (value) { + return "line" in value ? buildLoc(value) : value; + } + return null; + } + function buildLoc({ offset, line, column }, extra) { + const loc = { + offset, + line, + column + }; + if (extra) { + const lines = extra.split(/\n|\r\n?|\f/); + loc.offset += extra.length; + loc.line += lines.length - 1; + loc.column = lines.length === 1 ? loc.column + extra.length : lines.pop().length + 1; + } + return loc; + } + var SyntaxReferenceError = function(type, referenceName) { + const error = createCustomError( + "SyntaxReferenceError", + type + (referenceName ? " `" + referenceName + "`" : "") + ); + error.reference = referenceName; + return error; + }; + var SyntaxMatchError = function(message, syntax, node, matchResult) { + const error = createCustomError("SyntaxMatchError", message); + const { + css, + mismatchOffset, + mismatchLength, + start, + end + } = locateMismatch(matchResult, node); + error.rawMessage = message; + error.syntax = syntax ? generate(syntax) : ""; + error.css = css; + error.mismatchOffset = mismatchOffset; + error.mismatchLength = mismatchLength; + error.message = message + "\n syntax: " + error.syntax + "\n value: " + (css || "") + "\n --------" + new Array(error.mismatchOffset + 1).join("-") + "^"; + Object.assign(error, start); + error.loc = { + source: node && node.loc && node.loc.source || "", + start, + end + }; + return error; + }; + module2.exports = { + SyntaxReferenceError, + SyntaxMatchError + }; + } +}); + +// node_modules/css-tree/lib/utils/names.js +var require_names2 = __commonJS({ + "node_modules/css-tree/lib/utils/names.js"(exports2, module2) { + var hasOwnProperty2 = Object.prototype.hasOwnProperty; + var keywords = /* @__PURE__ */ Object.create(null); + var properties = /* @__PURE__ */ Object.create(null); + var HYPHENMINUS = 45; + function isCustomProperty(str, offset) { + offset = offset || 0; + return str.length - offset >= 2 && str.charCodeAt(offset) === HYPHENMINUS && str.charCodeAt(offset + 1) === HYPHENMINUS; + } + function getVendorPrefix(str, offset) { + offset = offset || 0; + if (str.length - offset >= 3) { + if (str.charCodeAt(offset) === HYPHENMINUS && str.charCodeAt(offset + 1) !== HYPHENMINUS) { + var secondDashIndex = str.indexOf("-", offset + 2); + if (secondDashIndex !== -1) { + return str.substring(offset, secondDashIndex + 1); + } + } + } + return ""; + } + function getKeywordDescriptor(keyword) { + if (hasOwnProperty2.call(keywords, keyword)) { + return keywords[keyword]; + } + var name = keyword.toLowerCase(); + if (hasOwnProperty2.call(keywords, name)) { + return keywords[keyword] = keywords[name]; + } + var custom = isCustomProperty(name, 0); + var vendor = !custom ? getVendorPrefix(name, 0) : ""; + return keywords[keyword] = Object.freeze({ + basename: name.substr(vendor.length), + name, + vendor, + prefix: vendor, + custom + }); + } + function getPropertyDescriptor(property) { + if (hasOwnProperty2.call(properties, property)) { + return properties[property]; + } + var name = property; + var hack = property[0]; + if (hack === "/") { + hack = property[1] === "/" ? "//" : "/"; + } else if (hack !== "_" && hack !== "*" && hack !== "$" && hack !== "#" && hack !== "+" && hack !== "&") { + hack = ""; + } + var custom = isCustomProperty(name, hack.length); + if (!custom) { + name = name.toLowerCase(); + if (hasOwnProperty2.call(properties, name)) { + return properties[property] = properties[name]; + } + } + var vendor = !custom ? getVendorPrefix(name, hack.length) : ""; + var prefix = name.substr(0, hack.length + vendor.length); + return properties[property] = Object.freeze({ + basename: name.substr(prefix.length), + name: name.substr(hack.length), + hack, + vendor, + prefix, + custom + }); + } + module2.exports = { + keyword: getKeywordDescriptor, + property: getPropertyDescriptor, + isCustomProperty, + vendorPrefix: getVendorPrefix + }; + } +}); + +// node_modules/css-tree/lib/common/adopt-buffer.js +var require_adopt_buffer = __commonJS({ + "node_modules/css-tree/lib/common/adopt-buffer.js"(exports2, module2) { + var MIN_SIZE = 16 * 1024; + var SafeUint32Array = typeof Uint32Array !== "undefined" ? Uint32Array : Array; + module2.exports = function adoptBuffer(buffer, size) { + if (buffer === null || buffer.length < size) { + return new SafeUint32Array(Math.max(size + 1024, MIN_SIZE)); + } + return buffer; + }; + } +}); + +// node_modules/css-tree/lib/tokenizer/index.js +var require_tokenizer = __commonJS({ + "node_modules/css-tree/lib/tokenizer/index.js"(exports2, module2) { + var TokenStream = require_TokenStream(); + var adoptBuffer = require_adopt_buffer(); + var constants = require_const2(); + var TYPE = constants.TYPE; + var charCodeDefinitions = require_char_code_definitions(); + var isNewline = charCodeDefinitions.isNewline; + var isName = charCodeDefinitions.isName; + var isValidEscape = charCodeDefinitions.isValidEscape; + var isNumberStart = charCodeDefinitions.isNumberStart; + var isIdentifierStart = charCodeDefinitions.isIdentifierStart; + var charCodeCategory = charCodeDefinitions.charCodeCategory; + var isBOM = charCodeDefinitions.isBOM; + var utils = require_utils3(); + var cmpStr = utils.cmpStr; + var getNewlineLength = utils.getNewlineLength; + var findWhiteSpaceEnd = utils.findWhiteSpaceEnd; + var consumeEscaped = utils.consumeEscaped; + var consumeName = utils.consumeName; + var consumeNumber = utils.consumeNumber; + var consumeBadUrlRemnants = utils.consumeBadUrlRemnants; + var OFFSET_MASK = 16777215; + var TYPE_SHIFT = 24; + function tokenize(source, stream) { + function getCharCode(offset2) { + return offset2 < sourceLength ? source.charCodeAt(offset2) : 0; + } + function consumeNumericToken() { + offset = consumeNumber(source, offset); + if (isIdentifierStart(getCharCode(offset), getCharCode(offset + 1), getCharCode(offset + 2))) { + type = TYPE.Dimension; + offset = consumeName(source, offset); + return; + } + if (getCharCode(offset) === 37) { + type = TYPE.Percentage; + offset++; + return; + } + type = TYPE.Number; + } + function consumeIdentLikeToken() { + const nameStartOffset = offset; + offset = consumeName(source, offset); + if (cmpStr(source, nameStartOffset, offset, "url") && getCharCode(offset) === 40) { + offset = findWhiteSpaceEnd(source, offset + 1); + if (getCharCode(offset) === 34 || getCharCode(offset) === 39) { + type = TYPE.Function; + offset = nameStartOffset + 4; + return; + } + consumeUrlToken(); + return; + } + if (getCharCode(offset) === 40) { + type = TYPE.Function; + offset++; + return; + } + type = TYPE.Ident; + } + function consumeStringToken(endingCodePoint) { + if (!endingCodePoint) { + endingCodePoint = getCharCode(offset++); + } + type = TYPE.String; + for (; offset < source.length; offset++) { + var code2 = source.charCodeAt(offset); + switch (charCodeCategory(code2)) { + case endingCodePoint: + offset++; + return; + case charCodeCategory.Eof: + return; + case charCodeCategory.WhiteSpace: + if (isNewline(code2)) { + offset += getNewlineLength(source, offset, code2); + type = TYPE.BadString; + return; + } + break; + case 92: + if (offset === source.length - 1) { + break; + } + var nextCode = getCharCode(offset + 1); + if (isNewline(nextCode)) { + offset += getNewlineLength(source, offset + 1, nextCode); + } else if (isValidEscape(code2, nextCode)) { + offset = consumeEscaped(source, offset) - 1; + } + break; + } + } + } + function consumeUrlToken() { + type = TYPE.Url; + offset = findWhiteSpaceEnd(source, offset); + for (; offset < source.length; offset++) { + var code2 = source.charCodeAt(offset); + switch (charCodeCategory(code2)) { + case 41: + offset++; + return; + case charCodeCategory.Eof: + return; + case charCodeCategory.WhiteSpace: + offset = findWhiteSpaceEnd(source, offset); + if (getCharCode(offset) === 41 || offset >= source.length) { + if (offset < source.length) { + offset++; + } + return; + } + offset = consumeBadUrlRemnants(source, offset); + type = TYPE.BadUrl; + return; + case 34: + case 39: + case 40: + case charCodeCategory.NonPrintable: + offset = consumeBadUrlRemnants(source, offset); + type = TYPE.BadUrl; + return; + case 92: + if (isValidEscape(code2, getCharCode(offset + 1))) { + offset = consumeEscaped(source, offset) - 1; + break; + } + offset = consumeBadUrlRemnants(source, offset); + type = TYPE.BadUrl; + return; + } + } + } + if (!stream) { + stream = new TokenStream(); + } + source = String(source || ""); + var sourceLength = source.length; + var offsetAndType = adoptBuffer(stream.offsetAndType, sourceLength + 1); + var balance = adoptBuffer(stream.balance, sourceLength + 1); + var tokenCount = 0; + var start = isBOM(getCharCode(0)); + var offset = start; + var balanceCloseType = 0; + var balanceStart = 0; + var balancePrev = 0; + while (offset < sourceLength) { + var code = source.charCodeAt(offset); + var type = 0; + balance[tokenCount] = sourceLength; + switch (charCodeCategory(code)) { + case charCodeCategory.WhiteSpace: + type = TYPE.WhiteSpace; + offset = findWhiteSpaceEnd(source, offset + 1); + break; + case 34: + consumeStringToken(); + break; + case 35: + if (isName(getCharCode(offset + 1)) || isValidEscape(getCharCode(offset + 1), getCharCode(offset + 2))) { + type = TYPE.Hash; + offset = consumeName(source, offset + 1); + } else { + type = TYPE.Delim; + offset++; + } + break; + case 39: + consumeStringToken(); + break; + case 40: + type = TYPE.LeftParenthesis; + offset++; + break; + case 41: + type = TYPE.RightParenthesis; + offset++; + break; + case 43: + if (isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { + consumeNumericToken(); + } else { + type = TYPE.Delim; + offset++; + } + break; + case 44: + type = TYPE.Comma; + offset++; + break; + case 45: + if (isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { + consumeNumericToken(); + } else { + if (getCharCode(offset + 1) === 45 && getCharCode(offset + 2) === 62) { + type = TYPE.CDC; + offset = offset + 3; + } else { + if (isIdentifierStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { + consumeIdentLikeToken(); + } else { + type = TYPE.Delim; + offset++; + } + } + } + break; + case 46: + if (isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { + consumeNumericToken(); + } else { + type = TYPE.Delim; + offset++; + } + break; + case 47: + if (getCharCode(offset + 1) === 42) { + type = TYPE.Comment; + offset = source.indexOf("*/", offset + 2) + 2; + if (offset === 1) { + offset = source.length; + } + } else { + type = TYPE.Delim; + offset++; + } + break; + case 58: + type = TYPE.Colon; + offset++; + break; + case 59: + type = TYPE.Semicolon; + offset++; + break; + case 60: + if (getCharCode(offset + 1) === 33 && getCharCode(offset + 2) === 45 && getCharCode(offset + 3) === 45) { + type = TYPE.CDO; + offset = offset + 4; + } else { + type = TYPE.Delim; + offset++; + } + break; + case 64: + if (isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) { + type = TYPE.AtKeyword; + offset = consumeName(source, offset + 1); + } else { + type = TYPE.Delim; + offset++; + } + break; + case 91: + type = TYPE.LeftSquareBracket; + offset++; + break; + case 92: + if (isValidEscape(code, getCharCode(offset + 1))) { + consumeIdentLikeToken(); + } else { + type = TYPE.Delim; + offset++; + } + break; + case 93: + type = TYPE.RightSquareBracket; + offset++; + break; + case 123: + type = TYPE.LeftCurlyBracket; + offset++; + break; + case 125: + type = TYPE.RightCurlyBracket; + offset++; + break; + case charCodeCategory.Digit: + consumeNumericToken(); + break; + case charCodeCategory.NameStart: + consumeIdentLikeToken(); + break; + case charCodeCategory.Eof: + break; + default: + type = TYPE.Delim; + offset++; + } + switch (type) { + case balanceCloseType: + balancePrev = balanceStart & OFFSET_MASK; + balanceStart = balance[balancePrev]; + balanceCloseType = balanceStart >> TYPE_SHIFT; + balance[tokenCount] = balancePrev; + balance[balancePrev++] = tokenCount; + for (; balancePrev < tokenCount; balancePrev++) { + if (balance[balancePrev] === sourceLength) { + balance[balancePrev] = tokenCount; + } + } + break; + case TYPE.LeftParenthesis: + case TYPE.Function: + balance[tokenCount] = balanceStart; + balanceCloseType = TYPE.RightParenthesis; + balanceStart = balanceCloseType << TYPE_SHIFT | tokenCount; + break; + case TYPE.LeftSquareBracket: + balance[tokenCount] = balanceStart; + balanceCloseType = TYPE.RightSquareBracket; + balanceStart = balanceCloseType << TYPE_SHIFT | tokenCount; + break; + case TYPE.LeftCurlyBracket: + balance[tokenCount] = balanceStart; + balanceCloseType = TYPE.RightCurlyBracket; + balanceStart = balanceCloseType << TYPE_SHIFT | tokenCount; + break; + } + offsetAndType[tokenCount++] = type << TYPE_SHIFT | offset; + } + offsetAndType[tokenCount] = TYPE.EOF << TYPE_SHIFT | offset; + balance[tokenCount] = sourceLength; + balance[sourceLength] = sourceLength; + while (balanceStart !== 0) { + balancePrev = balanceStart & OFFSET_MASK; + balanceStart = balance[balancePrev]; + balance[balancePrev] = sourceLength; + } + stream.source = source; + stream.firstCharOffset = start; + stream.offsetAndType = offsetAndType; + stream.tokenCount = tokenCount; + stream.balance = balance; + stream.reset(); + stream.next(); + return stream; + } + Object.keys(constants).forEach(function(key) { + tokenize[key] = constants[key]; + }); + Object.keys(charCodeDefinitions).forEach(function(key) { + tokenize[key] = charCodeDefinitions[key]; + }); + Object.keys(utils).forEach(function(key) { + tokenize[key] = utils[key]; + }); + module2.exports = tokenize; + } +}); + +// node_modules/css-tree/lib/lexer/generic-an-plus-b.js +var require_generic_an_plus_b = __commonJS({ + "node_modules/css-tree/lib/lexer/generic-an-plus-b.js"(exports2, module2) { + var isDigit = require_tokenizer().isDigit; + var cmpChar = require_tokenizer().cmpChar; + var TYPE = require_tokenizer().TYPE; + var DELIM = TYPE.Delim; + var WHITESPACE = TYPE.WhiteSpace; + var COMMENT = TYPE.Comment; + var IDENT = TYPE.Ident; + var NUMBER = TYPE.Number; + var DIMENSION = TYPE.Dimension; + var PLUSSIGN = 43; + var HYPHENMINUS = 45; + var N = 110; + var DISALLOW_SIGN = true; + var ALLOW_SIGN = false; + function isDelim(token, code) { + return token !== null && token.type === DELIM && token.value.charCodeAt(0) === code; + } + function skipSC(token, offset, getNextToken) { + while (token !== null && (token.type === WHITESPACE || token.type === COMMENT)) { + token = getNextToken(++offset); + } + return offset; + } + function checkInteger(token, valueOffset, disallowSign, offset) { + if (!token) { + return 0; + } + var code = token.value.charCodeAt(valueOffset); + if (code === PLUSSIGN || code === HYPHENMINUS) { + if (disallowSign) { + return 0; + } + valueOffset++; + } + for (; valueOffset < token.value.length; valueOffset++) { + if (!isDigit(token.value.charCodeAt(valueOffset))) { + return 0; + } + } + return offset + 1; + } + function consumeB(token, offset_, getNextToken) { + var sign = false; + var offset = skipSC(token, offset_, getNextToken); + token = getNextToken(offset); + if (token === null) { + return offset_; + } + if (token.type !== NUMBER) { + if (isDelim(token, PLUSSIGN) || isDelim(token, HYPHENMINUS)) { + sign = true; + offset = skipSC(getNextToken(++offset), offset, getNextToken); + token = getNextToken(offset); + if (token === null && token.type !== NUMBER) { + return 0; + } + } else { + return offset_; + } + } + if (!sign) { + var code = token.value.charCodeAt(0); + if (code !== PLUSSIGN && code !== HYPHENMINUS) { + return 0; + } + } + return checkInteger(token, sign ? 0 : 1, sign, offset); + } + module2.exports = function anPlusB(token, getNextToken) { + var offset = 0; + if (!token) { + return 0; + } + if (token.type === NUMBER) { + return checkInteger(token, 0, ALLOW_SIGN, offset); + } else if (token.type === IDENT && token.value.charCodeAt(0) === HYPHENMINUS) { + if (!cmpChar(token.value, 1, N)) { + return 0; + } + switch (token.value.length) { + case 2: + return consumeB(getNextToken(++offset), offset, getNextToken); + case 3: + if (token.value.charCodeAt(2) !== HYPHENMINUS) { + return 0; + } + offset = skipSC(getNextToken(++offset), offset, getNextToken); + token = getNextToken(offset); + return checkInteger(token, 0, DISALLOW_SIGN, offset); + default: + if (token.value.charCodeAt(2) !== HYPHENMINUS) { + return 0; + } + return checkInteger(token, 3, DISALLOW_SIGN, offset); + } + } else if (token.type === IDENT || isDelim(token, PLUSSIGN) && getNextToken(offset + 1).type === IDENT) { + if (token.type !== IDENT) { + token = getNextToken(++offset); + } + if (token === null || !cmpChar(token.value, 0, N)) { + return 0; + } + switch (token.value.length) { + case 1: + return consumeB(getNextToken(++offset), offset, getNextToken); + case 2: + if (token.value.charCodeAt(1) !== HYPHENMINUS) { + return 0; + } + offset = skipSC(getNextToken(++offset), offset, getNextToken); + token = getNextToken(offset); + return checkInteger(token, 0, DISALLOW_SIGN, offset); + default: + if (token.value.charCodeAt(1) !== HYPHENMINUS) { + return 0; + } + return checkInteger(token, 2, DISALLOW_SIGN, offset); + } + } else if (token.type === DIMENSION) { + var code = token.value.charCodeAt(0); + var sign = code === PLUSSIGN || code === HYPHENMINUS ? 1 : 0; + for (var i = sign; i < token.value.length; i++) { + if (!isDigit(token.value.charCodeAt(i))) { + break; + } + } + if (i === sign) { + return 0; + } + if (!cmpChar(token.value, i, N)) { + return 0; + } + if (i + 1 === token.value.length) { + return consumeB(getNextToken(++offset), offset, getNextToken); + } else { + if (token.value.charCodeAt(i + 1) !== HYPHENMINUS) { + return 0; + } + if (i + 2 === token.value.length) { + offset = skipSC(getNextToken(++offset), offset, getNextToken); + token = getNextToken(offset); + return checkInteger(token, 0, DISALLOW_SIGN, offset); + } else { + return checkInteger(token, i + 2, DISALLOW_SIGN, offset); + } + } + } + return 0; + }; + } +}); + +// node_modules/css-tree/lib/lexer/generic-urange.js +var require_generic_urange = __commonJS({ + "node_modules/css-tree/lib/lexer/generic-urange.js"(exports2, module2) { + var isHexDigit = require_tokenizer().isHexDigit; + var cmpChar = require_tokenizer().cmpChar; + var TYPE = require_tokenizer().TYPE; + var IDENT = TYPE.Ident; + var DELIM = TYPE.Delim; + var NUMBER = TYPE.Number; + var DIMENSION = TYPE.Dimension; + var PLUSSIGN = 43; + var HYPHENMINUS = 45; + var QUESTIONMARK = 63; + var U = 117; + function isDelim(token, code) { + return token !== null && token.type === DELIM && token.value.charCodeAt(0) === code; + } + function startsWith(token, code) { + return token.value.charCodeAt(0) === code; + } + function hexSequence(token, offset, allowDash) { + for (var pos = offset, hexlen = 0; pos < token.value.length; pos++) { + var code = token.value.charCodeAt(pos); + if (code === HYPHENMINUS && allowDash && hexlen !== 0) { + if (hexSequence(token, offset + hexlen + 1, false) > 0) { + return 6; + } + return 0; + } + if (!isHexDigit(code)) { + return 0; + } + if (++hexlen > 6) { + return 0; + } + ; + } + return hexlen; + } + function withQuestionMarkSequence(consumed, length, getNextToken) { + if (!consumed) { + return 0; + } + while (isDelim(getNextToken(length), QUESTIONMARK)) { + if (++consumed > 6) { + return 0; + } + length++; + } + return length; + } + module2.exports = function urange(token, getNextToken) { + var length = 0; + if (token === null || token.type !== IDENT || !cmpChar(token.value, 0, U)) { + return 0; + } + token = getNextToken(++length); + if (token === null) { + return 0; + } + if (isDelim(token, PLUSSIGN)) { + token = getNextToken(++length); + if (token === null) { + return 0; + } + if (token.type === IDENT) { + return withQuestionMarkSequence(hexSequence(token, 0, true), ++length, getNextToken); + } + if (isDelim(token, QUESTIONMARK)) { + return withQuestionMarkSequence(1, ++length, getNextToken); + } + return 0; + } + if (token.type === NUMBER) { + if (!startsWith(token, PLUSSIGN)) { + return 0; + } + var consumedHexLength = hexSequence(token, 1, true); + if (consumedHexLength === 0) { + return 0; + } + token = getNextToken(++length); + if (token === null) { + return length; + } + if (token.type === DIMENSION || token.type === NUMBER) { + if (!startsWith(token, HYPHENMINUS) || !hexSequence(token, 1, false)) { + return 0; + } + return length + 1; + } + return withQuestionMarkSequence(consumedHexLength, length, getNextToken); + } + if (token.type === DIMENSION) { + if (!startsWith(token, PLUSSIGN)) { + return 0; + } + return withQuestionMarkSequence(hexSequence(token, 1, true), ++length, getNextToken); + } + return 0; + }; + } +}); + +// node_modules/css-tree/lib/lexer/generic.js +var require_generic = __commonJS({ + "node_modules/css-tree/lib/lexer/generic.js"(exports2, module2) { + var tokenizer = require_tokenizer(); + var isIdentifierStart = tokenizer.isIdentifierStart; + var isHexDigit = tokenizer.isHexDigit; + var isDigit = tokenizer.isDigit; + var cmpStr = tokenizer.cmpStr; + var consumeNumber = tokenizer.consumeNumber; + var TYPE = tokenizer.TYPE; + var anPlusB = require_generic_an_plus_b(); + var urange = require_generic_urange(); + var cssWideKeywords = ["unset", "initial", "inherit"]; + var calcFunctionNames = ["calc(", "-moz-calc(", "-webkit-calc("]; + var LENGTH = { + "px": true, + "mm": true, + "cm": true, + "in": true, + "pt": true, + "pc": true, + "q": true, + "em": true, + "ex": true, + "ch": true, + "rem": true, + "vh": true, + "vw": true, + "vmin": true, + "vmax": true, + "vm": true + }; + var ANGLE = { + "deg": true, + "grad": true, + "rad": true, + "turn": true + }; + var TIME = { + "s": true, + "ms": true + }; + var FREQUENCY = { + "hz": true, + "khz": true + }; + var RESOLUTION = { + "dpi": true, + "dpcm": true, + "dppx": true, + "x": true + }; + var FLEX = { + "fr": true + }; + var DECIBEL = { + "db": true + }; + var SEMITONES = { + "st": true + }; + function charCode(str, index) { + return index < str.length ? str.charCodeAt(index) : 0; + } + function eqStr(actual, expected) { + return cmpStr(actual, 0, actual.length, expected); + } + function eqStrAny(actual, expected) { + for (var i = 0; i < expected.length; i++) { + if (eqStr(actual, expected[i])) { + return true; + } + } + return false; + } + function isPostfixIeHack(str, offset) { + if (offset !== str.length - 2) { + return false; + } + return str.charCodeAt(offset) === 92 && isDigit(str.charCodeAt(offset + 1)); + } + function outOfRange(opts, value, numEnd) { + if (opts && opts.type === "Range") { + var num = Number( + numEnd !== void 0 && numEnd !== value.length ? value.substr(0, numEnd) : value + ); + if (isNaN(num)) { + return true; + } + if (opts.min !== null && num < opts.min) { + return true; + } + if (opts.max !== null && num > opts.max) { + return true; + } + } + return false; + } + function consumeFunction(token, getNextToken) { + var startIdx = token.index; + var length = 0; + do { + length++; + if (token.balance <= startIdx) { + break; + } + } while (token = getNextToken(length)); + return length; + } + function calc(next) { + return function(token, getNextToken, opts) { + if (token === null) { + return 0; + } + if (token.type === TYPE.Function && eqStrAny(token.value, calcFunctionNames)) { + return consumeFunction(token, getNextToken); + } + return next(token, getNextToken, opts); + }; + } + function tokenType(expectedTokenType) { + return function(token) { + if (token === null || token.type !== expectedTokenType) { + return 0; + } + return 1; + }; + } + function func(name) { + name = name + "("; + return function(token, getNextToken) { + if (token !== null && eqStr(token.value, name)) { + return consumeFunction(token, getNextToken); + } + return 0; + }; + } + function customIdent(token) { + if (token === null || token.type !== TYPE.Ident) { + return 0; + } + var name = token.value.toLowerCase(); + if (eqStrAny(name, cssWideKeywords)) { + return 0; + } + if (eqStr(name, "default")) { + return 0; + } + return 1; + } + function customPropertyName(token) { + if (token === null || token.type !== TYPE.Ident) { + return 0; + } + if (charCode(token.value, 0) !== 45 || charCode(token.value, 1) !== 45) { + return 0; + } + return 1; + } + function hexColor(token) { + if (token === null || token.type !== TYPE.Hash) { + return 0; + } + var length = token.value.length; + if (length !== 4 && length !== 5 && length !== 7 && length !== 9) { + return 0; + } + for (var i = 1; i < length; i++) { + if (!isHexDigit(token.value.charCodeAt(i))) { + return 0; + } + } + return 1; + } + function idSelector(token) { + if (token === null || token.type !== TYPE.Hash) { + return 0; + } + if (!isIdentifierStart(charCode(token.value, 1), charCode(token.value, 2), charCode(token.value, 3))) { + return 0; + } + return 1; + } + function declarationValue(token, getNextToken) { + if (!token) { + return 0; + } + var length = 0; + var level = 0; + var startIdx = token.index; + scan: + do { + switch (token.type) { + case TYPE.BadString: + case TYPE.BadUrl: + break scan; + case TYPE.RightCurlyBracket: + case TYPE.RightParenthesis: + case TYPE.RightSquareBracket: + if (token.balance > token.index || token.balance < startIdx) { + break scan; + } + level--; + break; + case TYPE.Semicolon: + if (level === 0) { + break scan; + } + break; + case TYPE.Delim: + if (token.value === "!" && level === 0) { + break scan; + } + break; + case TYPE.Function: + case TYPE.LeftParenthesis: + case TYPE.LeftSquareBracket: + case TYPE.LeftCurlyBracket: + level++; + break; + } + length++; + if (token.balance <= startIdx) { + break; + } + } while (token = getNextToken(length)); + return length; + } + function anyValue(token, getNextToken) { + if (!token) { + return 0; + } + var startIdx = token.index; + var length = 0; + scan: + do { + switch (token.type) { + case TYPE.BadString: + case TYPE.BadUrl: + break scan; + case TYPE.RightCurlyBracket: + case TYPE.RightParenthesis: + case TYPE.RightSquareBracket: + if (token.balance > token.index || token.balance < startIdx) { + break scan; + } + break; + } + length++; + if (token.balance <= startIdx) { + break; + } + } while (token = getNextToken(length)); + return length; + } + function dimension(type) { + return function(token, getNextToken, opts) { + if (token === null || token.type !== TYPE.Dimension) { + return 0; + } + var numberEnd = consumeNumber(token.value, 0); + if (type !== null) { + var reverseSolidusOffset = token.value.indexOf("\\", numberEnd); + var unit = reverseSolidusOffset === -1 || !isPostfixIeHack(token.value, reverseSolidusOffset) ? token.value.substr(numberEnd) : token.value.substring(numberEnd, reverseSolidusOffset); + if (type.hasOwnProperty(unit.toLowerCase()) === false) { + return 0; + } + } + if (outOfRange(opts, token.value, numberEnd)) { + return 0; + } + return 1; + }; + } + function percentage(token, getNextToken, opts) { + if (token === null || token.type !== TYPE.Percentage) { + return 0; + } + if (outOfRange(opts, token.value, token.value.length - 1)) { + return 0; + } + return 1; + } + function zero(next) { + if (typeof next !== "function") { + next = function() { + return 0; + }; + } + return function(token, getNextToken, opts) { + if (token !== null && token.type === TYPE.Number) { + if (Number(token.value) === 0) { + return 1; + } + } + return next(token, getNextToken, opts); + }; + } + function number(token, getNextToken, opts) { + if (token === null) { + return 0; + } + var numberEnd = consumeNumber(token.value, 0); + var isNumber = numberEnd === token.value.length; + if (!isNumber && !isPostfixIeHack(token.value, numberEnd)) { + return 0; + } + if (outOfRange(opts, token.value, numberEnd)) { + return 0; + } + return 1; + } + function integer(token, getNextToken, opts) { + if (token === null || token.type !== TYPE.Number) { + return 0; + } + var i = token.value.charCodeAt(0) === 43 || token.value.charCodeAt(0) === 45 ? 1 : 0; + for (; i < token.value.length; i++) { + if (!isDigit(token.value.charCodeAt(i))) { + return 0; + } + } + if (outOfRange(opts, token.value, i)) { + return 0; + } + return 1; + } + module2.exports = { + "ident-token": tokenType(TYPE.Ident), + "function-token": tokenType(TYPE.Function), + "at-keyword-token": tokenType(TYPE.AtKeyword), + "hash-token": tokenType(TYPE.Hash), + "string-token": tokenType(TYPE.String), + "bad-string-token": tokenType(TYPE.BadString), + "url-token": tokenType(TYPE.Url), + "bad-url-token": tokenType(TYPE.BadUrl), + "delim-token": tokenType(TYPE.Delim), + "number-token": tokenType(TYPE.Number), + "percentage-token": tokenType(TYPE.Percentage), + "dimension-token": tokenType(TYPE.Dimension), + "whitespace-token": tokenType(TYPE.WhiteSpace), + "CDO-token": tokenType(TYPE.CDO), + "CDC-token": tokenType(TYPE.CDC), + "colon-token": tokenType(TYPE.Colon), + "semicolon-token": tokenType(TYPE.Semicolon), + "comma-token": tokenType(TYPE.Comma), + "[-token": tokenType(TYPE.LeftSquareBracket), + "]-token": tokenType(TYPE.RightSquareBracket), + "(-token": tokenType(TYPE.LeftParenthesis), + ")-token": tokenType(TYPE.RightParenthesis), + "{-token": tokenType(TYPE.LeftCurlyBracket), + "}-token": tokenType(TYPE.RightCurlyBracket), + "string": tokenType(TYPE.String), + "ident": tokenType(TYPE.Ident), + "custom-ident": customIdent, + "custom-property-name": customPropertyName, + "hex-color": hexColor, + "id-selector": idSelector, + "an-plus-b": anPlusB, + "urange": urange, + "declaration-value": declarationValue, + "any-value": anyValue, + "dimension": calc(dimension(null)), + "angle": calc(dimension(ANGLE)), + "decibel": calc(dimension(DECIBEL)), + "frequency": calc(dimension(FREQUENCY)), + "flex": calc(dimension(FLEX)), + "length": calc(zero(dimension(LENGTH))), + "resolution": calc(dimension(RESOLUTION)), + "semitones": calc(dimension(SEMITONES)), + "time": calc(dimension(TIME)), + "percentage": calc(percentage), + "zero": zero(), + "number": calc(number), + "integer": calc(integer), + "-ms-legacy-expression": func("expression") + }; + } +}); + +// node_modules/css-tree/lib/definition-syntax/SyntaxError.js +var require_SyntaxError2 = __commonJS({ + "node_modules/css-tree/lib/definition-syntax/SyntaxError.js"(exports2, module2) { + var createCustomError = require_createCustomError(); + module2.exports = function SyntaxError2(message, input, offset) { + var error = createCustomError("SyntaxError", message); + error.input = input; + error.offset = offset; + error.rawMessage = message; + error.message = error.rawMessage + "\n " + error.input + "\n--" + new Array((error.offset || error.input.length) + 1).join("-") + "^"; + return error; + }; + } +}); + +// node_modules/css-tree/lib/definition-syntax/tokenizer.js +var require_tokenizer2 = __commonJS({ + "node_modules/css-tree/lib/definition-syntax/tokenizer.js"(exports2, module2) { + var SyntaxError2 = require_SyntaxError2(); + var TAB = 9; + var N = 10; + var F = 12; + var R = 13; + var SPACE = 32; + var Tokenizer = function(str) { + this.str = str; + this.pos = 0; + }; + Tokenizer.prototype = { + charCodeAt: function(pos) { + return pos < this.str.length ? this.str.charCodeAt(pos) : 0; + }, + charCode: function() { + return this.charCodeAt(this.pos); + }, + nextCharCode: function() { + return this.charCodeAt(this.pos + 1); + }, + nextNonWsCode: function(pos) { + return this.charCodeAt(this.findWsEnd(pos)); + }, + findWsEnd: function(pos) { + for (; pos < this.str.length; pos++) { + var code = this.str.charCodeAt(pos); + if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) { + break; + } + } + return pos; + }, + substringToPos: function(end) { + return this.str.substring(this.pos, this.pos = end); + }, + eat: function(code) { + if (this.charCode() !== code) { + this.error("Expect `" + String.fromCharCode(code) + "`"); + } + this.pos++; + }, + peek: function() { + return this.pos < this.str.length ? this.str.charAt(this.pos++) : ""; + }, + error: function(message) { + throw new SyntaxError2(message, this.str, this.pos); + } + }; + module2.exports = Tokenizer; + } +}); + +// node_modules/css-tree/lib/definition-syntax/parse.js +var require_parse6 = __commonJS({ + "node_modules/css-tree/lib/definition-syntax/parse.js"(exports2, module2) { + var Tokenizer = require_tokenizer2(); + var TAB = 9; + var N = 10; + var F = 12; + var R = 13; + var SPACE = 32; + var EXCLAMATIONMARK = 33; + var NUMBERSIGN = 35; + var AMPERSAND = 38; + var APOSTROPHE = 39; + var LEFTPARENTHESIS = 40; + var RIGHTPARENTHESIS = 41; + var ASTERISK = 42; + var PLUSSIGN = 43; + var COMMA = 44; + var HYPERMINUS = 45; + var LESSTHANSIGN = 60; + var GREATERTHANSIGN = 62; + var QUESTIONMARK = 63; + var COMMERCIALAT = 64; + var LEFTSQUAREBRACKET = 91; + var RIGHTSQUAREBRACKET = 93; + var LEFTCURLYBRACKET = 123; + var VERTICALLINE = 124; + var RIGHTCURLYBRACKET = 125; + var INFINITY = 8734; + var NAME_CHAR = createCharMap(function(ch) { + return /[a-zA-Z0-9\-]/.test(ch); + }); + var COMBINATOR_PRECEDENCE = { + " ": 1, + "&&": 2, + "||": 3, + "|": 4 + }; + function createCharMap(fn) { + var array = typeof Uint32Array === "function" ? new Uint32Array(128) : new Array(128); + for (var i = 0; i < 128; i++) { + array[i] = fn(String.fromCharCode(i)) ? 1 : 0; + } + return array; + } + function scanSpaces(tokenizer) { + return tokenizer.substringToPos( + tokenizer.findWsEnd(tokenizer.pos) + ); + } + function scanWord(tokenizer) { + var end = tokenizer.pos; + for (; end < tokenizer.str.length; end++) { + var code = tokenizer.str.charCodeAt(end); + if (code >= 128 || NAME_CHAR[code] === 0) { + break; + } + } + if (tokenizer.pos === end) { + tokenizer.error("Expect a keyword"); + } + return tokenizer.substringToPos(end); + } + function scanNumber(tokenizer) { + var end = tokenizer.pos; + for (; end < tokenizer.str.length; end++) { + var code = tokenizer.str.charCodeAt(end); + if (code < 48 || code > 57) { + break; + } + } + if (tokenizer.pos === end) { + tokenizer.error("Expect a number"); + } + return tokenizer.substringToPos(end); + } + function scanString(tokenizer) { + var end = tokenizer.str.indexOf("'", tokenizer.pos + 1); + if (end === -1) { + tokenizer.pos = tokenizer.str.length; + tokenizer.error("Expect an apostrophe"); + } + return tokenizer.substringToPos(end + 1); + } + function readMultiplierRange(tokenizer) { + var min = null; + var max = null; + tokenizer.eat(LEFTCURLYBRACKET); + min = scanNumber(tokenizer); + if (tokenizer.charCode() === COMMA) { + tokenizer.pos++; + if (tokenizer.charCode() !== RIGHTCURLYBRACKET) { + max = scanNumber(tokenizer); + } + } else { + max = min; + } + tokenizer.eat(RIGHTCURLYBRACKET); + return { + min: Number(min), + max: max ? Number(max) : 0 + }; + } + function readMultiplier(tokenizer) { + var range = null; + var comma = false; + switch (tokenizer.charCode()) { + case ASTERISK: + tokenizer.pos++; + range = { + min: 0, + max: 0 + }; + break; + case PLUSSIGN: + tokenizer.pos++; + range = { + min: 1, + max: 0 + }; + break; + case QUESTIONMARK: + tokenizer.pos++; + range = { + min: 0, + max: 1 + }; + break; + case NUMBERSIGN: + tokenizer.pos++; + comma = true; + if (tokenizer.charCode() === LEFTCURLYBRACKET) { + range = readMultiplierRange(tokenizer); + } else { + range = { + min: 1, + max: 0 + }; + } + break; + case LEFTCURLYBRACKET: + range = readMultiplierRange(tokenizer); + break; + default: + return null; + } + return { + type: "Multiplier", + comma, + min: range.min, + max: range.max, + term: null + }; + } + function maybeMultiplied(tokenizer, node) { + var multiplier = readMultiplier(tokenizer); + if (multiplier !== null) { + multiplier.term = node; + return multiplier; + } + return node; + } + function maybeToken(tokenizer) { + var ch = tokenizer.peek(); + if (ch === "") { + return null; + } + return { + type: "Token", + value: ch + }; + } + function readProperty(tokenizer) { + var name; + tokenizer.eat(LESSTHANSIGN); + tokenizer.eat(APOSTROPHE); + name = scanWord(tokenizer); + tokenizer.eat(APOSTROPHE); + tokenizer.eat(GREATERTHANSIGN); + return maybeMultiplied(tokenizer, { + type: "Property", + name + }); + } + function readTypeRange(tokenizer) { + var min = null; + var max = null; + var sign = 1; + tokenizer.eat(LEFTSQUAREBRACKET); + if (tokenizer.charCode() === HYPERMINUS) { + tokenizer.peek(); + sign = -1; + } + if (sign == -1 && tokenizer.charCode() === INFINITY) { + tokenizer.peek(); + } else { + min = sign * Number(scanNumber(tokenizer)); + } + scanSpaces(tokenizer); + tokenizer.eat(COMMA); + scanSpaces(tokenizer); + if (tokenizer.charCode() === INFINITY) { + tokenizer.peek(); + } else { + sign = 1; + if (tokenizer.charCode() === HYPERMINUS) { + tokenizer.peek(); + sign = -1; + } + max = sign * Number(scanNumber(tokenizer)); + } + tokenizer.eat(RIGHTSQUAREBRACKET); + if (min === null && max === null) { + return null; + } + return { + type: "Range", + min, + max + }; + } + function readType(tokenizer) { + var name; + var opts = null; + tokenizer.eat(LESSTHANSIGN); + name = scanWord(tokenizer); + if (tokenizer.charCode() === LEFTPARENTHESIS && tokenizer.nextCharCode() === RIGHTPARENTHESIS) { + tokenizer.pos += 2; + name += "()"; + } + if (tokenizer.charCodeAt(tokenizer.findWsEnd(tokenizer.pos)) === LEFTSQUAREBRACKET) { + scanSpaces(tokenizer); + opts = readTypeRange(tokenizer); + } + tokenizer.eat(GREATERTHANSIGN); + return maybeMultiplied(tokenizer, { + type: "Type", + name, + opts + }); + } + function readKeywordOrFunction(tokenizer) { + var name; + name = scanWord(tokenizer); + if (tokenizer.charCode() === LEFTPARENTHESIS) { + tokenizer.pos++; + return { + type: "Function", + name + }; + } + return maybeMultiplied(tokenizer, { + type: "Keyword", + name + }); + } + function regroupTerms(terms, combinators) { + function createGroup(terms2, combinator2) { + return { + type: "Group", + terms: terms2, + combinator: combinator2, + disallowEmpty: false, + explicit: false + }; + } + combinators = Object.keys(combinators).sort(function(a, b) { + return COMBINATOR_PRECEDENCE[a] - COMBINATOR_PRECEDENCE[b]; + }); + while (combinators.length > 0) { + var combinator = combinators.shift(); + for (var i = 0, subgroupStart = 0; i < terms.length; i++) { + var term = terms[i]; + if (term.type === "Combinator") { + if (term.value === combinator) { + if (subgroupStart === -1) { + subgroupStart = i - 1; + } + terms.splice(i, 1); + i--; + } else { + if (subgroupStart !== -1 && i - subgroupStart > 1) { + terms.splice( + subgroupStart, + i - subgroupStart, + createGroup(terms.slice(subgroupStart, i), combinator) + ); + i = subgroupStart + 1; + } + subgroupStart = -1; + } + } + } + if (subgroupStart !== -1 && combinators.length) { + terms.splice( + subgroupStart, + i - subgroupStart, + createGroup(terms.slice(subgroupStart, i), combinator) + ); + } + } + return combinator; + } + function readImplicitGroup(tokenizer) { + var terms = []; + var combinators = {}; + var token; + var prevToken = null; + var prevTokenPos = tokenizer.pos; + while (token = peek(tokenizer)) { + if (token.type !== "Spaces") { + if (token.type === "Combinator") { + if (prevToken === null || prevToken.type === "Combinator") { + tokenizer.pos = prevTokenPos; + tokenizer.error("Unexpected combinator"); + } + combinators[token.value] = true; + } else if (prevToken !== null && prevToken.type !== "Combinator") { + combinators[" "] = true; + terms.push({ + type: "Combinator", + value: " " + }); + } + terms.push(token); + prevToken = token; + prevTokenPos = tokenizer.pos; + } + } + if (prevToken !== null && prevToken.type === "Combinator") { + tokenizer.pos -= prevTokenPos; + tokenizer.error("Unexpected combinator"); + } + return { + type: "Group", + terms, + combinator: regroupTerms(terms, combinators) || " ", + disallowEmpty: false, + explicit: false + }; + } + function readGroup(tokenizer) { + var result; + tokenizer.eat(LEFTSQUAREBRACKET); + result = readImplicitGroup(tokenizer); + tokenizer.eat(RIGHTSQUAREBRACKET); + result.explicit = true; + if (tokenizer.charCode() === EXCLAMATIONMARK) { + tokenizer.pos++; + result.disallowEmpty = true; + } + return result; + } + function peek(tokenizer) { + var code = tokenizer.charCode(); + if (code < 128 && NAME_CHAR[code] === 1) { + return readKeywordOrFunction(tokenizer); + } + switch (code) { + case RIGHTSQUAREBRACKET: + break; + case LEFTSQUAREBRACKET: + return maybeMultiplied(tokenizer, readGroup(tokenizer)); + case LESSTHANSIGN: + return tokenizer.nextCharCode() === APOSTROPHE ? readProperty(tokenizer) : readType(tokenizer); + case VERTICALLINE: + return { + type: "Combinator", + value: tokenizer.substringToPos( + tokenizer.nextCharCode() === VERTICALLINE ? tokenizer.pos + 2 : tokenizer.pos + 1 + ) + }; + case AMPERSAND: + tokenizer.pos++; + tokenizer.eat(AMPERSAND); + return { + type: "Combinator", + value: "&&" + }; + case COMMA: + tokenizer.pos++; + return { + type: "Comma" + }; + case APOSTROPHE: + return maybeMultiplied(tokenizer, { + type: "String", + value: scanString(tokenizer) + }); + case SPACE: + case TAB: + case N: + case R: + case F: + return { + type: "Spaces", + value: scanSpaces(tokenizer) + }; + case COMMERCIALAT: + code = tokenizer.nextCharCode(); + if (code < 128 && NAME_CHAR[code] === 1) { + tokenizer.pos++; + return { + type: "AtKeyword", + name: scanWord(tokenizer) + }; + } + return maybeToken(tokenizer); + case ASTERISK: + case PLUSSIGN: + case QUESTIONMARK: + case NUMBERSIGN: + case EXCLAMATIONMARK: + break; + case LEFTCURLYBRACKET: + code = tokenizer.nextCharCode(); + if (code < 48 || code > 57) { + return maybeToken(tokenizer); + } + break; + default: + return maybeToken(tokenizer); + } + } + function parse(source) { + var tokenizer = new Tokenizer(source); + var result = readImplicitGroup(tokenizer); + if (tokenizer.pos !== source.length) { + tokenizer.error("Unexpected input"); + } + if (result.terms.length === 1 && result.terms[0].type === "Group") { + result = result.terms[0]; + } + return result; + } + parse("[a&&#|<'c'>*||e() f{2} /,(% g#{1,2} h{2,})]!"); + module2.exports = parse; + } +}); + +// node_modules/css-tree/lib/definition-syntax/walk.js +var require_walk2 = __commonJS({ + "node_modules/css-tree/lib/definition-syntax/walk.js"(exports2, module2) { + var noop = function() { + }; + function ensureFunction(value) { + return typeof value === "function" ? value : noop; + } + module2.exports = function(node, options, context) { + function walk(node2) { + enter.call(context, node2); + switch (node2.type) { + case "Group": + node2.terms.forEach(walk); + break; + case "Multiplier": + walk(node2.term); + break; + case "Type": + case "Property": + case "Keyword": + case "AtKeyword": + case "Function": + case "String": + case "Token": + case "Comma": + break; + default: + throw new Error("Unknown type: " + node2.type); + } + leave.call(context, node2); + } + var enter = noop; + var leave = noop; + if (typeof options === "function") { + enter = options; + } else if (options) { + enter = ensureFunction(options.enter); + leave = ensureFunction(options.leave); + } + if (enter === noop && leave === noop) { + throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function"); + } + walk(node, context); + }; + } +}); + +// node_modules/css-tree/lib/lexer/prepare-tokens.js +var require_prepare_tokens = __commonJS({ + "node_modules/css-tree/lib/lexer/prepare-tokens.js"(exports2, module2) { + var tokenize = require_tokenizer(); + var TokenStream = require_TokenStream(); + var tokenStream = new TokenStream(); + var astToTokens = { + decorator: function(handlers) { + var curNode = null; + var prev = { len: 0, node: null }; + var nodes = [prev]; + var buffer = ""; + return { + children: handlers.children, + node: function(node) { + var tmp = curNode; + curNode = node; + handlers.node.call(this, node); + curNode = tmp; + }, + chunk: function(chunk) { + buffer += chunk; + if (prev.node !== curNode) { + nodes.push({ + len: chunk.length, + node: curNode + }); + } else { + prev.len += chunk.length; + } + }, + result: function() { + return prepareTokens(buffer, nodes); + } + }; + } + }; + function prepareTokens(str, nodes) { + var tokens = []; + var nodesOffset = 0; + var nodesIndex = 0; + var currentNode = nodes ? nodes[nodesIndex].node : null; + tokenize(str, tokenStream); + while (!tokenStream.eof) { + if (nodes) { + while (nodesIndex < nodes.length && nodesOffset + nodes[nodesIndex].len <= tokenStream.tokenStart) { + nodesOffset += nodes[nodesIndex++].len; + currentNode = nodes[nodesIndex].node; + } + } + tokens.push({ + type: tokenStream.tokenType, + value: tokenStream.getTokenValue(), + index: tokenStream.tokenIndex, + balance: tokenStream.balance[tokenStream.tokenIndex], + node: currentNode + }); + tokenStream.next(); + } + return tokens; + } + module2.exports = function(value, syntax) { + if (typeof value === "string") { + return prepareTokens(value, null); + } + return syntax.generate(value, astToTokens); + }; + } +}); + +// node_modules/css-tree/lib/lexer/match-graph.js +var require_match_graph = __commonJS({ + "node_modules/css-tree/lib/lexer/match-graph.js"(exports2, module2) { + var parse = require_parse6(); + var MATCH = { type: "Match" }; + var MISMATCH = { type: "Mismatch" }; + var DISALLOW_EMPTY = { type: "DisallowEmpty" }; + var LEFTPARENTHESIS = 40; + var RIGHTPARENTHESIS = 41; + function createCondition(match, thenBranch, elseBranch) { + if (thenBranch === MATCH && elseBranch === MISMATCH) { + return match; + } + if (match === MATCH && thenBranch === MATCH && elseBranch === MATCH) { + return match; + } + if (match.type === "If" && match.else === MISMATCH && thenBranch === MATCH) { + thenBranch = match.then; + match = match.match; + } + return { + type: "If", + match, + then: thenBranch, + else: elseBranch + }; + } + function isFunctionType(name) { + return name.length > 2 && name.charCodeAt(name.length - 2) === LEFTPARENTHESIS && name.charCodeAt(name.length - 1) === RIGHTPARENTHESIS; + } + function isEnumCapatible(term) { + return term.type === "Keyword" || term.type === "AtKeyword" || term.type === "Function" || term.type === "Type" && isFunctionType(term.name); + } + function buildGroupMatchGraph(combinator, terms, atLeastOneTermMatched) { + switch (combinator) { + case " ": + var result = MATCH; + for (var i = terms.length - 1; i >= 0; i--) { + var term = terms[i]; + result = createCondition( + term, + result, + MISMATCH + ); + } + ; + return result; + case "|": + var result = MISMATCH; + var map = null; + for (var i = terms.length - 1; i >= 0; i--) { + var term = terms[i]; + if (isEnumCapatible(term)) { + if (map === null && i > 0 && isEnumCapatible(terms[i - 1])) { + map = /* @__PURE__ */ Object.create(null); + result = createCondition( + { + type: "Enum", + map + }, + MATCH, + result + ); + } + if (map !== null) { + var key = (isFunctionType(term.name) ? term.name.slice(0, -1) : term.name).toLowerCase(); + if (key in map === false) { + map[key] = term; + continue; + } + } + } + map = null; + result = createCondition( + term, + MATCH, + result + ); + } + ; + return result; + case "&&": + if (terms.length > 5) { + return { + type: "MatchOnce", + terms, + all: true + }; + } + var result = MISMATCH; + for (var i = terms.length - 1; i >= 0; i--) { + var term = terms[i]; + var thenClause; + if (terms.length > 1) { + thenClause = buildGroupMatchGraph( + combinator, + terms.filter(function(newGroupTerm) { + return newGroupTerm !== term; + }), + false + ); + } else { + thenClause = MATCH; + } + result = createCondition( + term, + thenClause, + result + ); + } + ; + return result; + case "||": + if (terms.length > 5) { + return { + type: "MatchOnce", + terms, + all: false + }; + } + var result = atLeastOneTermMatched ? MATCH : MISMATCH; + for (var i = terms.length - 1; i >= 0; i--) { + var term = terms[i]; + var thenClause; + if (terms.length > 1) { + thenClause = buildGroupMatchGraph( + combinator, + terms.filter(function(newGroupTerm) { + return newGroupTerm !== term; + }), + true + ); + } else { + thenClause = MATCH; + } + result = createCondition( + term, + thenClause, + result + ); + } + ; + return result; + } + } + function buildMultiplierMatchGraph(node) { + var result = MATCH; + var matchTerm = buildMatchGraph(node.term); + if (node.max === 0) { + matchTerm = createCondition( + matchTerm, + DISALLOW_EMPTY, + MISMATCH + ); + result = createCondition( + matchTerm, + null, + MISMATCH + ); + result.then = createCondition( + MATCH, + MATCH, + result + ); + if (node.comma) { + result.then.else = createCondition( + { type: "Comma", syntax: node }, + result, + MISMATCH + ); + } + } else { + for (var i = node.min || 1; i <= node.max; i++) { + if (node.comma && result !== MATCH) { + result = createCondition( + { type: "Comma", syntax: node }, + result, + MISMATCH + ); + } + result = createCondition( + matchTerm, + createCondition( + MATCH, + MATCH, + result + ), + MISMATCH + ); + } + } + if (node.min === 0) { + result = createCondition( + MATCH, + MATCH, + result + ); + } else { + for (var i = 0; i < node.min - 1; i++) { + if (node.comma && result !== MATCH) { + result = createCondition( + { type: "Comma", syntax: node }, + result, + MISMATCH + ); + } + result = createCondition( + matchTerm, + result, + MISMATCH + ); + } + } + return result; + } + function buildMatchGraph(node) { + if (typeof node === "function") { + return { + type: "Generic", + fn: node + }; + } + switch (node.type) { + case "Group": + var result = buildGroupMatchGraph( + node.combinator, + node.terms.map(buildMatchGraph), + false + ); + if (node.disallowEmpty) { + result = createCondition( + result, + DISALLOW_EMPTY, + MISMATCH + ); + } + return result; + case "Multiplier": + return buildMultiplierMatchGraph(node); + case "Type": + case "Property": + return { + type: node.type, + name: node.name, + syntax: node + }; + case "Keyword": + return { + type: node.type, + name: node.name.toLowerCase(), + syntax: node + }; + case "AtKeyword": + return { + type: node.type, + name: "@" + node.name.toLowerCase(), + syntax: node + }; + case "Function": + return { + type: node.type, + name: node.name.toLowerCase() + "(", + syntax: node + }; + case "String": + if (node.value.length === 3) { + return { + type: "Token", + value: node.value.charAt(1), + syntax: node + }; + } + return { + type: node.type, + value: node.value.substr(1, node.value.length - 2).replace(/\\'/g, "'"), + syntax: node + }; + case "Token": + return { + type: node.type, + value: node.value, + syntax: node + }; + case "Comma": + return { + type: node.type, + syntax: node + }; + default: + throw new Error("Unknown node type:", node.type); + } + } + module2.exports = { + MATCH, + MISMATCH, + DISALLOW_EMPTY, + buildMatchGraph: function(syntaxTree, ref) { + if (typeof syntaxTree === "string") { + syntaxTree = parse(syntaxTree); + } + return { + type: "MatchGraph", + match: buildMatchGraph(syntaxTree), + syntax: ref || null, + source: syntaxTree + }; + } + }; + } +}); + +// node_modules/css-tree/lib/lexer/match.js +var require_match = __commonJS({ + "node_modules/css-tree/lib/lexer/match.js"(exports2, module2) { + var hasOwnProperty2 = Object.prototype.hasOwnProperty; + var matchGraph = require_match_graph(); + var MATCH = matchGraph.MATCH; + var MISMATCH = matchGraph.MISMATCH; + var DISALLOW_EMPTY = matchGraph.DISALLOW_EMPTY; + var TYPE = require_const2().TYPE; + var STUB = 0; + var TOKEN = 1; + var OPEN_SYNTAX = 2; + var CLOSE_SYNTAX = 3; + var EXIT_REASON_MATCH = "Match"; + var EXIT_REASON_MISMATCH = "Mismatch"; + var EXIT_REASON_ITERATION_LIMIT = "Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)"; + var ITERATION_LIMIT = 15e3; + var totalIterationCount = 0; + function reverseList(list) { + var prev = null; + var next = null; + var item = list; + while (item !== null) { + next = item.prev; + item.prev = prev; + prev = item; + item = next; + } + return prev; + } + function areStringsEqualCaseInsensitive(testStr, referenceStr) { + if (testStr.length !== referenceStr.length) { + return false; + } + for (var i = 0; i < testStr.length; i++) { + var testCode = testStr.charCodeAt(i); + var referenceCode = referenceStr.charCodeAt(i); + if (testCode >= 65 && testCode <= 90) { + testCode = testCode | 32; + } + if (testCode !== referenceCode) { + return false; + } + } + return true; + } + function isContextEdgeDelim(token) { + if (token.type !== TYPE.Delim) { + return false; + } + return token.value !== "?"; + } + function isCommaContextStart(token) { + if (token === null) { + return true; + } + return token.type === TYPE.Comma || token.type === TYPE.Function || token.type === TYPE.LeftParenthesis || token.type === TYPE.LeftSquareBracket || token.type === TYPE.LeftCurlyBracket || isContextEdgeDelim(token); + } + function isCommaContextEnd(token) { + if (token === null) { + return true; + } + return token.type === TYPE.RightParenthesis || token.type === TYPE.RightSquareBracket || token.type === TYPE.RightCurlyBracket || token.type === TYPE.Delim; + } + function internalMatch(tokens, state, syntaxes) { + function moveToNextToken() { + do { + tokenIndex++; + token = tokenIndex < tokens.length ? tokens[tokenIndex] : null; + } while (token !== null && (token.type === TYPE.WhiteSpace || token.type === TYPE.Comment)); + } + function getNextToken(offset) { + var nextIndex = tokenIndex + offset; + return nextIndex < tokens.length ? tokens[nextIndex] : null; + } + function stateSnapshotFromSyntax(nextState, prev) { + return { + nextState, + matchStack, + syntaxStack, + thenStack, + tokenIndex, + prev + }; + } + function pushThenStack(nextState) { + thenStack = { + nextState, + matchStack, + syntaxStack, + prev: thenStack + }; + } + function pushElseStack(nextState) { + elseStack = stateSnapshotFromSyntax(nextState, elseStack); + } + function addTokenToMatch() { + matchStack = { + type: TOKEN, + syntax: state.syntax, + token, + prev: matchStack + }; + moveToNextToken(); + syntaxStash = null; + if (tokenIndex > longestMatch) { + longestMatch = tokenIndex; + } + } + function openSyntax() { + syntaxStack = { + syntax: state.syntax, + opts: state.syntax.opts || syntaxStack !== null && syntaxStack.opts || null, + prev: syntaxStack + }; + matchStack = { + type: OPEN_SYNTAX, + syntax: state.syntax, + token: matchStack.token, + prev: matchStack + }; + } + function closeSyntax() { + if (matchStack.type === OPEN_SYNTAX) { + matchStack = matchStack.prev; + } else { + matchStack = { + type: CLOSE_SYNTAX, + syntax: syntaxStack.syntax, + token: matchStack.token, + prev: matchStack + }; + } + syntaxStack = syntaxStack.prev; + } + var syntaxStack = null; + var thenStack = null; + var elseStack = null; + var syntaxStash = null; + var iterationCount = 0; + var exitReason = null; + var token = null; + var tokenIndex = -1; + var longestMatch = 0; + var matchStack = { + type: STUB, + syntax: null, + token: null, + prev: null + }; + moveToNextToken(); + while (exitReason === null && ++iterationCount < ITERATION_LIMIT) { + switch (state.type) { + case "Match": + if (thenStack === null) { + if (token !== null) { + if (tokenIndex !== tokens.length - 1 || token.value !== "\\0" && token.value !== "\\9") { + state = MISMATCH; + break; + } + } + exitReason = EXIT_REASON_MATCH; + break; + } + state = thenStack.nextState; + if (state === DISALLOW_EMPTY) { + if (thenStack.matchStack === matchStack) { + state = MISMATCH; + break; + } else { + state = MATCH; + } + } + while (thenStack.syntaxStack !== syntaxStack) { + closeSyntax(); + } + thenStack = thenStack.prev; + break; + case "Mismatch": + if (syntaxStash !== null && syntaxStash !== false) { + if (elseStack === null || tokenIndex > elseStack.tokenIndex) { + elseStack = syntaxStash; + syntaxStash = false; + } + } else if (elseStack === null) { + exitReason = EXIT_REASON_MISMATCH; + break; + } + state = elseStack.nextState; + thenStack = elseStack.thenStack; + syntaxStack = elseStack.syntaxStack; + matchStack = elseStack.matchStack; + tokenIndex = elseStack.tokenIndex; + token = tokenIndex < tokens.length ? tokens[tokenIndex] : null; + elseStack = elseStack.prev; + break; + case "MatchGraph": + state = state.match; + break; + case "If": + if (state.else !== MISMATCH) { + pushElseStack(state.else); + } + if (state.then !== MATCH) { + pushThenStack(state.then); + } + state = state.match; + break; + case "MatchOnce": + state = { + type: "MatchOnceBuffer", + syntax: state, + index: 0, + mask: 0 + }; + break; + case "MatchOnceBuffer": + var terms = state.syntax.terms; + if (state.index === terms.length) { + if (state.mask === 0 || state.syntax.all) { + state = MISMATCH; + break; + } + state = MATCH; + break; + } + if (state.mask === (1 << terms.length) - 1) { + state = MATCH; + break; + } + for (; state.index < terms.length; state.index++) { + var matchFlag = 1 << state.index; + if ((state.mask & matchFlag) === 0) { + pushElseStack(state); + pushThenStack({ + type: "AddMatchOnce", + syntax: state.syntax, + mask: state.mask | matchFlag + }); + state = terms[state.index++]; + break; + } + } + break; + case "AddMatchOnce": + state = { + type: "MatchOnceBuffer", + syntax: state.syntax, + index: 0, + mask: state.mask + }; + break; + case "Enum": + if (token !== null) { + var name = token.value.toLowerCase(); + if (name.indexOf("\\") !== -1) { + name = name.replace(/\\[09].*$/, ""); + } + if (hasOwnProperty2.call(state.map, name)) { + state = state.map[name]; + break; + } + } + state = MISMATCH; + break; + case "Generic": + var opts = syntaxStack !== null ? syntaxStack.opts : null; + var lastTokenIndex = tokenIndex + Math.floor(state.fn(token, getNextToken, opts)); + if (!isNaN(lastTokenIndex) && lastTokenIndex > tokenIndex) { + while (tokenIndex < lastTokenIndex) { + addTokenToMatch(); + } + state = MATCH; + } else { + state = MISMATCH; + } + break; + case "Type": + case "Property": + var syntaxDict = state.type === "Type" ? "types" : "properties"; + var dictSyntax = hasOwnProperty2.call(syntaxes, syntaxDict) ? syntaxes[syntaxDict][state.name] : null; + if (!dictSyntax || !dictSyntax.match) { + throw new Error( + "Bad syntax reference: " + (state.type === "Type" ? "<" + state.name + ">" : "<'" + state.name + "'>") + ); + } + if (syntaxStash !== false && token !== null && state.type === "Type") { + var lowPriorityMatching = state.name === "custom-ident" && token.type === TYPE.Ident || state.name === "length" && token.value === "0"; + if (lowPriorityMatching) { + if (syntaxStash === null) { + syntaxStash = stateSnapshotFromSyntax(state, elseStack); + } + state = MISMATCH; + break; + } + } + openSyntax(); + state = dictSyntax.match; + break; + case "Keyword": + var name = state.name; + if (token !== null) { + var keywordName = token.value; + if (keywordName.indexOf("\\") !== -1) { + keywordName = keywordName.replace(/\\[09].*$/, ""); + } + if (areStringsEqualCaseInsensitive(keywordName, name)) { + addTokenToMatch(); + state = MATCH; + break; + } + } + state = MISMATCH; + break; + case "AtKeyword": + case "Function": + if (token !== null && areStringsEqualCaseInsensitive(token.value, state.name)) { + addTokenToMatch(); + state = MATCH; + break; + } + state = MISMATCH; + break; + case "Token": + if (token !== null && token.value === state.value) { + addTokenToMatch(); + state = MATCH; + break; + } + state = MISMATCH; + break; + case "Comma": + if (token !== null && token.type === TYPE.Comma) { + if (isCommaContextStart(matchStack.token)) { + state = MISMATCH; + } else { + addTokenToMatch(); + state = isCommaContextEnd(token) ? MISMATCH : MATCH; + } + } else { + state = isCommaContextStart(matchStack.token) || isCommaContextEnd(token) ? MATCH : MISMATCH; + } + break; + case "String": + var string = ""; + for (var lastTokenIndex = tokenIndex; lastTokenIndex < tokens.length && string.length < state.value.length; lastTokenIndex++) { + string += tokens[lastTokenIndex].value; + } + if (areStringsEqualCaseInsensitive(string, state.value)) { + while (tokenIndex < lastTokenIndex) { + addTokenToMatch(); + } + state = MATCH; + } else { + state = MISMATCH; + } + break; + default: + throw new Error("Unknown node type: " + state.type); + } + } + totalIterationCount += iterationCount; + switch (exitReason) { + case null: + console.warn("[csstree-match] BREAK after " + ITERATION_LIMIT + " iterations"); + exitReason = EXIT_REASON_ITERATION_LIMIT; + matchStack = null; + break; + case EXIT_REASON_MATCH: + while (syntaxStack !== null) { + closeSyntax(); + } + break; + default: + matchStack = null; + } + return { + tokens, + reason: exitReason, + iterations: iterationCount, + match: matchStack, + longestMatch + }; + } + function matchAsList(tokens, matchGraph2, syntaxes) { + var matchResult = internalMatch(tokens, matchGraph2, syntaxes || {}); + if (matchResult.match !== null) { + var item = reverseList(matchResult.match).prev; + matchResult.match = []; + while (item !== null) { + switch (item.type) { + case STUB: + break; + case OPEN_SYNTAX: + case CLOSE_SYNTAX: + matchResult.match.push({ + type: item.type, + syntax: item.syntax + }); + break; + default: + matchResult.match.push({ + token: item.token.value, + node: item.token.node + }); + break; + } + item = item.prev; + } + } + return matchResult; + } + function matchAsTree(tokens, matchGraph2, syntaxes) { + var matchResult = internalMatch(tokens, matchGraph2, syntaxes || {}); + if (matchResult.match === null) { + return matchResult; + } + var item = matchResult.match; + var host = matchResult.match = { + syntax: matchGraph2.syntax || null, + match: [] + }; + var hostStack = [host]; + item = reverseList(item).prev; + while (item !== null) { + switch (item.type) { + case OPEN_SYNTAX: + host.match.push(host = { + syntax: item.syntax, + match: [] + }); + hostStack.push(host); + break; + case CLOSE_SYNTAX: + hostStack.pop(); + host = hostStack[hostStack.length - 1]; + break; + default: + host.match.push({ + syntax: item.syntax || null, + token: item.token.value, + node: item.token.node + }); + } + item = item.prev; + } + return matchResult; + } + module2.exports = { + matchAsList, + matchAsTree, + getTotalIterationCount: function() { + return totalIterationCount; + } + }; + } +}); + +// node_modules/css-tree/lib/lexer/trace.js +var require_trace = __commonJS({ + "node_modules/css-tree/lib/lexer/trace.js"(exports2, module2) { + function getTrace(node) { + function shouldPutToTrace(syntax) { + if (syntax === null) { + return false; + } + return syntax.type === "Type" || syntax.type === "Property" || syntax.type === "Keyword"; + } + function hasMatch(matchNode) { + if (Array.isArray(matchNode.match)) { + for (var i = 0; i < matchNode.match.length; i++) { + if (hasMatch(matchNode.match[i])) { + if (shouldPutToTrace(matchNode.syntax)) { + result.unshift(matchNode.syntax); + } + return true; + } + } + } else if (matchNode.node === node) { + result = shouldPutToTrace(matchNode.syntax) ? [matchNode.syntax] : []; + return true; + } + return false; + } + var result = null; + if (this.matched !== null) { + hasMatch(this.matched); + } + return result; + } + function testNode(match, node, fn) { + var trace = getTrace.call(match, node); + if (trace === null) { + return false; + } + return trace.some(fn); + } + function isType(node, type) { + return testNode(this, node, function(matchNode) { + return matchNode.type === "Type" && matchNode.name === type; + }); + } + function isProperty(node, property) { + return testNode(this, node, function(matchNode) { + return matchNode.type === "Property" && matchNode.name === property; + }); + } + function isKeyword(node) { + return testNode(this, node, function(matchNode) { + return matchNode.type === "Keyword"; + }); + } + module2.exports = { + getTrace, + isType, + isProperty, + isKeyword + }; + } +}); + +// node_modules/css-tree/lib/lexer/search.js +var require_search = __commonJS({ + "node_modules/css-tree/lib/lexer/search.js"(exports2, module2) { + var List = require_List(); + function getFirstMatchNode(matchNode) { + if ("node" in matchNode) { + return matchNode.node; + } + return getFirstMatchNode(matchNode.match[0]); + } + function getLastMatchNode(matchNode) { + if ("node" in matchNode) { + return matchNode.node; + } + return getLastMatchNode(matchNode.match[matchNode.match.length - 1]); + } + function matchFragments(lexer, ast, match, type, name) { + function findFragments(matchNode) { + if (matchNode.syntax !== null && matchNode.syntax.type === type && matchNode.syntax.name === name) { + var start = getFirstMatchNode(matchNode); + var end = getLastMatchNode(matchNode); + lexer.syntax.walk(ast, function(node, item, list) { + if (node === start) { + var nodes = new List(); + do { + nodes.appendData(item.data); + if (item.data === end) { + break; + } + item = item.next; + } while (item !== null); + fragments.push({ + parent: list, + nodes + }); + } + }); + } + if (Array.isArray(matchNode.match)) { + matchNode.match.forEach(findFragments); + } + } + var fragments = []; + if (match.matched !== null) { + findFragments(match.matched); + } + return fragments; + } + module2.exports = { + matchFragments + }; + } +}); + +// node_modules/css-tree/lib/lexer/structure.js +var require_structure = __commonJS({ + "node_modules/css-tree/lib/lexer/structure.js"(exports2, module2) { + var List = require_List(); + var hasOwnProperty2 = Object.prototype.hasOwnProperty; + function isValidNumber(value) { + return typeof value === "number" && isFinite(value) && Math.floor(value) === value && value >= 0; + } + function isValidLocation(loc) { + return Boolean(loc) && isValidNumber(loc.offset) && isValidNumber(loc.line) && isValidNumber(loc.column); + } + function createNodeStructureChecker(type, fields) { + return function checkNode(node, warn) { + if (!node || node.constructor !== Object) { + return warn(node, "Type of node should be an Object"); + } + for (var key in node) { + var valid = true; + if (hasOwnProperty2.call(node, key) === false) { + continue; + } + if (key === "type") { + if (node.type !== type) { + warn(node, "Wrong node type `" + node.type + "`, expected `" + type + "`"); + } + } else if (key === "loc") { + if (node.loc === null) { + continue; + } else if (node.loc && node.loc.constructor === Object) { + if (typeof node.loc.source !== "string") { + key += ".source"; + } else if (!isValidLocation(node.loc.start)) { + key += ".start"; + } else if (!isValidLocation(node.loc.end)) { + key += ".end"; + } else { + continue; + } + } + valid = false; + } else if (fields.hasOwnProperty(key)) { + for (var i = 0, valid = false; !valid && i < fields[key].length; i++) { + var fieldType = fields[key][i]; + switch (fieldType) { + case String: + valid = typeof node[key] === "string"; + break; + case Boolean: + valid = typeof node[key] === "boolean"; + break; + case null: + valid = node[key] === null; + break; + default: + if (typeof fieldType === "string") { + valid = node[key] && node[key].type === fieldType; + } else if (Array.isArray(fieldType)) { + valid = node[key] instanceof List; + } + } + } + } else { + warn(node, "Unknown field `" + key + "` for " + type + " node type"); + } + if (!valid) { + warn(node, "Bad value for `" + type + "." + key + "`"); + } + } + for (var key in fields) { + if (hasOwnProperty2.call(fields, key) && hasOwnProperty2.call(node, key) === false) { + warn(node, "Field `" + type + "." + key + "` is missed"); + } + } + }; + } + function processStructure(name, nodeType) { + var structure = nodeType.structure; + var fields = { + type: String, + loc: true + }; + var docs = { + type: '"' + name + '"' + }; + for (var key in structure) { + if (hasOwnProperty2.call(structure, key) === false) { + continue; + } + var docsTypes = []; + var fieldTypes = fields[key] = Array.isArray(structure[key]) ? structure[key].slice() : [structure[key]]; + for (var i = 0; i < fieldTypes.length; i++) { + var fieldType = fieldTypes[i]; + if (fieldType === String || fieldType === Boolean) { + docsTypes.push(fieldType.name); + } else if (fieldType === null) { + docsTypes.push("null"); + } else if (typeof fieldType === "string") { + docsTypes.push("<" + fieldType + ">"); + } else if (Array.isArray(fieldType)) { + docsTypes.push("List"); + } else { + throw new Error("Wrong value `" + fieldType + "` in `" + name + "." + key + "` structure definition"); + } + } + docs[key] = docsTypes.join(" | "); + } + return { + docs, + check: createNodeStructureChecker(name, fields) + }; + } + module2.exports = { + getStructureFromConfig: function(config) { + var structure = {}; + if (config.node) { + for (var name in config.node) { + if (hasOwnProperty2.call(config.node, name)) { + var nodeType = config.node[name]; + if (nodeType.structure) { + structure[name] = processStructure(name, nodeType); + } else { + throw new Error("Missed `structure` field in `" + name + "` node type definition"); + } + } + } + } + return structure; + } + }; + } +}); + +// node_modules/css-tree/lib/lexer/Lexer.js +var require_Lexer = __commonJS({ + "node_modules/css-tree/lib/lexer/Lexer.js"(exports2, module2) { + var SyntaxReferenceError = require_error2().SyntaxReferenceError; + var SyntaxMatchError = require_error2().SyntaxMatchError; + var names = require_names2(); + var generic = require_generic(); + var parse = require_parse6(); + var generate = require_generate(); + var walk = require_walk2(); + var prepareTokens = require_prepare_tokens(); + var buildMatchGraph = require_match_graph().buildMatchGraph; + var matchAsTree = require_match().matchAsTree; + var trace = require_trace(); + var search = require_search(); + var getStructureFromConfig = require_structure().getStructureFromConfig; + var cssWideKeywords = buildMatchGraph("inherit | initial | unset"); + var cssWideKeywordsWithExpression = buildMatchGraph("inherit | initial | unset | <-ms-legacy-expression>"); + function dumpMapSyntax(map, compact, syntaxAsAst) { + var result = {}; + for (var name in map) { + if (map[name].syntax) { + result[name] = syntaxAsAst ? map[name].syntax : generate(map[name].syntax, { compact }); + } + } + return result; + } + function dumpAtruleMapSyntax(map, compact, syntaxAsAst) { + const result = {}; + for (const [name, atrule] of Object.entries(map)) { + result[name] = { + prelude: atrule.prelude && (syntaxAsAst ? atrule.prelude.syntax : generate(atrule.prelude.syntax, { compact })), + descriptors: atrule.descriptors && dumpMapSyntax(atrule.descriptors, compact, syntaxAsAst) + }; + } + return result; + } + function valueHasVar(tokens) { + for (var i = 0; i < tokens.length; i++) { + if (tokens[i].value.toLowerCase() === "var(") { + return true; + } + } + return false; + } + function buildMatchResult(match, error, iterations) { + return { + matched: match, + iterations, + error, + getTrace: trace.getTrace, + isType: trace.isType, + isProperty: trace.isProperty, + isKeyword: trace.isKeyword + }; + } + function matchSyntax(lexer, syntax, value, useCommon) { + var tokens = prepareTokens(value, lexer.syntax); + var result; + if (valueHasVar(tokens)) { + return buildMatchResult(null, new Error("Matching for a tree with var() is not supported")); + } + if (useCommon) { + result = matchAsTree(tokens, lexer.valueCommonSyntax, lexer); + } + if (!useCommon || !result.match) { + result = matchAsTree(tokens, syntax.match, lexer); + if (!result.match) { + return buildMatchResult( + null, + new SyntaxMatchError(result.reason, syntax.syntax, value, result), + result.iterations + ); + } + } + return buildMatchResult(result.match, null, result.iterations); + } + var Lexer = function(config, syntax, structure) { + this.valueCommonSyntax = cssWideKeywords; + this.syntax = syntax; + this.generic = false; + this.atrules = {}; + this.properties = {}; + this.types = {}; + this.structure = structure || getStructureFromConfig(config); + if (config) { + if (config.types) { + for (var name in config.types) { + this.addType_(name, config.types[name]); + } + } + if (config.generic) { + this.generic = true; + for (var name in generic) { + this.addType_(name, generic[name]); + } + } + if (config.atrules) { + for (var name in config.atrules) { + this.addAtrule_(name, config.atrules[name]); + } + } + if (config.properties) { + for (var name in config.properties) { + this.addProperty_(name, config.properties[name]); + } + } + } + }; + Lexer.prototype = { + structure: {}, + checkStructure: function(ast) { + function collectWarning(node, message) { + warns.push({ + node, + message + }); + } + var structure = this.structure; + var warns = []; + this.syntax.walk(ast, function(node) { + if (structure.hasOwnProperty(node.type)) { + structure[node.type].check(node, collectWarning); + } else { + collectWarning(node, "Unknown node type `" + node.type + "`"); + } + }); + return warns.length ? warns : false; + }, + createDescriptor: function(syntax, type, name, parent = null) { + var ref = { + type, + name + }; + var descriptor = { + type, + name, + parent, + syntax: null, + match: null + }; + if (typeof syntax === "function") { + descriptor.match = buildMatchGraph(syntax, ref); + } else { + if (typeof syntax === "string") { + Object.defineProperty(descriptor, "syntax", { + get: function() { + Object.defineProperty(descriptor, "syntax", { + value: parse(syntax) + }); + return descriptor.syntax; + } + }); + } else { + descriptor.syntax = syntax; + } + Object.defineProperty(descriptor, "match", { + get: function() { + Object.defineProperty(descriptor, "match", { + value: buildMatchGraph(descriptor.syntax, ref) + }); + return descriptor.match; + } + }); + } + return descriptor; + }, + addAtrule_: function(name, syntax) { + if (!syntax) { + return; + } + this.atrules[name] = { + type: "Atrule", + name, + prelude: syntax.prelude ? this.createDescriptor(syntax.prelude, "AtrulePrelude", name) : null, + descriptors: syntax.descriptors ? Object.keys(syntax.descriptors).reduce((res, descName) => { + res[descName] = this.createDescriptor(syntax.descriptors[descName], "AtruleDescriptor", descName, name); + return res; + }, {}) : null + }; + }, + addProperty_: function(name, syntax) { + if (!syntax) { + return; + } + this.properties[name] = this.createDescriptor(syntax, "Property", name); + }, + addType_: function(name, syntax) { + if (!syntax) { + return; + } + this.types[name] = this.createDescriptor(syntax, "Type", name); + if (syntax === generic["-ms-legacy-expression"]) { + this.valueCommonSyntax = cssWideKeywordsWithExpression; + } + }, + checkAtruleName: function(atruleName) { + if (!this.getAtrule(atruleName)) { + return new SyntaxReferenceError("Unknown at-rule", "@" + atruleName); + } + }, + checkAtrulePrelude: function(atruleName, prelude) { + let error = this.checkAtruleName(atruleName); + if (error) { + return error; + } + var atrule = this.getAtrule(atruleName); + if (!atrule.prelude && prelude) { + return new SyntaxError("At-rule `@" + atruleName + "` should not contain a prelude"); + } + if (atrule.prelude && !prelude) { + return new SyntaxError("At-rule `@" + atruleName + "` should contain a prelude"); + } + }, + checkAtruleDescriptorName: function(atruleName, descriptorName) { + let error = this.checkAtruleName(atruleName); + if (error) { + return error; + } + var atrule = this.getAtrule(atruleName); + var descriptor = names.keyword(descriptorName); + if (!atrule.descriptors) { + return new SyntaxError("At-rule `@" + atruleName + "` has no known descriptors"); + } + if (!atrule.descriptors[descriptor.name] && !atrule.descriptors[descriptor.basename]) { + return new SyntaxReferenceError("Unknown at-rule descriptor", descriptorName); + } + }, + checkPropertyName: function(propertyName) { + var property = names.property(propertyName); + if (property.custom) { + return new Error("Lexer matching doesn't applicable for custom properties"); + } + if (!this.getProperty(propertyName)) { + return new SyntaxReferenceError("Unknown property", propertyName); + } + }, + matchAtrulePrelude: function(atruleName, prelude) { + var error = this.checkAtrulePrelude(atruleName, prelude); + if (error) { + return buildMatchResult(null, error); + } + if (!prelude) { + return buildMatchResult(null, null); + } + return matchSyntax(this, this.getAtrule(atruleName).prelude, prelude, false); + }, + matchAtruleDescriptor: function(atruleName, descriptorName, value) { + var error = this.checkAtruleDescriptorName(atruleName, descriptorName); + if (error) { + return buildMatchResult(null, error); + } + var atrule = this.getAtrule(atruleName); + var descriptor = names.keyword(descriptorName); + return matchSyntax(this, atrule.descriptors[descriptor.name] || atrule.descriptors[descriptor.basename], value, false); + }, + matchDeclaration: function(node) { + if (node.type !== "Declaration") { + return buildMatchResult(null, new Error("Not a Declaration node")); + } + return this.matchProperty(node.property, node.value); + }, + matchProperty: function(propertyName, value) { + var error = this.checkPropertyName(propertyName); + if (error) { + return buildMatchResult(null, error); + } + return matchSyntax(this, this.getProperty(propertyName), value, true); + }, + matchType: function(typeName, value) { + var typeSyntax = this.getType(typeName); + if (!typeSyntax) { + return buildMatchResult(null, new SyntaxReferenceError("Unknown type", typeName)); + } + return matchSyntax(this, typeSyntax, value, false); + }, + match: function(syntax, value) { + if (typeof syntax !== "string" && (!syntax || !syntax.type)) { + return buildMatchResult(null, new SyntaxReferenceError("Bad syntax")); + } + if (typeof syntax === "string" || !syntax.match) { + syntax = this.createDescriptor(syntax, "Type", "anonymous"); + } + return matchSyntax(this, syntax, value, false); + }, + findValueFragments: function(propertyName, value, type, name) { + return search.matchFragments(this, value, this.matchProperty(propertyName, value), type, name); + }, + findDeclarationValueFragments: function(declaration, type, name) { + return search.matchFragments(this, declaration.value, this.matchDeclaration(declaration), type, name); + }, + findAllFragments: function(ast, type, name) { + var result = []; + this.syntax.walk(ast, { + visit: "Declaration", + enter: function(declaration) { + result.push.apply(result, this.findDeclarationValueFragments(declaration, type, name)); + }.bind(this) + }); + return result; + }, + getAtrule: function(atruleName, fallbackBasename = true) { + var atrule = names.keyword(atruleName); + var atruleEntry = atrule.vendor && fallbackBasename ? this.atrules[atrule.name] || this.atrules[atrule.basename] : this.atrules[atrule.name]; + return atruleEntry || null; + }, + getAtrulePrelude: function(atruleName, fallbackBasename = true) { + const atrule = this.getAtrule(atruleName, fallbackBasename); + return atrule && atrule.prelude || null; + }, + getAtruleDescriptor: function(atruleName, name) { + return this.atrules.hasOwnProperty(atruleName) && this.atrules.declarators ? this.atrules[atruleName].declarators[name] || null : null; + }, + getProperty: function(propertyName, fallbackBasename = true) { + var property = names.property(propertyName); + var propertyEntry = property.vendor && fallbackBasename ? this.properties[property.name] || this.properties[property.basename] : this.properties[property.name]; + return propertyEntry || null; + }, + getType: function(name) { + return this.types.hasOwnProperty(name) ? this.types[name] : null; + }, + validate: function() { + function validate(syntax, name, broken, descriptor) { + if (broken.hasOwnProperty(name)) { + return broken[name]; + } + broken[name] = false; + if (descriptor.syntax !== null) { + walk(descriptor.syntax, function(node) { + if (node.type !== "Type" && node.type !== "Property") { + return; + } + var map = node.type === "Type" ? syntax.types : syntax.properties; + var brokenMap = node.type === "Type" ? brokenTypes : brokenProperties; + if (!map.hasOwnProperty(node.name) || validate(syntax, node.name, brokenMap, map[node.name])) { + broken[name] = true; + } + }, this); + } + } + var brokenTypes = {}; + var brokenProperties = {}; + for (var key in this.types) { + validate(this, key, brokenTypes, this.types[key]); + } + for (var key in this.properties) { + validate(this, key, brokenProperties, this.properties[key]); + } + brokenTypes = Object.keys(brokenTypes).filter(function(name) { + return brokenTypes[name]; + }); + brokenProperties = Object.keys(brokenProperties).filter(function(name) { + return brokenProperties[name]; + }); + if (brokenTypes.length || brokenProperties.length) { + return { + types: brokenTypes, + properties: brokenProperties + }; + } + return null; + }, + dump: function(syntaxAsAst, pretty) { + return { + generic: this.generic, + types: dumpMapSyntax(this.types, !pretty, syntaxAsAst), + properties: dumpMapSyntax(this.properties, !pretty, syntaxAsAst), + atrules: dumpAtruleMapSyntax(this.atrules, !pretty, syntaxAsAst) + }; + }, + toString: function() { + return JSON.stringify(this.dump()); + } + }; + module2.exports = Lexer; + } +}); + +// node_modules/css-tree/lib/definition-syntax/index.js +var require_definition_syntax = __commonJS({ + "node_modules/css-tree/lib/definition-syntax/index.js"(exports2, module2) { + module2.exports = { + SyntaxError: require_SyntaxError2(), + parse: require_parse6(), + generate: require_generate(), + walk: require_walk2() + }; + } +}); + +// node_modules/css-tree/lib/common/OffsetToLocation.js +var require_OffsetToLocation = __commonJS({ + "node_modules/css-tree/lib/common/OffsetToLocation.js"(exports2, module2) { + var adoptBuffer = require_adopt_buffer(); + var isBOM = require_tokenizer().isBOM; + var N = 10; + var F = 12; + var R = 13; + function computeLinesAndColumns(host, source) { + var sourceLength = source.length; + var lines = adoptBuffer(host.lines, sourceLength); + var line = host.startLine; + var columns = adoptBuffer(host.columns, sourceLength); + var column = host.startColumn; + var startOffset = source.length > 0 ? isBOM(source.charCodeAt(0)) : 0; + for (var i = startOffset; i < sourceLength; i++) { + var code = source.charCodeAt(i); + lines[i] = line; + columns[i] = column++; + if (code === N || code === R || code === F) { + if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) { + i++; + lines[i] = line; + columns[i] = column; + } + line++; + column = 1; + } + } + lines[i] = line; + columns[i] = column; + host.lines = lines; + host.columns = columns; + } + var OffsetToLocation = function() { + this.lines = null; + this.columns = null; + this.linesAndColumnsComputed = false; + }; + OffsetToLocation.prototype = { + setSource: function(source, startOffset, startLine, startColumn) { + this.source = source; + this.startOffset = typeof startOffset === "undefined" ? 0 : startOffset; + this.startLine = typeof startLine === "undefined" ? 1 : startLine; + this.startColumn = typeof startColumn === "undefined" ? 1 : startColumn; + this.linesAndColumnsComputed = false; + }, + ensureLinesAndColumnsComputed: function() { + if (!this.linesAndColumnsComputed) { + computeLinesAndColumns(this, this.source); + this.linesAndColumnsComputed = true; + } + }, + getLocation: function(offset, filename) { + this.ensureLinesAndColumnsComputed(); + return { + source: filename, + offset: this.startOffset + offset, + line: this.lines[offset], + column: this.columns[offset] + }; + }, + getLocationRange: function(start, end, filename) { + this.ensureLinesAndColumnsComputed(); + return { + source: filename, + start: { + offset: this.startOffset + start, + line: this.lines[start], + column: this.columns[start] + }, + end: { + offset: this.startOffset + end, + line: this.lines[end], + column: this.columns[end] + } + }; + } + }; + module2.exports = OffsetToLocation; + } +}); + +// node_modules/css-tree/lib/parser/sequence.js +var require_sequence = __commonJS({ + "node_modules/css-tree/lib/parser/sequence.js"(exports2, module2) { + var TYPE = require_tokenizer().TYPE; + var WHITESPACE = TYPE.WhiteSpace; + var COMMENT = TYPE.Comment; + module2.exports = function readSequence(recognizer) { + var children = this.createList(); + var child = null; + var context = { + recognizer, + space: null, + ignoreWS: false, + ignoreWSAfter: false + }; + this.scanner.skipSC(); + while (!this.scanner.eof) { + switch (this.scanner.tokenType) { + case COMMENT: + this.scanner.next(); + continue; + case WHITESPACE: + if (context.ignoreWS) { + this.scanner.next(); + } else { + context.space = this.WhiteSpace(); + } + continue; + } + child = recognizer.getNode.call(this, context); + if (child === void 0) { + break; + } + if (context.space !== null) { + children.push(context.space); + context.space = null; + } + children.push(child); + if (context.ignoreWSAfter) { + context.ignoreWSAfter = false; + context.ignoreWS = true; + } else { + context.ignoreWS = false; + } + } + return children; + }; + } +}); + +// node_modules/css-tree/lib/parser/create.js +var require_create = __commonJS({ + "node_modules/css-tree/lib/parser/create.js"(exports2, module2) { + var OffsetToLocation = require_OffsetToLocation(); + var SyntaxError2 = require_SyntaxError(); + var TokenStream = require_TokenStream(); + var List = require_List(); + var tokenize = require_tokenizer(); + var constants = require_const2(); + var { findWhiteSpaceStart, cmpStr } = require_utils3(); + var sequence = require_sequence(); + var noop = function() { + }; + var TYPE = constants.TYPE; + var NAME = constants.NAME; + var WHITESPACE = TYPE.WhiteSpace; + var COMMENT = TYPE.Comment; + var IDENT = TYPE.Ident; + var FUNCTION = TYPE.Function; + var URL2 = TYPE.Url; + var HASH = TYPE.Hash; + var PERCENTAGE = TYPE.Percentage; + var NUMBER = TYPE.Number; + var NUMBERSIGN = 35; + var NULL = 0; + function createParseContext(name) { + return function() { + return this[name](); + }; + } + function processConfig(config) { + var parserConfig = { + context: {}, + scope: {}, + atrule: {}, + pseudo: {} + }; + if (config.parseContext) { + for (var name in config.parseContext) { + switch (typeof config.parseContext[name]) { + case "function": + parserConfig.context[name] = config.parseContext[name]; + break; + case "string": + parserConfig.context[name] = createParseContext(config.parseContext[name]); + break; + } + } + } + if (config.scope) { + for (var name in config.scope) { + parserConfig.scope[name] = config.scope[name]; + } + } + if (config.atrule) { + for (var name in config.atrule) { + var atrule = config.atrule[name]; + if (atrule.parse) { + parserConfig.atrule[name] = atrule.parse; + } + } + } + if (config.pseudo) { + for (var name in config.pseudo) { + var pseudo = config.pseudo[name]; + if (pseudo.parse) { + parserConfig.pseudo[name] = pseudo.parse; + } + } + } + if (config.node) { + for (var name in config.node) { + parserConfig[name] = config.node[name].parse; + } + } + return parserConfig; + } + module2.exports = function createParser(config) { + var parser = { + scanner: new TokenStream(), + locationMap: new OffsetToLocation(), + filename: "", + needPositions: false, + onParseError: noop, + onParseErrorThrow: false, + parseAtrulePrelude: true, + parseRulePrelude: true, + parseValue: true, + parseCustomProperty: false, + readSequence: sequence, + createList: function() { + return new List(); + }, + createSingleNodeList: function(node) { + return new List().appendData(node); + }, + getFirstListNode: function(list) { + return list && list.first(); + }, + getLastListNode: function(list) { + return list.last(); + }, + parseWithFallback: function(consumer, fallback) { + var startToken = this.scanner.tokenIndex; + try { + return consumer.call(this); + } catch (e) { + if (this.onParseErrorThrow) { + throw e; + } + var fallbackNode = fallback.call(this, startToken); + this.onParseErrorThrow = true; + this.onParseError(e, fallbackNode); + this.onParseErrorThrow = false; + return fallbackNode; + } + }, + lookupNonWSType: function(offset) { + do { + var type = this.scanner.lookupType(offset++); + if (type !== WHITESPACE) { + return type; + } + } while (type !== NULL); + return NULL; + }, + eat: function(tokenType) { + if (this.scanner.tokenType !== tokenType) { + var offset = this.scanner.tokenStart; + var message = NAME[tokenType] + " is expected"; + switch (tokenType) { + case IDENT: + if (this.scanner.tokenType === FUNCTION || this.scanner.tokenType === URL2) { + offset = this.scanner.tokenEnd - 1; + message = "Identifier is expected but function found"; + } else { + message = "Identifier is expected"; + } + break; + case HASH: + if (this.scanner.isDelim(NUMBERSIGN)) { + this.scanner.next(); + offset++; + message = "Name is expected"; + } + break; + case PERCENTAGE: + if (this.scanner.tokenType === NUMBER) { + offset = this.scanner.tokenEnd; + message = "Percent sign is expected"; + } + break; + default: + if (this.scanner.source.charCodeAt(this.scanner.tokenStart) === tokenType) { + offset = offset + 1; + } + } + this.error(message, offset); + } + this.scanner.next(); + }, + consume: function(tokenType) { + var value = this.scanner.getTokenValue(); + this.eat(tokenType); + return value; + }, + consumeFunctionName: function() { + var name = this.scanner.source.substring(this.scanner.tokenStart, this.scanner.tokenEnd - 1); + this.eat(FUNCTION); + return name; + }, + getLocation: function(start, end) { + if (this.needPositions) { + return this.locationMap.getLocationRange( + start, + end, + this.filename + ); + } + return null; + }, + getLocationFromList: function(list) { + if (this.needPositions) { + var head = this.getFirstListNode(list); + var tail = this.getLastListNode(list); + return this.locationMap.getLocationRange( + head !== null ? head.loc.start.offset - this.locationMap.startOffset : this.scanner.tokenStart, + tail !== null ? tail.loc.end.offset - this.locationMap.startOffset : this.scanner.tokenStart, + this.filename + ); + } + return null; + }, + error: function(message, offset) { + var location = typeof offset !== "undefined" && offset < this.scanner.source.length ? this.locationMap.getLocation(offset) : this.scanner.eof ? this.locationMap.getLocation(findWhiteSpaceStart(this.scanner.source, this.scanner.source.length - 1)) : this.locationMap.getLocation(this.scanner.tokenStart); + throw new SyntaxError2( + message || "Unexpected input", + this.scanner.source, + location.offset, + location.line, + location.column + ); + } + }; + config = processConfig(config || {}); + for (var key in config) { + parser[key] = config[key]; + } + return function(source, options) { + options = options || {}; + var context = options.context || "default"; + var onComment = options.onComment; + var ast; + tokenize(source, parser.scanner); + parser.locationMap.setSource( + source, + options.offset, + options.line, + options.column + ); + parser.filename = options.filename || ""; + parser.needPositions = Boolean(options.positions); + parser.onParseError = typeof options.onParseError === "function" ? options.onParseError : noop; + parser.onParseErrorThrow = false; + parser.parseAtrulePrelude = "parseAtrulePrelude" in options ? Boolean(options.parseAtrulePrelude) : true; + parser.parseRulePrelude = "parseRulePrelude" in options ? Boolean(options.parseRulePrelude) : true; + parser.parseValue = "parseValue" in options ? Boolean(options.parseValue) : true; + parser.parseCustomProperty = "parseCustomProperty" in options ? Boolean(options.parseCustomProperty) : false; + if (!parser.context.hasOwnProperty(context)) { + throw new Error("Unknown context `" + context + "`"); + } + if (typeof onComment === "function") { + parser.scanner.forEachToken((type, start, end) => { + if (type === COMMENT) { + const loc = parser.getLocation(start, end); + const value = cmpStr(source, end - 2, end, "*/") ? source.slice(start + 2, end - 2) : source.slice(start + 2, end); + onComment(value, loc); + } + }); + } + ast = parser.context[context].call(parser, options); + if (!parser.scanner.eof) { + parser.error(); + } + return ast; + }; + }; + } +}); + +// node_modules/source-map/lib/base64.js +var require_base642 = __commonJS({ + "node_modules/source-map/lib/base64.js"(exports2) { + var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""); + exports2.encode = function(number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); + }; + exports2.decode = function(charCode) { + var bigA = 65; + var bigZ = 90; + var littleA = 97; + var littleZ = 122; + var zero = 48; + var nine = 57; + var plus = 43; + var slash = 47; + var littleOffset = 26; + var numberOffset = 52; + if (bigA <= charCode && charCode <= bigZ) { + return charCode - bigA; + } + if (littleA <= charCode && charCode <= littleZ) { + return charCode - littleA + littleOffset; + } + if (zero <= charCode && charCode <= nine) { + return charCode - zero + numberOffset; + } + if (charCode == plus) { + return 62; + } + if (charCode == slash) { + return 63; + } + return -1; + }; + } +}); + +// node_modules/source-map/lib/base64-vlq.js +var require_base64_vlq2 = __commonJS({ + "node_modules/source-map/lib/base64-vlq.js"(exports2) { + var base64 = require_base642(); + var VLQ_BASE_SHIFT = 5; + var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + var VLQ_BASE_MASK = VLQ_BASE - 1; + var VLQ_CONTINUATION_BIT = VLQ_BASE; + function toVLQSigned(aValue) { + return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0; + } + function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative ? -shifted : shifted; + } + exports2.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + var vlq = toVLQSigned(aValue); + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + return encoded; + }; + exports2.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; + }; + } +}); + +// node_modules/source-map/lib/util.js +var require_util2 = __commonJS({ + "node_modules/source-map/lib/util.js"(exports2) { + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports2.getArg = getArg; + var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; + var dataUrlRegexp = /^data:.+\,.+$/; + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; + } + exports2.urlParse = urlParse; + function urlGenerate(aParsedUrl) { + var url = ""; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ":"; + } + url += "//"; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + "@"; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port; + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; + } + exports2.urlGenerate = urlGenerate; + function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports2.isAbsolute(path); + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === ".") { + parts.splice(i, 1); + } else if (part === "..") { + up++; + } else if (up > 0) { + if (part === "") { + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join("/"); + if (path === "") { + path = isAbsolute ? "/" : "."; + } + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; + } + exports2.normalize = normalize; + function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || "/"; + } + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + var joined = aPath.charAt(0) === "/" ? aPath : normalize(aRoot.replace(/\/+$/, "") + "/" + aPath); + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; + } + exports2.join = join; + exports2.isAbsolute = function(aPath) { + return aPath.charAt(0) === "/" || urlRegexp.test(aPath); + }; + function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + aRoot = aRoot.replace(/\/$/, ""); + var level = 0; + while (aPath.indexOf(aRoot + "/") !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + ++level; + } + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); + } + exports2.relative = relative; + var supportsNullProto = function() { + var obj = /* @__PURE__ */ Object.create(null); + return !("__proto__" in obj); + }(); + function identity(s) { + return s; + } + function toSetString(aStr) { + if (isProtoString(aStr)) { + return "$" + aStr; + } + return aStr; + } + exports2.toSetString = supportsNullProto ? identity : toSetString; + function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + return aStr; + } + exports2.fromSetString = supportsNullProto ? identity : fromSetString; + function isProtoString(s) { + if (!s) { + return false; + } + var length = s.length; + if (length < 9) { + return false; + } + if (s.charCodeAt(length - 1) !== 95 || s.charCodeAt(length - 2) !== 95 || s.charCodeAt(length - 3) !== 111 || s.charCodeAt(length - 4) !== 116 || s.charCodeAt(length - 5) !== 111 || s.charCodeAt(length - 6) !== 114 || s.charCodeAt(length - 7) !== 112 || s.charCodeAt(length - 8) !== 95 || s.charCodeAt(length - 9) !== 95) { + return false; + } + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36) { + return false; + } + } + return true; + } + function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports2.compareByOriginalPositions = compareByOriginalPositions; + function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports2.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + if (aStr1 === null) { + return 1; + } + if (aStr2 === null) { + return -1; + } + if (aStr1 > aStr2) { + return 1; + } + return -1; + } + function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + return strcmp(mappingA.name, mappingB.name); + } + exports2.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, "")); + } + exports2.parseSourceMapInput = parseSourceMapInput; + function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ""; + if (sourceRoot) { + if (sourceRoot[sourceRoot.length - 1] !== "/" && sourceURL[0] !== "/") { + sourceRoot += "/"; + } + sourceURL = sourceRoot + sourceURL; + } + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + var index = parsed.path.lastIndexOf("/"); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + return normalize(sourceURL); + } + exports2.computeSourceURL = computeSourceURL; + } +}); + +// node_modules/source-map/lib/array-set.js +var require_array_set2 = __commonJS({ + "node_modules/source-map/lib/array-set.js"(exports2) { + var util = require_util2(); + var has = Object.prototype.hasOwnProperty; + var hasNativeMap = typeof Map !== "undefined"; + function ArraySet() { + this._array = []; + this._set = hasNativeMap ? /* @__PURE__ */ new Map() : /* @__PURE__ */ Object.create(null); + } + ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; + }; + ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; + }; + ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } + }; + ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } + }; + ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + throw new Error('"' + aStr + '" is not in the set.'); + }; + ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error("No element indexed by " + aIdx); + }; + ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); + }; + exports2.ArraySet = ArraySet; + } +}); + +// node_modules/source-map/lib/mapping-list.js +var require_mapping_list2 = __commonJS({ + "node_modules/source-map/lib/mapping-list.js"(exports2) { + var util = require_util2(); + function generatedPositionAfter(mappingA, mappingB) { + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; + } + function MappingList() { + this._array = []; + this._sorted = true; + this._last = { generatedLine: -1, generatedColumn: 0 }; + } + MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } + }; + MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; + }; + exports2.MappingList = MappingList; + } +}); + +// node_modules/source-map/lib/source-map-generator.js +var require_source_map_generator2 = __commonJS({ + "node_modules/source-map/lib/source-map-generator.js"(exports2) { + var base64VLQ = require_base64_vlq2(); + var util = require_util2(); + var ArraySet = require_array_set2().ArraySet; + var MappingList = require_mapping_list2().MappingList; + function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, "file", null); + this._sourceRoot = util.getArg(aArgs, "sourceRoot", null); + this._skipValidation = util.getArg(aArgs, "skipValidation", false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; + } + SourceMapGenerator.prototype._version = 3; + SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot + }); + aSourceMapConsumer.eachMapping(function(mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function(sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, "generated"); + var original = util.getArg(aArgs, "original", null); + var source = util.getArg(aArgs, "source", null); + var name = util.getArg(aArgs, "name", null); + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source, + name + }); + }; + SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + if (aSourceContent != null) { + if (!this._sourcesContents) { + this._sourcesContents = /* @__PURE__ */ Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + `SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.` + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + var newSources = new ArraySet(); + var newNames = new ArraySet(); + this._mappings.unsortedForEach(function(mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source); + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + }, this); + this._sources = newSources; + this._names = newNames; + aSourceMapConsumer.sources.forEach(function(sourceFile2) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile2); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile2 = util.join(aSourceMapPath, sourceFile2); + } + if (sourceRoot != null) { + sourceFile2 = util.relative(sourceRoot, sourceFile2); + } + this.setSourceContent(sourceFile2, content); + } + }, this); + }; + SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) { + if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") { + throw new Error( + "original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values." + ); + } + if (aGenerated && "line" in aGenerated && "column" in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) { + return; + } else if (aGenerated && "line" in aGenerated && "column" in aGenerated && aOriginal && "line" in aOriginal && "column" in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) { + return; + } else { + throw new Error("Invalid mapping: " + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ""; + var next; + var mapping; + var nameIdx; + var sourceIdx; + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = ""; + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ";"; + previousGeneratedLine++; + } + } else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ","; + } + } + next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + result += next; + } + return result; + }; + SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function(source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null; + }, this); + }; + SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + return map; + }; + SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + exports2.SourceMapGenerator = SourceMapGenerator; + } +}); + +// node_modules/css-tree/lib/generator/sourceMap.js +var require_sourceMap = __commonJS({ + "node_modules/css-tree/lib/generator/sourceMap.js"(exports2, module2) { + var SourceMapGenerator = require_source_map_generator2().SourceMapGenerator; + var trackNodes = { + Atrule: true, + Selector: true, + Declaration: true + }; + module2.exports = function generateSourceMap(handlers) { + var map = new SourceMapGenerator(); + var line = 1; + var column = 0; + var generated = { + line: 1, + column: 0 + }; + var original = { + line: 0, + column: 0 + }; + var sourceMappingActive = false; + var activatedGenerated = { + line: 1, + column: 0 + }; + var activatedMapping = { + generated: activatedGenerated + }; + var handlersNode = handlers.node; + handlers.node = function(node) { + if (node.loc && node.loc.start && trackNodes.hasOwnProperty(node.type)) { + var nodeLine = node.loc.start.line; + var nodeColumn = node.loc.start.column - 1; + if (original.line !== nodeLine || original.column !== nodeColumn) { + original.line = nodeLine; + original.column = nodeColumn; + generated.line = line; + generated.column = column; + if (sourceMappingActive) { + sourceMappingActive = false; + if (generated.line !== activatedGenerated.line || generated.column !== activatedGenerated.column) { + map.addMapping(activatedMapping); + } + } + sourceMappingActive = true; + map.addMapping({ + source: node.loc.source, + original, + generated + }); + } + } + handlersNode.call(this, node); + if (sourceMappingActive && trackNodes.hasOwnProperty(node.type)) { + activatedGenerated.line = line; + activatedGenerated.column = column; + } + }; + var handlersChunk = handlers.chunk; + handlers.chunk = function(chunk) { + for (var i = 0; i < chunk.length; i++) { + if (chunk.charCodeAt(i) === 10) { + line++; + column = 0; + } else { + column++; + } + } + handlersChunk(chunk); + }; + var handlersResult = handlers.result; + handlers.result = function() { + if (sourceMappingActive) { + map.addMapping(activatedMapping); + } + return { + css: handlersResult(), + map + }; + }; + return handlers; + }; + } +}); + +// node_modules/css-tree/lib/generator/create.js +var require_create2 = __commonJS({ + "node_modules/css-tree/lib/generator/create.js"(exports2, module2) { + var sourceMap = require_sourceMap(); + var hasOwnProperty2 = Object.prototype.hasOwnProperty; + function processChildren(node, delimeter) { + var list = node.children; + var prev = null; + if (typeof delimeter !== "function") { + list.forEach(this.node, this); + } else { + list.forEach(function(node2) { + if (prev !== null) { + delimeter.call(this, prev); + } + this.node(node2); + prev = node2; + }, this); + } + } + module2.exports = function createGenerator(config) { + function processNode(node) { + if (hasOwnProperty2.call(types, node.type)) { + types[node.type].call(this, node); + } else { + throw new Error("Unknown node type: " + node.type); + } + } + var types = {}; + if (config.node) { + for (var name in config.node) { + types[name] = config.node[name].generate; + } + } + return function(node, options) { + var buffer = ""; + var handlers = { + children: processChildren, + node: processNode, + chunk: function(chunk) { + buffer += chunk; + }, + result: function() { + return buffer; + } + }; + if (options) { + if (typeof options.decorator === "function") { + handlers = options.decorator(handlers); + } + if (options.sourceMap) { + handlers = sourceMap(handlers); + } + } + handlers.node(node); + return handlers.result(); + }; + }; + } +}); + +// node_modules/css-tree/lib/convertor/create.js +var require_create3 = __commonJS({ + "node_modules/css-tree/lib/convertor/create.js"(exports2, module2) { + var List = require_List(); + module2.exports = function createConvertors(walk) { + return { + fromPlainObject: function(ast) { + walk(ast, { + enter: function(node) { + if (node.children && node.children instanceof List === false) { + node.children = new List().fromArray(node.children); + } + } + }); + return ast; + }, + toPlainObject: function(ast) { + walk(ast, { + leave: function(node) { + if (node.children && node.children instanceof List) { + node.children = node.children.toArray(); + } + } + }); + return ast; + } + }; + }; + } +}); + +// node_modules/css-tree/lib/walker/create.js +var require_create4 = __commonJS({ + "node_modules/css-tree/lib/walker/create.js"(exports2, module2) { + var hasOwnProperty2 = Object.prototype.hasOwnProperty; + var noop = function() { + }; + function ensureFunction(value) { + return typeof value === "function" ? value : noop; + } + function invokeForType(fn, type) { + return function(node, item, list) { + if (node.type === type) { + fn.call(this, node, item, list); + } + }; + } + function getWalkersFromStructure(name, nodeType) { + var structure = nodeType.structure; + var walkers = []; + for (var key in structure) { + if (hasOwnProperty2.call(structure, key) === false) { + continue; + } + var fieldTypes = structure[key]; + var walker = { + name: key, + type: false, + nullable: false + }; + if (!Array.isArray(structure[key])) { + fieldTypes = [structure[key]]; + } + for (var i = 0; i < fieldTypes.length; i++) { + var fieldType = fieldTypes[i]; + if (fieldType === null) { + walker.nullable = true; + } else if (typeof fieldType === "string") { + walker.type = "node"; + } else if (Array.isArray(fieldType)) { + walker.type = "list"; + } + } + if (walker.type) { + walkers.push(walker); + } + } + if (walkers.length) { + return { + context: nodeType.walkContext, + fields: walkers + }; + } + return null; + } + function getTypesFromConfig(config) { + var types = {}; + for (var name in config.node) { + if (hasOwnProperty2.call(config.node, name)) { + var nodeType = config.node[name]; + if (!nodeType.structure) { + throw new Error("Missed `structure` field in `" + name + "` node type definition"); + } + types[name] = getWalkersFromStructure(name, nodeType); + } + } + return types; + } + function createTypeIterator(config, reverse) { + var fields = config.fields.slice(); + var contextName = config.context; + var useContext = typeof contextName === "string"; + if (reverse) { + fields.reverse(); + } + return function(node, context, walk, walkReducer) { + var prevContextValue; + if (useContext) { + prevContextValue = context[contextName]; + context[contextName] = node; + } + for (var i = 0; i < fields.length; i++) { + var field = fields[i]; + var ref = node[field.name]; + if (!field.nullable || ref) { + if (field.type === "list") { + var breakWalk = reverse ? ref.reduceRight(walkReducer, false) : ref.reduce(walkReducer, false); + if (breakWalk) { + return true; + } + } else if (walk(ref)) { + return true; + } + } + } + if (useContext) { + context[contextName] = prevContextValue; + } + }; + } + function createFastTraveralMap(iterators) { + return { + Atrule: { + StyleSheet: iterators.StyleSheet, + Atrule: iterators.Atrule, + Rule: iterators.Rule, + Block: iterators.Block + }, + Rule: { + StyleSheet: iterators.StyleSheet, + Atrule: iterators.Atrule, + Rule: iterators.Rule, + Block: iterators.Block + }, + Declaration: { + StyleSheet: iterators.StyleSheet, + Atrule: iterators.Atrule, + Rule: iterators.Rule, + Block: iterators.Block, + DeclarationList: iterators.DeclarationList + } + }; + } + module2.exports = function createWalker(config) { + var types = getTypesFromConfig(config); + var iteratorsNatural = {}; + var iteratorsReverse = {}; + var breakWalk = Symbol("break-walk"); + var skipNode = Symbol("skip-node"); + for (var name in types) { + if (hasOwnProperty2.call(types, name) && types[name] !== null) { + iteratorsNatural[name] = createTypeIterator(types[name], false); + iteratorsReverse[name] = createTypeIterator(types[name], true); + } + } + var fastTraversalIteratorsNatural = createFastTraveralMap(iteratorsNatural); + var fastTraversalIteratorsReverse = createFastTraveralMap(iteratorsReverse); + var walk = function(root, options) { + function walkNode(node, item, list) { + var enterRet = enter.call(context, node, item, list); + if (enterRet === breakWalk) { + debugger; + return true; + } + if (enterRet === skipNode) { + return false; + } + if (iterators.hasOwnProperty(node.type)) { + if (iterators[node.type](node, context, walkNode, walkReducer)) { + return true; + } + } + if (leave.call(context, node, item, list) === breakWalk) { + return true; + } + return false; + } + var walkReducer = (ret, data, item, list) => ret || walkNode(data, item, list); + var enter = noop; + var leave = noop; + var iterators = iteratorsNatural; + var context = { + break: breakWalk, + skip: skipNode, + root, + stylesheet: null, + atrule: null, + atrulePrelude: null, + rule: null, + selector: null, + block: null, + declaration: null, + function: null + }; + if (typeof options === "function") { + enter = options; + } else if (options) { + enter = ensureFunction(options.enter); + leave = ensureFunction(options.leave); + if (options.reverse) { + iterators = iteratorsReverse; + } + if (options.visit) { + if (fastTraversalIteratorsNatural.hasOwnProperty(options.visit)) { + iterators = options.reverse ? fastTraversalIteratorsReverse[options.visit] : fastTraversalIteratorsNatural[options.visit]; + } else if (!types.hasOwnProperty(options.visit)) { + throw new Error("Bad value `" + options.visit + "` for `visit` option (should be: " + Object.keys(types).join(", ") + ")"); + } + enter = invokeForType(enter, options.visit); + leave = invokeForType(leave, options.visit); + } + } + if (enter === noop && leave === noop) { + throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function"); + } + walkNode(root); + }; + walk.break = breakWalk; + walk.skip = skipNode; + walk.find = function(ast, fn) { + var found = null; + walk(ast, function(node, item, list) { + if (fn.call(this, node, item, list)) { + found = node; + return breakWalk; + } + }); + return found; + }; + walk.findLast = function(ast, fn) { + var found = null; + walk(ast, { + reverse: true, + enter: function(node, item, list) { + if (fn.call(this, node, item, list)) { + found = node; + return breakWalk; + } + } + }); + return found; + }; + walk.findAll = function(ast, fn) { + var found = []; + walk(ast, function(node, item, list) { + if (fn.call(this, node, item, list)) { + found.push(node); + } + }); + return found; + }; + return walk; + }; + } +}); + +// node_modules/css-tree/lib/utils/clone.js +var require_clone = __commonJS({ + "node_modules/css-tree/lib/utils/clone.js"(exports2, module2) { + var List = require_List(); + module2.exports = function clone(node) { + var result = {}; + for (var key in node) { + var value = node[key]; + if (value) { + if (Array.isArray(value) || value instanceof List) { + value = value.map(clone); + } else if (value.constructor === Object) { + value = clone(value); + } + } + result[key] = value; + } + return result; + }; + } +}); + +// node_modules/css-tree/lib/syntax/config/mix.js +var require_mix = __commonJS({ + "node_modules/css-tree/lib/syntax/config/mix.js"(exports2, module2) { + var hasOwnProperty2 = Object.prototype.hasOwnProperty; + var shape = { + generic: true, + types: appendOrAssign, + atrules: { + prelude: appendOrAssignOrNull, + descriptors: appendOrAssignOrNull + }, + properties: appendOrAssign, + parseContext: assign, + scope: deepAssign, + atrule: ["parse"], + pseudo: ["parse"], + node: ["name", "structure", "parse", "generate", "walkContext"] + }; + function isObject(value) { + return value && value.constructor === Object; + } + function copy(value) { + return isObject(value) ? Object.assign({}, value) : value; + } + function assign(dest, src) { + return Object.assign(dest, src); + } + function deepAssign(dest, src) { + for (const key in src) { + if (hasOwnProperty2.call(src, key)) { + if (isObject(dest[key])) { + deepAssign(dest[key], copy(src[key])); + } else { + dest[key] = copy(src[key]); + } + } + } + return dest; + } + function append(a, b) { + if (typeof b === "string" && /^\s*\|/.test(b)) { + return typeof a === "string" ? a + b : b.replace(/^\s*\|\s*/, ""); + } + return b || null; + } + function appendOrAssign(a, b) { + if (typeof b === "string") { + return append(a, b); + } + const result = Object.assign({}, a); + for (let key in b) { + if (hasOwnProperty2.call(b, key)) { + result[key] = append(hasOwnProperty2.call(a, key) ? a[key] : void 0, b[key]); + } + } + return result; + } + function appendOrAssignOrNull(a, b) { + const result = appendOrAssign(a, b); + return !isObject(result) || Object.keys(result).length ? result : null; + } + function mix(dest, src, shape2) { + for (const key in shape2) { + if (hasOwnProperty2.call(shape2, key) === false) { + continue; + } + if (shape2[key] === true) { + if (key in src) { + if (hasOwnProperty2.call(src, key)) { + dest[key] = copy(src[key]); + } + } + } else if (shape2[key]) { + if (typeof shape2[key] === "function") { + const fn = shape2[key]; + dest[key] = fn({}, dest[key]); + dest[key] = fn(dest[key] || {}, src[key]); + } else if (isObject(shape2[key])) { + const result = {}; + for (let name in dest[key]) { + result[name] = mix({}, dest[key][name], shape2[key]); + } + for (let name in src[key]) { + result[name] = mix(result[name] || {}, src[key][name], shape2[key]); + } + dest[key] = result; + } else if (Array.isArray(shape2[key])) { + const res = {}; + const innerShape = shape2[key].reduce(function(s, k) { + s[k] = true; + return s; + }, {}); + for (const [name, value] of Object.entries(dest[key] || {})) { + res[name] = {}; + if (value) { + mix(res[name], value, innerShape); + } + } + for (const name in src[key]) { + if (hasOwnProperty2.call(src[key], name)) { + if (!res[name]) { + res[name] = {}; + } + if (src[key] && src[key][name]) { + mix(res[name], src[key][name], innerShape); + } + } + } + dest[key] = res; + } + } + } + return dest; + } + module2.exports = (dest, src) => mix(dest, src, shape); + } +}); + +// node_modules/css-tree/lib/syntax/create.js +var require_create5 = __commonJS({ + "node_modules/css-tree/lib/syntax/create.js"(exports2) { + var List = require_List(); + var SyntaxError2 = require_SyntaxError(); + var TokenStream = require_TokenStream(); + var Lexer = require_Lexer(); + var definitionSyntax = require_definition_syntax(); + var tokenize = require_tokenizer(); + var createParser = require_create(); + var createGenerator = require_create2(); + var createConvertor = require_create3(); + var createWalker = require_create4(); + var clone = require_clone(); + var names = require_names2(); + var mix = require_mix(); + function createSyntax(config) { + var parse = createParser(config); + var walk = createWalker(config); + var generate = createGenerator(config); + var convert = createConvertor(walk); + var syntax = { + List, + SyntaxError: SyntaxError2, + TokenStream, + Lexer, + vendorPrefix: names.vendorPrefix, + keyword: names.keyword, + property: names.property, + isCustomProperty: names.isCustomProperty, + definitionSyntax, + lexer: null, + createLexer: function(config2) { + return new Lexer(config2, syntax, syntax.lexer.structure); + }, + tokenize, + parse, + walk, + generate, + find: walk.find, + findLast: walk.findLast, + findAll: walk.findAll, + clone, + fromPlainObject: convert.fromPlainObject, + toPlainObject: convert.toPlainObject, + createSyntax: function(config2) { + return createSyntax(mix({}, config2)); + }, + fork: function(extension) { + var base = mix({}, config); + return createSyntax( + typeof extension === "function" ? extension(base, Object.assign) : mix(base, extension) + ); + } + }; + syntax.lexer = new Lexer({ + generic: true, + types: config.types, + atrules: config.atrules, + properties: config.properties, + node: config.node + }, syntax); + return syntax; + } + exports2.create = function(config) { + return createSyntax(mix({}, config)); + }; + } +}); + +// node_modules/mdn-data/css/at-rules.json +var require_at_rules = __commonJS({ + "node_modules/mdn-data/css/at-rules.json"(exports2, module2) { + module2.exports = { + "@charset": { + syntax: '@charset "";', + groups: [ + "CSS Charsets" + ], + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@charset" + }, + "@counter-style": { + syntax: "@counter-style {\n [ system: ; ] ||\n [ symbols: ; ] ||\n [ additive-symbols: ; ] ||\n [ negative: ; ] ||\n [ prefix: ; ] ||\n [ suffix: ; ] ||\n [ range: ; ] ||\n [ pad: ; ] ||\n [ speak-as: ; ] ||\n [ fallback: ; ]\n}", + interfaces: [ + "CSSCounterStyleRule" + ], + groups: [ + "CSS Counter Styles" + ], + descriptors: { + "additive-symbols": { + syntax: "[ && ]#", + media: "all", + initial: "n/a (required)", + percentages: "no", + computed: "asSpecified", + order: "orderOfAppearance", + status: "standard" + }, + fallback: { + syntax: "", + media: "all", + initial: "decimal", + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + negative: { + syntax: " ?", + media: "all", + initial: '"-" hyphen-minus', + percentages: "no", + computed: "asSpecified", + order: "orderOfAppearance", + status: "standard" + }, + pad: { + syntax: " && ", + media: "all", + initial: '0 ""', + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + prefix: { + syntax: "", + media: "all", + initial: '""', + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + range: { + syntax: "[ [ | infinite ]{2} ]# | auto", + media: "all", + initial: "auto", + percentages: "no", + computed: "asSpecified", + order: "orderOfAppearance", + status: "standard" + }, + "speak-as": { + syntax: "auto | bullets | numbers | words | spell-out | ", + media: "all", + initial: "auto", + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + suffix: { + syntax: "", + media: "all", + initial: '". "', + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + symbols: { + syntax: "+", + media: "all", + initial: "n/a (required)", + percentages: "no", + computed: "asSpecified", + order: "orderOfAppearance", + status: "standard" + }, + system: { + syntax: "cyclic | numeric | alphabetic | symbolic | additive | [ fixed ? ] | [ extends ]", + media: "all", + initial: "symbolic", + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + } + }, + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@counter-style" + }, + "@document": { + syntax: "@document [ | url-prefix() | domain() | media-document() | regexp() ]# {\n \n}", + interfaces: [ + "CSSGroupingRule", + "CSSConditionRule" + ], + groups: [ + "CSS Conditional Rules" + ], + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@document" + }, + "@font-face": { + syntax: "@font-face {\n [ font-family: ; ] ||\n [ src: ; ] ||\n [ unicode-range: ; ] ||\n [ font-variant: ; ] ||\n [ font-feature-settings: ; ] ||\n [ font-variation-settings: ; ] ||\n [ font-stretch: ; ] ||\n [ font-weight: ; ] ||\n [ font-style: ; ]\n}", + interfaces: [ + "CSSFontFaceRule" + ], + groups: [ + "CSS Fonts" + ], + descriptors: { + "font-display": { + syntax: "[ auto | block | swap | fallback | optional ]", + media: "visual", + percentages: "no", + initial: "auto", + computed: "asSpecified", + order: "uniqueOrder", + status: "experimental" + }, + "font-family": { + syntax: "", + media: "all", + initial: "n/a (required)", + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + "font-feature-settings": { + syntax: "normal | #", + media: "all", + initial: "normal", + percentages: "no", + computed: "asSpecified", + order: "orderOfAppearance", + status: "standard" + }, + "font-variation-settings": { + syntax: "normal | [ ]#", + media: "all", + initial: "normal", + percentages: "no", + computed: "asSpecified", + order: "orderOfAppearance", + status: "standard" + }, + "font-stretch": { + syntax: "{1,2}", + media: "all", + initial: "normal", + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + "font-style": { + syntax: "normal | italic | oblique {0,2}", + media: "all", + initial: "normal", + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + "font-weight": { + syntax: "{1,2}", + media: "all", + initial: "normal", + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + "font-variant": { + syntax: "normal | none | [ || || || || stylistic() || historical-forms || styleset(#) || character-variant(#) || swash() || ornaments() || annotation() || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || || || || ordinal || slashed-zero || || || ruby ]", + media: "all", + initial: "normal", + percentages: "no", + computed: "asSpecified", + order: "orderOfAppearance", + status: "standard" + }, + src: { + syntax: "[ [ format( # ) ]? | local( ) ]#", + media: "all", + initial: "n/a (required)", + percentages: "no", + computed: "asSpecified", + order: "orderOfAppearance", + status: "standard" + }, + "unicode-range": { + syntax: "#", + media: "all", + initial: "U+0-10FFFF", + percentages: "no", + computed: "asSpecified", + order: "orderOfAppearance", + status: "standard" + } + }, + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@font-face" + }, + "@font-feature-values": { + syntax: "@font-feature-values # {\n \n}", + interfaces: [ + "CSSFontFeatureValuesRule" + ], + groups: [ + "CSS Fonts" + ], + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@font-feature-values" + }, + "@import": { + syntax: "@import [ | ] [ ]?;", + groups: [ + "Media Queries" + ], + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@import" + }, + "@keyframes": { + syntax: "@keyframes {\n \n}", + interfaces: [ + "CSSKeyframeRule", + "CSSKeyframesRule" + ], + groups: [ + "CSS Animations" + ], + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@keyframes" + }, + "@media": { + syntax: "@media {\n \n}", + interfaces: [ + "CSSGroupingRule", + "CSSConditionRule", + "CSSMediaRule", + "CSSCustomMediaRule" + ], + groups: [ + "CSS Conditional Rules", + "Media Queries" + ], + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@media" + }, + "@namespace": { + syntax: "@namespace ? [ | ];", + groups: [ + "CSS Namespaces" + ], + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@namespace" + }, + "@page": { + syntax: "@page {\n \n}", + interfaces: [ + "CSSPageRule" + ], + groups: [ + "CSS Pages" + ], + descriptors: { + bleed: { + syntax: "auto | ", + media: [ + "visual", + "paged" + ], + initial: "auto", + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + marks: { + syntax: "none | [ crop || cross ]", + media: [ + "visual", + "paged" + ], + initial: "none", + percentages: "no", + computed: "asSpecified", + order: "orderOfAppearance", + status: "standard" + }, + size: { + syntax: "{1,2} | auto | [ || [ portrait | landscape ] ]", + media: [ + "visual", + "paged" + ], + initial: "auto", + percentages: "no", + computed: "asSpecifiedRelativeToAbsoluteLengths", + order: "orderOfAppearance", + status: "standard" + } + }, + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@page" + }, + "@property": { + syntax: "@property {\n \n}", + interfaces: [ + "CSS", + "CSSPropertyRule" + ], + groups: [ + "CSS Houdini" + ], + descriptors: { + syntax: { + syntax: "", + media: "all", + percentages: "no", + initial: "n/a (required)", + computed: "asSpecified", + order: "uniqueOrder", + status: "experimental" + }, + inherits: { + syntax: "true | false", + media: "all", + percentages: "no", + initial: "auto", + computed: "asSpecified", + order: "uniqueOrder", + status: "experimental" + }, + "initial-value": { + syntax: "", + media: "all", + initial: "n/a (required)", + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "experimental" + } + }, + status: "experimental", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@property" + }, + "@supports": { + syntax: "@supports {\n \n}", + interfaces: [ + "CSSGroupingRule", + "CSSConditionRule", + "CSSSupportsRule" + ], + groups: [ + "CSS Conditional Rules" + ], + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@supports" + }, + "@viewport": { + syntax: "@viewport {\n \n}", + interfaces: [ + "CSSViewportRule" + ], + groups: [ + "CSS Device Adaptation" + ], + descriptors: { + height: { + syntax: "{1,2}", + media: [ + "visual", + "continuous" + ], + initial: [ + "min-height", + "max-height" + ], + percentages: [ + "min-height", + "max-height" + ], + computed: [ + "min-height", + "max-height" + ], + order: "orderOfAppearance", + status: "standard" + }, + "max-height": { + syntax: "", + media: [ + "visual", + "continuous" + ], + initial: "auto", + percentages: "referToHeightOfInitialViewport", + computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", + order: "uniqueOrder", + status: "standard" + }, + "max-width": { + syntax: "", + media: [ + "visual", + "continuous" + ], + initial: "auto", + percentages: "referToWidthOfInitialViewport", + computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", + order: "uniqueOrder", + status: "standard" + }, + "max-zoom": { + syntax: "auto | | ", + media: [ + "visual", + "continuous" + ], + initial: "auto", + percentages: "the zoom factor itself", + computed: "autoNonNegativeOrPercentage", + order: "uniqueOrder", + status: "standard" + }, + "min-height": { + syntax: "", + media: [ + "visual", + "continuous" + ], + initial: "auto", + percentages: "referToHeightOfInitialViewport", + computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", + order: "uniqueOrder", + status: "standard" + }, + "min-width": { + syntax: "", + media: [ + "visual", + "continuous" + ], + initial: "auto", + percentages: "referToWidthOfInitialViewport", + computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", + order: "uniqueOrder", + status: "standard" + }, + "min-zoom": { + syntax: "auto | | ", + media: [ + "visual", + "continuous" + ], + initial: "auto", + percentages: "the zoom factor itself", + computed: "autoNonNegativeOrPercentage", + order: "uniqueOrder", + status: "standard" + }, + orientation: { + syntax: "auto | portrait | landscape", + media: [ + "visual", + "continuous" + ], + initial: "auto", + percentages: "referToSizeOfBoundingBox", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + "user-zoom": { + syntax: "zoom | fixed", + media: [ + "visual", + "continuous" + ], + initial: "zoom", + percentages: "referToSizeOfBoundingBox", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + "viewport-fit": { + syntax: "auto | contain | cover", + media: [ + "visual", + "continuous" + ], + initial: "auto", + percentages: "no", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard" + }, + width: { + syntax: "{1,2}", + media: [ + "visual", + "continuous" + ], + initial: [ + "min-width", + "max-width" + ], + percentages: [ + "min-width", + "max-width" + ], + computed: [ + "min-width", + "max-width" + ], + order: "orderOfAppearance", + status: "standard" + }, + zoom: { + syntax: "auto | | ", + media: [ + "visual", + "continuous" + ], + initial: "auto", + percentages: "the zoom factor itself", + computed: "autoNonNegativeOrPercentage", + order: "uniqueOrder", + status: "standard" + } + }, + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@viewport" + } + }; + } +}); + +// node_modules/mdn-data/css/properties.json +var require_properties = __commonJS({ + "node_modules/mdn-data/css/properties.json"(exports2, module2) { + module2.exports = { + "--*": { + syntax: "", + media: "all", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "CSS Variables" + ], + initial: "seeProse", + appliesto: "allElements", + computed: "asSpecifiedWithVarsSubstituted", + order: "perGrammar", + status: "experimental", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/--*" + }, + "-ms-accelerator": { + syntax: "false | true", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "false", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-accelerator" + }, + "-ms-block-progression": { + syntax: "tb | rl | bt | lr", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "tb", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-block-progression" + }, + "-ms-content-zoom-chaining": { + syntax: "none | chained", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "none", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-chaining" + }, + "-ms-content-zooming": { + syntax: "none | zoom", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "zoomForTheTopLevelNoneForTheRest", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zooming" + }, + "-ms-content-zoom-limit": { + syntax: "<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: [ + "-ms-content-zoom-limit-max", + "-ms-content-zoom-limit-min" + ], + groups: [ + "Microsoft Extensions" + ], + initial: [ + "-ms-content-zoom-limit-max", + "-ms-content-zoom-limit-min" + ], + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: [ + "-ms-content-zoom-limit-max", + "-ms-content-zoom-limit-min" + ], + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit" + }, + "-ms-content-zoom-limit-max": { + syntax: "", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "maxZoomFactor", + groups: [ + "Microsoft Extensions" + ], + initial: "400%", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit-max" + }, + "-ms-content-zoom-limit-min": { + syntax: "", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "minZoomFactor", + groups: [ + "Microsoft Extensions" + ], + initial: "100%", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit-min" + }, + "-ms-content-zoom-snap": { + syntax: "<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: [ + "-ms-content-zoom-snap-type", + "-ms-content-zoom-snap-points" + ], + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: [ + "-ms-content-zoom-snap-type", + "-ms-content-zoom-snap-points" + ], + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap" + }, + "-ms-content-zoom-snap-points": { + syntax: "snapInterval( , ) | snapList( # )", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "snapInterval(0%, 100%)", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap-points" + }, + "-ms-content-zoom-snap-type": { + syntax: "none | proximity | mandatory", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "none", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap-type" + }, + "-ms-filter": { + syntax: "", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: '""', + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-filter" + }, + "-ms-flow-from": { + syntax: "[ none | ]#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "none", + appliesto: "nonReplacedElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-flow-from" + }, + "-ms-flow-into": { + syntax: "[ none | ]#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "none", + appliesto: "iframeElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-flow-into" + }, + "-ms-grid-columns": { + syntax: "none | | ", + media: "visual", + inherited: false, + animationType: "simpleListOfLpcDifferenceLpc", + percentages: "referToDimensionOfContentArea", + groups: [ + "CSS Grid Layout" + ], + initial: "none", + appliesto: "gridContainers", + computed: "asSpecifiedRelativeToAbsoluteLengths", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-grid-columns" + }, + "-ms-grid-rows": { + syntax: "none | | ", + media: "visual", + inherited: false, + animationType: "simpleListOfLpcDifferenceLpc", + percentages: "referToDimensionOfContentArea", + groups: [ + "CSS Grid Layout" + ], + initial: "none", + appliesto: "gridContainers", + computed: "asSpecifiedRelativeToAbsoluteLengths", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-grid-rows" + }, + "-ms-high-contrast-adjust": { + syntax: "auto | none", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "auto", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-high-contrast-adjust" + }, + "-ms-hyphenate-limit-chars": { + syntax: "auto | {1,3}", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "auto", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-chars" + }, + "-ms-hyphenate-limit-lines": { + syntax: "no-limit | ", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "no-limit", + appliesto: "blockContainerElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-lines" + }, + "-ms-hyphenate-limit-zone": { + syntax: " | ", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "referToLineBoxWidth", + groups: [ + "Microsoft Extensions" + ], + initial: "0", + appliesto: "blockContainerElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-zone" + }, + "-ms-ime-align": { + syntax: "auto | after", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "auto", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-ime-align" + }, + "-ms-overflow-style": { + syntax: "auto | none | scrollbar | -ms-autohiding-scrollbar", + media: "interactive", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "auto", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-overflow-style" + }, + "-ms-scrollbar-3dlight-color": { + syntax: "", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "dependsOnUserAgent", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-3dlight-color" + }, + "-ms-scrollbar-arrow-color": { + syntax: "", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "ButtonText", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-arrow-color" + }, + "-ms-scrollbar-base-color": { + syntax: "", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "dependsOnUserAgent", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-base-color" + }, + "-ms-scrollbar-darkshadow-color": { + syntax: "", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "ThreeDDarkShadow", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-darkshadow-color" + }, + "-ms-scrollbar-face-color": { + syntax: "", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "ThreeDFace", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-face-color" + }, + "-ms-scrollbar-highlight-color": { + syntax: "", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "ThreeDHighlight", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-highlight-color" + }, + "-ms-scrollbar-shadow-color": { + syntax: "", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "ThreeDDarkShadow", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-shadow-color" + }, + "-ms-scrollbar-track-color": { + syntax: "", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "Scrollbar", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-track-color" + }, + "-ms-scroll-chaining": { + syntax: "chained | none", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "chained", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-chaining" + }, + "-ms-scroll-limit": { + syntax: "<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: [ + "-ms-scroll-limit-x-min", + "-ms-scroll-limit-y-min", + "-ms-scroll-limit-x-max", + "-ms-scroll-limit-y-max" + ], + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: [ + "-ms-scroll-limit-x-min", + "-ms-scroll-limit-y-min", + "-ms-scroll-limit-x-max", + "-ms-scroll-limit-y-max" + ], + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit" + }, + "-ms-scroll-limit-x-max": { + syntax: "auto | ", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "auto", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-x-max" + }, + "-ms-scroll-limit-x-min": { + syntax: "", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "0", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-x-min" + }, + "-ms-scroll-limit-y-max": { + syntax: "auto | ", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "auto", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-y-max" + }, + "-ms-scroll-limit-y-min": { + syntax: "", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "0", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-y-min" + }, + "-ms-scroll-rails": { + syntax: "none | railed", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "railed", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-rails" + }, + "-ms-scroll-snap-points-x": { + syntax: "snapInterval( , ) | snapList( # )", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "snapInterval(0px, 100%)", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-points-x" + }, + "-ms-scroll-snap-points-y": { + syntax: "snapInterval( , ) | snapList( # )", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "snapInterval(0px, 100%)", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-points-y" + }, + "-ms-scroll-snap-type": { + syntax: "none | proximity | mandatory", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "none", + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-type" + }, + "-ms-scroll-snap-x": { + syntax: "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: [ + "-ms-scroll-snap-type", + "-ms-scroll-snap-points-x" + ], + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: [ + "-ms-scroll-snap-type", + "-ms-scroll-snap-points-x" + ], + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-x" + }, + "-ms-scroll-snap-y": { + syntax: "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: [ + "-ms-scroll-snap-type", + "-ms-scroll-snap-points-y" + ], + appliesto: "nonReplacedBlockAndInlineBlockElements", + computed: [ + "-ms-scroll-snap-type", + "-ms-scroll-snap-points-y" + ], + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-y" + }, + "-ms-scroll-translation": { + syntax: "none | vertical-to-horizontal", + media: "interactive", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-translation" + }, + "-ms-text-autospace": { + syntax: "none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-text-autospace" + }, + "-ms-touch-select": { + syntax: "grippers | none", + media: "interactive", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "grippers", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-touch-select" + }, + "-ms-user-select": { + syntax: "none | element | text", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "text", + appliesto: "nonReplacedElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-user-select" + }, + "-ms-wrap-flow": { + syntax: "auto | both | start | end | maximum | clear", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "auto", + appliesto: "blockLevelElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-flow" + }, + "-ms-wrap-margin": { + syntax: "", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "0", + appliesto: "exclusionElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-margin" + }, + "-ms-wrap-through": { + syntax: "wrap | none", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Microsoft Extensions" + ], + initial: "wrap", + appliesto: "blockLevelElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-through" + }, + "-moz-appearance": { + syntax: "none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions", + "WebKit Extensions" + ], + initial: "noneButOverriddenInUserAgentCSS", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/appearance" + }, + "-moz-binding": { + syntax: " | none", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "none", + appliesto: "allElementsExceptGeneratedContentOrPseudoElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-binding" + }, + "-moz-border-bottom-colors": { + syntax: "+ | none", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-bottom-colors" + }, + "-moz-border-left-colors": { + syntax: "+ | none", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-left-colors" + }, + "-moz-border-right-colors": { + syntax: "+ | none", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-right-colors" + }, + "-moz-border-top-colors": { + syntax: "+ | none", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-top-colors" + }, + "-moz-context-properties": { + syntax: "none | [ fill | fill-opacity | stroke | stroke-opacity ]#", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "none", + appliesto: "allElementsThatCanReferenceImages", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-context-properties" + }, + "-moz-float-edge": { + syntax: "border-box | content-box | margin-box | padding-box", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "content-box", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-float-edge" + }, + "-moz-force-broken-image-icon": { + syntax: "", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "0", + appliesto: "images", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-force-broken-image-icon" + }, + "-moz-image-region": { + syntax: " | auto", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "auto", + appliesto: "xulImageElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-image-region" + }, + "-moz-orient": { + syntax: "inline | block | horizontal | vertical", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "inline", + appliesto: "anyElementEffectOnProgressAndMeter", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-orient" + }, + "-moz-outline-radius": { + syntax: "{1,4} [ / {1,4} ]?", + media: "visual", + inherited: false, + animationType: [ + "-moz-outline-radius-topleft", + "-moz-outline-radius-topright", + "-moz-outline-radius-bottomright", + "-moz-outline-radius-bottomleft" + ], + percentages: [ + "-moz-outline-radius-topleft", + "-moz-outline-radius-topright", + "-moz-outline-radius-bottomright", + "-moz-outline-radius-bottomleft" + ], + groups: [ + "Mozilla Extensions" + ], + initial: [ + "-moz-outline-radius-topleft", + "-moz-outline-radius-topright", + "-moz-outline-radius-bottomright", + "-moz-outline-radius-bottomleft" + ], + appliesto: "allElements", + computed: [ + "-moz-outline-radius-topleft", + "-moz-outline-radius-topright", + "-moz-outline-radius-bottomright", + "-moz-outline-radius-bottomleft" + ], + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius" + }, + "-moz-outline-radius-bottomleft": { + syntax: "", + media: "visual", + inherited: false, + animationType: "lpc", + percentages: "referToDimensionOfBorderBox", + groups: [ + "Mozilla Extensions" + ], + initial: "0", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomleft" + }, + "-moz-outline-radius-bottomright": { + syntax: "", + media: "visual", + inherited: false, + animationType: "lpc", + percentages: "referToDimensionOfBorderBox", + groups: [ + "Mozilla Extensions" + ], + initial: "0", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomright" + }, + "-moz-outline-radius-topleft": { + syntax: "", + media: "visual", + inherited: false, + animationType: "lpc", + percentages: "referToDimensionOfBorderBox", + groups: [ + "Mozilla Extensions" + ], + initial: "0", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topleft" + }, + "-moz-outline-radius-topright": { + syntax: "", + media: "visual", + inherited: false, + animationType: "lpc", + percentages: "referToDimensionOfBorderBox", + groups: [ + "Mozilla Extensions" + ], + initial: "0", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topright" + }, + "-moz-stack-sizing": { + syntax: "ignore | stretch-to-fit", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "stretch-to-fit", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-stack-sizing" + }, + "-moz-text-blink": { + syntax: "none | blink", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-text-blink" + }, + "-moz-user-focus": { + syntax: "ignore | normal | select-after | select-before | select-menu | select-same | select-all | none", + media: "interactive", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-user-focus" + }, + "-moz-user-input": { + syntax: "auto | none | enabled | disabled", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "auto", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-user-input" + }, + "-moz-user-modify": { + syntax: "read-only | read-write | write-only", + media: "interactive", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "read-only", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-user-modify" + }, + "-moz-window-dragging": { + syntax: "drag | no-drag", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "drag", + appliesto: "allElementsCreatingNativeWindows", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-window-dragging" + }, + "-moz-window-shadow": { + syntax: "default | menu | tooltip | sheet | none", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "Mozilla Extensions" + ], + initial: "default", + appliesto: "allElementsCreatingNativeWindows", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-window-shadow" + }, + "-webkit-appearance": { + syntax: "none | button | button-bevel | 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 | 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", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "noneButOverriddenInUserAgentCSS", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/appearance" + }, + "-webkit-border-before": { + syntax: "<'border-width'> || <'border-style'> || <'color'>", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: [ + "-webkit-border-before-width" + ], + groups: [ + "WebKit Extensions" + ], + initial: [ + "border-width", + "border-style", + "color" + ], + appliesto: "allElements", + computed: [ + "border-width", + "border-style", + "color" + ], + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-border-before" + }, + "-webkit-border-before-color": { + syntax: "<'color'>", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "currentcolor", + appliesto: "allElements", + computed: "computedColor", + order: "uniqueOrder", + status: "nonstandard" + }, + "-webkit-border-before-style": { + syntax: "<'border-style'>", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard" + }, + "-webkit-border-before-width": { + syntax: "<'border-width'>", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "logicalWidthOfContainingBlock", + groups: [ + "WebKit Extensions" + ], + initial: "medium", + appliesto: "allElements", + computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden", + order: "uniqueOrder", + status: "nonstandard" + }, + "-webkit-box-reflect": { + syntax: "[ above | below | right | left ]? ? ?", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-box-reflect" + }, + "-webkit-line-clamp": { + syntax: "none | ", + media: "visual", + inherited: false, + animationType: "byComputedValueType", + percentages: "no", + groups: [ + "WebKit Extensions", + "CSS Overflow" + ], + initial: "none", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-line-clamp" + }, + "-webkit-mask": { + syntax: "[ || [ / ]? || || [ | border | padding | content | text ] || [ | border | padding | content ] ]#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: [ + "-webkit-mask-image", + "-webkit-mask-repeat", + "-webkit-mask-attachment", + "-webkit-mask-position", + "-webkit-mask-origin", + "-webkit-mask-clip" + ], + appliesto: "allElements", + computed: [ + "-webkit-mask-image", + "-webkit-mask-repeat", + "-webkit-mask-attachment", + "-webkit-mask-position", + "-webkit-mask-origin", + "-webkit-mask-clip" + ], + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask" + }, + "-webkit-mask-attachment": { + syntax: "#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "scroll", + appliesto: "allElements", + computed: "asSpecified", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-attachment" + }, + "-webkit-mask-clip": { + syntax: "[ | border | padding | content | text ]#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "border", + appliesto: "allElements", + computed: "asSpecified", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-clip" + }, + "-webkit-mask-composite": { + syntax: "#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "source-over", + appliesto: "allElements", + computed: "asSpecified", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-composite" + }, + "-webkit-mask-image": { + syntax: "#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "none", + appliesto: "allElements", + computed: "absoluteURIOrNone", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-image" + }, + "-webkit-mask-origin": { + syntax: "[ | border | padding | content ]#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "padding", + appliesto: "allElements", + computed: "asSpecified", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-origin" + }, + "-webkit-mask-position": { + syntax: "#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "referToSizeOfElement", + groups: [ + "WebKit Extensions" + ], + initial: "0% 0%", + appliesto: "allElements", + computed: "absoluteLengthOrPercentage", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-position" + }, + "-webkit-mask-position-x": { + syntax: "[ | left | center | right ]#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "referToSizeOfElement", + groups: [ + "WebKit Extensions" + ], + initial: "0%", + appliesto: "allElements", + computed: "absoluteLengthOrPercentage", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-x" + }, + "-webkit-mask-position-y": { + syntax: "[ | top | center | bottom ]#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "referToSizeOfElement", + groups: [ + "WebKit Extensions" + ], + initial: "0%", + appliesto: "allElements", + computed: "absoluteLengthOrPercentage", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-y" + }, + "-webkit-mask-repeat": { + syntax: "#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "repeat", + appliesto: "allElements", + computed: "asSpecified", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-repeat" + }, + "-webkit-mask-repeat-x": { + syntax: "repeat | no-repeat | space | round", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "repeat", + appliesto: "allElements", + computed: "asSpecified", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-x" + }, + "-webkit-mask-repeat-y": { + syntax: "repeat | no-repeat | space | round", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "repeat", + appliesto: "allElements", + computed: "absoluteLengthOrPercentage", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-y" + }, + "-webkit-mask-size": { + syntax: "#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "relativeToBackgroundPositioningArea", + groups: [ + "WebKit Extensions" + ], + initial: "auto auto", + appliesto: "allElements", + computed: "asSpecified", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-size" + }, + "-webkit-overflow-scrolling": { + syntax: "auto | touch", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "auto", + appliesto: "scrollingBoxes", + computed: "asSpecified", + order: "orderOfAppearance", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-overflow-scrolling" + }, + "-webkit-tap-highlight-color": { + syntax: "", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "black", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-tap-highlight-color" + }, + "-webkit-text-fill-color": { + syntax: "", + media: "visual", + inherited: true, + animationType: "color", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "currentcolor", + appliesto: "allElements", + computed: "computedColor", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-fill-color" + }, + "-webkit-text-stroke": { + syntax: " || ", + media: "visual", + inherited: true, + animationType: [ + "-webkit-text-stroke-width", + "-webkit-text-stroke-color" + ], + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: [ + "-webkit-text-stroke-width", + "-webkit-text-stroke-color" + ], + appliesto: "allElements", + computed: [ + "-webkit-text-stroke-width", + "-webkit-text-stroke-color" + ], + order: "canonicalOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke" + }, + "-webkit-text-stroke-color": { + syntax: "", + media: "visual", + inherited: true, + animationType: "color", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "currentcolor", + appliesto: "allElements", + computed: "computedColor", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-color" + }, + "-webkit-text-stroke-width": { + syntax: "", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "0", + appliesto: "allElements", + computed: "absoluteLength", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-width" + }, + "-webkit-touch-callout": { + syntax: "default | none", + media: "visual", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "default", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-touch-callout" + }, + "-webkit-user-modify": { + syntax: "read-only | read-write | read-write-plaintext-only", + media: "interactive", + inherited: true, + animationType: "discrete", + percentages: "no", + groups: [ + "WebKit Extensions" + ], + initial: "read-only", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "nonstandard" + }, + "align-content": { + syntax: "normal | | | ? ", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "CSS Box Alignment" + ], + initial: "normal", + appliesto: "multilineFlexContainers", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-content" + }, + "align-items": { + syntax: "normal | stretch | | [ ? ]", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "CSS Box Alignment" + ], + initial: "normal", + appliesto: "allElements", + computed: "asSpecified", + order: "uniqueOrder", + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-items" + }, + "align-self": { + syntax: "auto | normal | stretch | | ? ", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "CSS Box Alignment" + ], + initial: "auto", + appliesto: "flexItemsGridItemsAndAbsolutelyPositionedBoxes", + computed: "autoOnAbsolutelyPositionedElementsValueOfAlignItemsOnParent", + order: "uniqueOrder", + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-self" + }, + "align-tracks": { + syntax: "[ normal | | | ? ]#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "CSS Grid Layout" + ], + initial: "normal", + appliesto: "gridContainersWithMasonryLayoutInTheirBlockAxis", + computed: "asSpecified", + order: "uniqueOrder", + status: "experimental", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-tracks" + }, + all: { + syntax: "initial | inherit | unset | revert", + media: "noPracticalMedia", + inherited: false, + animationType: "eachOfShorthandPropertiesExceptUnicodeBiDiAndDirection", + percentages: "no", + groups: [ + "CSS Miscellaneous" + ], + initial: "noPracticalInitialValue", + appliesto: "allElements", + computed: "asSpecifiedAppliesToEachProperty", + order: "uniqueOrder", + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/all" + }, + animation: { + syntax: "#", + media: "visual", + inherited: false, + animationType: "discrete", + percentages: "no", + groups: [ + "CSS Animations" + ], + initial: [ + "animation-name", + "animation-duration", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "animation-fill-mode", + "animation-play-state" + ], + appliesto: "allElementsAndPseudos", + computed: [ + "animation-name", + "animation-duration", + "animation-timing-function", + "animation-delay", + "animation-direction", + "animation-iteration-count", + "animation-fill-mode", + "animation-play-state" + ], + order: "orderOfAppearance", + status: "standard", + mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation" + }, + "animation-delay": { + syntax: "