diff --git a/node_modules/.bin/acorn b/node_modules/.bin/acorn
deleted file mode 120000
index cf76760..0000000
--- a/node_modules/.bin/acorn
+++ /dev/null
@@ -1 +0,0 @@
-../acorn/bin/acorn
\ No newline at end of file
diff --git a/node_modules/.bin/escodegen b/node_modules/.bin/escodegen
deleted file mode 120000
index 01a7c32..0000000
--- a/node_modules/.bin/escodegen
+++ /dev/null
@@ -1 +0,0 @@
-../escodegen/bin/escodegen.js
\ No newline at end of file
diff --git a/node_modules/.bin/esgenerate b/node_modules/.bin/esgenerate
deleted file mode 120000
index 7d0293e..0000000
--- a/node_modules/.bin/esgenerate
+++ /dev/null
@@ -1 +0,0 @@
-../escodegen/bin/esgenerate.js
\ No newline at end of file
diff --git a/node_modules/.bin/esparse b/node_modules/.bin/esparse
deleted file mode 120000
index 7423b18..0000000
--- a/node_modules/.bin/esparse
+++ /dev/null
@@ -1 +0,0 @@
-../esprima/bin/esparse.js
\ No newline at end of file
diff --git a/node_modules/.bin/esvalidate b/node_modules/.bin/esvalidate
deleted file mode 120000
index 16069ef..0000000
--- a/node_modules/.bin/esvalidate
+++ /dev/null
@@ -1 +0,0 @@
-../esprima/bin/esvalidate.js
\ No newline at end of file
diff --git a/node_modules/.bin/sshpk-conv b/node_modules/.bin/sshpk-conv
deleted file mode 120000
index a2a295c..0000000
--- a/node_modules/.bin/sshpk-conv
+++ /dev/null
@@ -1 +0,0 @@
-../sshpk/bin/sshpk-conv
\ No newline at end of file
diff --git a/node_modules/.bin/sshpk-sign b/node_modules/.bin/sshpk-sign
deleted file mode 120000
index 766b9b3..0000000
--- a/node_modules/.bin/sshpk-sign
+++ /dev/null
@@ -1 +0,0 @@
-../sshpk/bin/sshpk-sign
\ No newline at end of file
diff --git a/node_modules/.bin/sshpk-verify b/node_modules/.bin/sshpk-verify
deleted file mode 120000
index bfd7e3a..0000000
--- a/node_modules/.bin/sshpk-verify
+++ /dev/null
@@ -1 +0,0 @@
-../sshpk/bin/sshpk-verify
\ No newline at end of file
diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid
deleted file mode 120000
index b3e45bc..0000000
--- a/node_modules/.bin/uuid
+++ /dev/null
@@ -1 +0,0 @@
-../uuid/bin/uuid
\ No newline at end of file
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
deleted file mode 100644
index 5fc7a8e..0000000
--- a/node_modules/.package-lock.json
+++ /dev/null
@@ -1,987 +0,0 @@
-{
- "name": "AICyclingCoach",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "node_modules/@react-leaflet/core": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz",
- "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==",
- "peerDependencies": {
- "leaflet": "^1.9.0",
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
- }
- },
- "node_modules/abab": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
- "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
- "deprecated": "Use your platform's native atob() and btoa() methods instead"
- },
- "node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-globals": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz",
- "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
- "dependencies": {
- "acorn": "^6.0.1",
- "acorn-walk": "^6.0.1"
- }
- },
- "node_modules/acorn-globals/node_modules/acorn": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
- "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-walk": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
- "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/array-equal": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.2.tgz",
- "integrity": "sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==",
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/asn1": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
- "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
- "dependencies": {
- "safer-buffer": "~2.1.0"
- }
- },
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "node_modules/aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/aws4": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz",
- "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw=="
- },
- "node_modules/bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
- "dependencies": {
- "tweetnacl": "^0.14.3"
- }
- },
- "node_modules/browser-process-hrtime": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
- },
- "node_modules/caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
- },
- "node_modules/clsx": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
- "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
- },
- "node_modules/cssom": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
- "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw=="
- },
- "node_modules/cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
- "dependencies": {
- "cssom": "~0.3.6"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cssstyle/node_modules/cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
- },
- "node_modules/dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
- "dependencies": {
- "assert-plus": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/data-urls": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz",
- "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
- "dependencies": {
- "abab": "^2.0.0",
- "whatwg-mimetype": "^2.2.0",
- "whatwg-url": "^7.0.0"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/domexception": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
- "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
- "deprecated": "Use your platform's native DOMException instead",
- "dependencies": {
- "webidl-conversions": "^4.0.2"
- }
- },
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
- "dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "node_modules/escodegen": {
- "version": "1.14.3",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
- "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
- "dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=4.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
- "engines": [
- "node >=0.6.0"
- ]
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
- },
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
- },
- "node_modules/getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
- "dependencies": {
- "assert-plus": "^1.0.0"
- }
- },
- "node_modules/gpxparser": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/gpxparser/-/gpxparser-3.0.8.tgz",
- "integrity": "sha512-rXKrDQoXUHz7wZ+Q/C9EbzGNaRLGeEC3uT/KGMPOj3pCHXEJfKWYxVsd+WjVEyivuVsjJib7eR1H/BBO8USUgA==",
- "dependencies": {
- "jsdom": "^15.2.1",
- "jsdom-global": "^3.0.2"
- }
- },
- "node_modules/har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "deprecated": "this library is no longer supported",
- "dependencies": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/html-encoding-sniffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
- "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
- "dependencies": {
- "whatwg-encoding": "^1.0.1"
- }
- },
- "node_modules/http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
- "dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
- "engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ip-regex": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
- "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
- },
- "node_modules/isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
- },
- "node_modules/jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
- },
- "node_modules/jsdom": {
- "version": "15.2.1",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz",
- "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==",
- "dependencies": {
- "abab": "^2.0.0",
- "acorn": "^7.1.0",
- "acorn-globals": "^4.3.2",
- "array-equal": "^1.0.0",
- "cssom": "^0.4.1",
- "cssstyle": "^2.0.0",
- "data-urls": "^1.1.0",
- "domexception": "^1.0.1",
- "escodegen": "^1.11.1",
- "html-encoding-sniffer": "^1.0.2",
- "nwsapi": "^2.2.0",
- "parse5": "5.1.0",
- "pn": "^1.1.0",
- "request": "^2.88.0",
- "request-promise-native": "^1.0.7",
- "saxes": "^3.1.9",
- "symbol-tree": "^3.2.2",
- "tough-cookie": "^3.0.1",
- "w3c-hr-time": "^1.0.1",
- "w3c-xmlserializer": "^1.1.2",
- "webidl-conversions": "^4.0.2",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^7.0.0",
- "ws": "^7.0.0",
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "peerDependencies": {
- "canvas": "^2.5.0"
- },
- "peerDependenciesMeta": {
- "canvas": {
- "optional": true
- }
- }
- },
- "node_modules/jsdom-global": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz",
- "integrity": "sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==",
- "peerDependencies": {
- "jsdom": ">=10.0.0"
- }
- },
- "node_modules/json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
- },
- "node_modules/jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/leaflet": {
- "version": "1.9.4",
- "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz",
- "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA=="
- },
- "node_modules/levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
- "dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/nwsapi": {
- "version": "2.2.22",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz",
- "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ=="
- },
- "node_modules/oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/parse5": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
- "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ=="
- },
- "node_modules/performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
- },
- "node_modules/pn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
- "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA=="
- },
- "node_modules/prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/psl": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",
- "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==",
- "dependencies": {
- "punycode": "^2.3.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/lupomontero"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/react-leaflet": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz",
- "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==",
- "dependencies": {
- "@react-leaflet/core": "^2.1.0"
- },
- "peerDependencies": {
- "leaflet": "^1.9.0",
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
- }
- },
- "node_modules/react-toastify": {
- "version": "11.0.5",
- "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-11.0.5.tgz",
- "integrity": "sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==",
- "dependencies": {
- "clsx": "^2.1.1"
- },
- "peerDependencies": {
- "react": "^18 || ^19",
- "react-dom": "^18 || ^19"
- }
- },
- "node_modules/request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
- "dependencies": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/request-promise-core": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
- "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
- "dependencies": {
- "lodash": "^4.17.19"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "peerDependencies": {
- "request": "^2.34"
- }
- },
- "node_modules/request-promise-native": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz",
- "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
- "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142",
- "dependencies": {
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- },
- "engines": {
- "node": ">=0.12.0"
- },
- "peerDependencies": {
- "request": "^2.34"
- }
- },
- "node_modules/request-promise-native/node_modules/tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dependencies": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/request/node_modules/tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dependencies": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "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/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/saxes": {
- "version": "3.1.11",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz",
- "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==",
- "dependencies": {
- "xmlchars": "^2.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sshpk": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
- "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==",
- "dependencies": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "bin": {
- "sshpk-conv": "bin/sshpk-conv",
- "sshpk-sign": "bin/sshpk-sign",
- "sshpk-verify": "bin/sshpk-verify"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stealthy-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
- },
- "node_modules/tough-cookie": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
- "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
- "dependencies": {
- "ip-regex": "^2.1.0",
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
- },
- "node_modules/type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
- "dependencies": {
- "prelude-ls": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
- "engines": [
- "node >=0.6.0"
- ],
- "dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "node_modules/w3c-hr-time": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
- "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
- "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
- "dependencies": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "node_modules/w3c-xmlserializer": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz",
- "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==",
- "dependencies": {
- "domexception": "^1.0.1",
- "webidl-conversions": "^4.0.2",
- "xml-name-validator": "^3.0.0"
- }
- },
- "node_modules/webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
- },
- "node_modules/whatwg-encoding": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "dependencies": {
- "iconv-lite": "0.4.24"
- }
- },
- "node_modules/whatwg-mimetype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g=="
- },
- "node_modules/whatwg-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dependencies": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
- "node_modules/word-wrap": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
- "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ws": {
- "version": "7.5.10",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
- "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xml-name-validator": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
- },
- "node_modules/xmlchars": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
- }
- }
-}
diff --git a/node_modules/@react-leaflet/core/LICENSE.md b/node_modules/@react-leaflet/core/LICENSE.md
deleted file mode 100644
index e5faf96..0000000
--- a/node_modules/@react-leaflet/core/LICENSE.md
+++ /dev/null
@@ -1,33 +0,0 @@
-@react-leaflet/core Copyright 2020 Paul Le Cam and contributors (“Licensor”)
-
-Hippocratic License Version Number: 2.1.
-
-Purpose. The purpose of this License is for the Licensor named above to permit the Licensee (as defined below) broad permission, if consistent with Human Rights Laws and Human Rights Principles (as each is defined below), to use and work with the Software (as defined below) within the full scope of Licensor’s copyright and patent rights, if any, in the Software, while ensuring attribution and protecting the Licensor from liability.
-
-Permission and Conditions. The Licensor grants permission by this license (“License”), free of charge, to the extent of Licensor’s rights under applicable copyright and patent law, to any person or entity (the “Licensee”) obtaining a copy of this software and associated documentation files (the “Software”), to do everything with the Software that would otherwise infringe (i) the Licensor’s copyright in the Software or (ii) any patent claims to the Software that the Licensor can license or becomes able to license, subject to all of the following terms and conditions:
-
-- Acceptance. This License is automatically offered to every person and entity subject to its terms and conditions. Licensee accepts this License and agrees to its terms and conditions by taking any action with the Software that, absent this License, would infringe any intellectual property right held by Licensor.
-
-- Notice. Licensee must ensure that everyone who gets a copy of any part of this Software from Licensee, with or without changes, also receives the License and the above copyright notice (and if included by the Licensor, patent, trademark and attribution notice). Licensee must cause any modified versions of the Software to carry prominent notices stating that Licensee changed the Software. For clarity, although Licensee is free to create modifications of the Software and distribute only the modified portion created by Licensee with additional or different terms, the portion of the Software not modified must be distributed pursuant to this License. If anyone notifies Licensee in writing that Licensee has not complied with this Notice section, Licensee can keep this License by taking all practical steps to comply within 30 days after the notice. If Licensee does not do so, Licensee’s License (and all rights licensed hereunder) shall end immediately.
-
-- Compliance with Human Rights Principles and Human Rights Laws.
-
- 1. Human Rights Principles.
-
- (a) Licensee is advised to consult the articles of the United Nations Universal Declaration of Human Rights and the United Nations Global Compact that define recognized principles of international human rights (the “Human Rights Principles”). Licensee shall use the Software in a manner consistent with Human Rights Principles.
-
- (b) Unless the Licensor and Licensee agree otherwise, any dispute, controversy, or claim arising out of or relating to (i) Section 1(a) regarding Human Rights Principles, including the breach of Section 1(a), termination of this License for breach of the Human Rights Principles, or invalidity of Section 1(a) or (ii) a determination of whether any Law is consistent or in conflict with Human Rights Principles pursuant to Section 2, below, shall be settled by arbitration in accordance with the Hague Rules on Business and Human Rights Arbitration (the “Rules”); provided, however, that Licensee may elect not to participate in such arbitration, in which event this License (and all rights licensed hereunder) shall end immediately. The number of arbitrators shall be one unless the Rules require otherwise.
-
- Unless both the Licensor and Licensee agree to the contrary: (1) All documents and information concerning the arbitration shall be public and may be disclosed by any party; (2) The repository referred to under Article 43 of the Rules shall make available to the public in a timely manner all documents concerning the arbitration which are communicated to it, including all submissions of the parties, all evidence admitted into the record of the proceedings, all transcripts or other recordings of hearings and all orders, decisions and awards of the arbitral tribunal, subject only to the arbitral tribunal's powers to take such measures as may be necessary to safeguard the integrity of the arbitral process pursuant to Articles 18, 33, 41 and 42 of the Rules; and (3) Article 26(6) of the Rules shall not apply.
-
- 2. Human Rights Laws. The Software shall not be used by any person or entity for any systems, activities, or other uses that violate any Human Rights Laws. “Human Rights Laws” means any applicable laws, regulations, or rules (collectively, “Laws”) that protect human, civil, labor, privacy, political, environmental, security, economic, due process, or similar rights; provided, however, that such Laws are consistent and not in conflict with Human Rights Principles (a dispute over the consistency or a conflict between Laws and Human Rights Principles shall be determined by arbitration as stated above). Where the Human Rights Laws of more than one jurisdiction are applicable or in conflict with respect to the use of the Software, the Human Rights Laws that are most protective of the individuals or groups harmed shall apply.
-
- 3. Indemnity. Licensee shall hold harmless and indemnify Licensor (and any other contributor) against all losses, damages, liabilities, deficiencies, claims, actions, judgments, settlements, interest, awards, penalties, fines, costs, or expenses of whatever kind, including Licensor’s reasonable attorneys’ fees, arising out of or relating to Licensee’s use of the Software in violation of Human Rights Laws or Human Rights Principles.
-
-- Failure to Comply. Any failure of Licensee to act according to the terms and conditions of this License is both a breach of the License and an infringement of the intellectual property rights of the Licensor (subject to exceptions under Laws, e.g., fair use). In the event of a breach or infringement, the terms and conditions of this License may be enforced by Licensor under the Laws of any jurisdiction to which Licensee is subject. Licensee also agrees that the Licensor may enforce the terms and conditions of this License against Licensee through specific performance (or similar remedy under Laws) to the extent permitted by Laws. For clarity, except in the event of a breach of this License, infringement, or as otherwise stated in this License, Licensor may not terminate this License with Licensee.
-
-- Enforceability and Interpretation. If any term or provision of this License is determined to be invalid, illegal, or unenforceable by a court of competent jurisdiction, then such invalidity, illegality, or unenforceability shall not affect any other term or provision of this License or invalidate or render unenforceable such term or provision in any other jurisdiction; provided, however, subject to a court modification pursuant to the immediately following sentence, if any term or provision of this License pertaining to Human Rights Laws or Human Rights Principles is deemed invalid, illegal, or unenforceable against Licensee by a court of competent jurisdiction, all rights in the Software granted to Licensee shall be deemed null and void as between Licensor and Licensee. Upon a determination that any term or provision is invalid, illegal, or unenforceable, to the extent permitted by Laws, the court may modify this License to affect the original purpose that the Software be used in compliance with Human Rights Principles and Human Rights Laws as closely as possible. The language in this License shall be interpreted as to its fair meaning and not strictly for or against any party.
-
-- Disclaimer. TO THE FULL EXTENT ALLOWED BY LAW, THIS SOFTWARE COMES “AS IS,” WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED, AND LICENSOR AND ANY OTHER CONTRIBUTOR SHALL NOT BE LIABLE TO ANYONE FOR ANY DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THIS LICENSE, UNDER ANY KIND OF LEGAL CLAIM.
-
-This Hippocratic License is an Ethical Source license (https://ethicalsource.dev) and is offered for use by licensors and licensees at their own risk, on an “AS IS” basis, and with no warranties express or implied, to the maximum extent permitted by Laws.
diff --git a/node_modules/@react-leaflet/core/README.md b/node_modules/@react-leaflet/core/README.md
deleted file mode 100644
index 2c689b3..0000000
--- a/node_modules/@react-leaflet/core/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# React Leaflet core
-
-[Documentation](https://react-leaflet.js.org/docs/core-introduction)
diff --git a/node_modules/@react-leaflet/core/lib/attribution.d.ts b/node_modules/@react-leaflet/core/lib/attribution.d.ts
deleted file mode 100644
index 8907251..0000000
--- a/node_modules/@react-leaflet/core/lib/attribution.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import type { Map } from 'leaflet';
-export declare function useAttribution(map: Map, attribution: string | null | undefined): void;
diff --git a/node_modules/@react-leaflet/core/lib/attribution.js b/node_modules/@react-leaflet/core/lib/attribution.js
deleted file mode 100644
index bce46ab..0000000
--- a/node_modules/@react-leaflet/core/lib/attribution.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { useEffect, useRef } from 'react';
-export function useAttribution(map, attribution) {
- const attributionRef = useRef(attribution);
- useEffect(function updateAttribution() {
- if (attribution !== attributionRef.current && map.attributionControl != null) {
- if (attributionRef.current != null) {
- map.attributionControl.removeAttribution(attributionRef.current);
- }
- if (attribution != null) {
- map.attributionControl.addAttribution(attribution);
- }
- }
- attributionRef.current = attribution;
- }, [
- map,
- attribution
- ]);
-}
diff --git a/node_modules/@react-leaflet/core/lib/circle.d.ts b/node_modules/@react-leaflet/core/lib/circle.d.ts
deleted file mode 100644
index 39910d5..0000000
--- a/node_modules/@react-leaflet/core/lib/circle.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import type { Circle as LeafletCircle, CircleMarker as LeafletCircleMarker, CircleMarkerOptions, CircleOptions, LatLngExpression } from 'leaflet';
-import type { ReactNode } from 'react';
-import type { PathProps } from './path.js';
-export interface CircleMarkerProps extends CircleMarkerOptions, PathProps {
- center: LatLngExpression;
- children?: ReactNode;
-}
-export interface CircleProps extends CircleOptions, PathProps {
- center: LatLngExpression;
- children?: ReactNode;
-}
-export declare function updateCircle
(layer: LeafletCircle
| LeafletCircleMarker
, props: P, prevProps: P): void;
diff --git a/node_modules/@react-leaflet/core/lib/circle.js b/node_modules/@react-leaflet/core/lib/circle.js
deleted file mode 100644
index f5e20ae..0000000
--- a/node_modules/@react-leaflet/core/lib/circle.js
+++ /dev/null
@@ -1,8 +0,0 @@
-export function updateCircle(layer, props, prevProps) {
- if (props.center !== prevProps.center) {
- layer.setLatLng(props.center);
- }
- if (props.radius != null && props.radius !== prevProps.radius) {
- layer.setRadius(props.radius);
- }
-}
diff --git a/node_modules/@react-leaflet/core/lib/component.d.ts b/node_modules/@react-leaflet/core/lib/component.d.ts
deleted file mode 100644
index c67a870..0000000
--- a/node_modules/@react-leaflet/core/lib/component.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import React, { type MutableRefObject, type ReactNode } from 'react';
-import type { DivOverlay, DivOverlayHook } from './div-overlay.js';
-import type { LeafletElement } from './element.js';
-declare type ElementHook = (props: P) => MutableRefObject>;
-export declare type PropsWithChildren = {
- children?: ReactNode;
-};
-export declare function createContainerComponent(useElement: ElementHook): React.ForwardRefExoticComponent & React.RefAttributes>;
-export declare function createDivOverlayComponent(useElement: ReturnType>): React.ForwardRefExoticComponent & React.RefAttributes>;
-export declare function createLeafComponent(useElement: ElementHook): React.ForwardRefExoticComponent & React.RefAttributes>;
-export {};
diff --git a/node_modules/@react-leaflet/core/lib/component.js b/node_modules/@react-leaflet/core/lib/component.js
deleted file mode 100644
index d0c92b4..0000000
--- a/node_modules/@react-leaflet/core/lib/component.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react';
-import { createPortal } from 'react-dom';
-import { LeafletProvider } from './context.js';
-export function createContainerComponent(useElement) {
- function ContainerComponent(props, forwardedRef) {
- const { instance , context } = useElement(props).current;
- useImperativeHandle(forwardedRef, ()=>instance);
- return props.children == null ? null : /*#__PURE__*/ React.createElement(LeafletProvider, {
- value: context
- }, props.children);
- }
- return /*#__PURE__*/ forwardRef(ContainerComponent);
-}
-export function createDivOverlayComponent(useElement) {
- function OverlayComponent(props, forwardedRef) {
- const [isOpen, setOpen] = useState(false);
- const { instance } = useElement(props, setOpen).current;
- useImperativeHandle(forwardedRef, ()=>instance);
- useEffect(function updateOverlay() {
- if (isOpen) {
- instance.update();
- }
- }, [
- instance,
- isOpen,
- props.children
- ]);
- // @ts-ignore _contentNode missing in type definition
- const contentNode = instance._contentNode;
- return contentNode ? /*#__PURE__*/ createPortal(props.children, contentNode) : null;
- }
- return /*#__PURE__*/ forwardRef(OverlayComponent);
-}
-export function createLeafComponent(useElement) {
- function LeafComponent(props, forwardedRef) {
- const { instance } = useElement(props).current;
- useImperativeHandle(forwardedRef, ()=>instance);
- return null;
- }
- return /*#__PURE__*/ forwardRef(LeafComponent);
-}
diff --git a/node_modules/@react-leaflet/core/lib/context.d.ts b/node_modules/@react-leaflet/core/lib/context.d.ts
deleted file mode 100644
index f280ef3..0000000
--- a/node_modules/@react-leaflet/core/lib/context.d.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-///
-import type { Control, Layer, LayerGroup, Map } from 'leaflet';
-export declare const CONTEXT_VERSION = 1;
-export declare type ControlledLayer = {
- addLayer(layer: Layer): void;
- removeLayer(layer: Layer): void;
-};
-export declare type LeafletContextInterface = Readonly<{
- __version: number;
- map: Map;
- layerContainer?: ControlledLayer | LayerGroup;
- layersControl?: Control.Layers;
- overlayContainer?: Layer;
- pane?: string;
-}>;
-export declare function createLeafletContext(map: Map): LeafletContextInterface;
-export declare function extendContext(source: LeafletContextInterface, extra: Partial): LeafletContextInterface;
-export declare const LeafletContext: import("react").Context | ControlledLayer | undefined;
- layersControl?: Control.Layers | undefined;
- overlayContainer?: Layer | undefined;
- pane?: string | undefined;
-}> | null>;
-export declare const LeafletProvider: import("react").Provider | ControlledLayer | undefined;
- layersControl?: Control.Layers | undefined;
- overlayContainer?: Layer | undefined;
- pane?: string | undefined;
-}> | null>;
-export declare function useLeafletContext(): LeafletContextInterface;
diff --git a/node_modules/@react-leaflet/core/lib/context.js b/node_modules/@react-leaflet/core/lib/context.js
deleted file mode 100644
index cf4d48e..0000000
--- a/node_modules/@react-leaflet/core/lib/context.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import { createContext, useContext } from 'react';
-export const CONTEXT_VERSION = 1;
-export function createLeafletContext(map) {
- return Object.freeze({
- __version: CONTEXT_VERSION,
- map
- });
-}
-export function extendContext(source, extra) {
- return Object.freeze({
- ...source,
- ...extra
- });
-}
-export const LeafletContext = createContext(null);
-export const LeafletProvider = LeafletContext.Provider;
-export function useLeafletContext() {
- const context = useContext(LeafletContext);
- if (context == null) {
- throw new Error('No context provided: useLeafletContext() can only be used in a descendant of ');
- }
- return context;
-}
diff --git a/node_modules/@react-leaflet/core/lib/control.d.ts b/node_modules/@react-leaflet/core/lib/control.d.ts
deleted file mode 100644
index 8a3cd3c..0000000
--- a/node_modules/@react-leaflet/core/lib/control.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Control, type ControlOptions } from 'leaflet';
-import type { ElementHook } from './element.js';
-export declare function createControlHook(useElement: ElementHook): (props: P) => ReturnType>;
diff --git a/node_modules/@react-leaflet/core/lib/control.js b/node_modules/@react-leaflet/core/lib/control.js
deleted file mode 100644
index 4452b59..0000000
--- a/node_modules/@react-leaflet/core/lib/control.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import { useEffect, useRef } from 'react';
-import { useLeafletContext } from './context.js';
-export function createControlHook(useElement) {
- return function useLeafletControl(props) {
- const context = useLeafletContext();
- const elementRef = useElement(props, context);
- const { instance } = elementRef.current;
- const positionRef = useRef(props.position);
- const { position } = props;
- useEffect(function addControl() {
- instance.addTo(context.map);
- return function removeControl() {
- instance.remove();
- };
- }, [
- context.map,
- instance
- ]);
- useEffect(function updateControl() {
- if (position != null && position !== positionRef.current) {
- instance.setPosition(position);
- positionRef.current = position;
- }
- }, [
- instance,
- position
- ]);
- return elementRef;
- };
-}
diff --git a/node_modules/@react-leaflet/core/lib/div-overlay.d.ts b/node_modules/@react-leaflet/core/lib/div-overlay.d.ts
deleted file mode 100644
index acae67c..0000000
--- a/node_modules/@react-leaflet/core/lib/div-overlay.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import type { Popup, Tooltip } from 'leaflet';
-import { type LeafletContextInterface } from './context.js';
-import type { LeafletElement, ElementHook } from './element.js';
-import type { LayerProps } from './layer.js';
-export declare type DivOverlay = Popup | Tooltip;
-export declare type SetOpenFunc = (open: boolean) => void;
-export declare type DivOverlayLifecycleHook = (element: LeafletElement, context: LeafletContextInterface, props: P, setOpen: SetOpenFunc) => void;
-export declare type DivOverlayHook = (useElement: ElementHook, useLifecycle: DivOverlayLifecycleHook) => (props: P, setOpen: SetOpenFunc) => ReturnType>;
-export declare function createDivOverlayHook(useElement: ElementHook, useLifecycle: DivOverlayLifecycleHook): (props: P, setOpen: SetOpenFunc) => ReturnType>;
diff --git a/node_modules/@react-leaflet/core/lib/div-overlay.js b/node_modules/@react-leaflet/core/lib/div-overlay.js
deleted file mode 100644
index 9659511..0000000
--- a/node_modules/@react-leaflet/core/lib/div-overlay.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import { useAttribution } from './attribution.js';
-import { useLeafletContext } from './context.js';
-import { useEventHandlers } from './events.js';
-import { withPane } from './pane.js';
-export function createDivOverlayHook(useElement, useLifecycle) {
- return function useDivOverlay(props, setOpen) {
- const context = useLeafletContext();
- const elementRef = useElement(withPane(props, context), context);
- useAttribution(context.map, props.attribution);
- useEventHandlers(elementRef.current, props.eventHandlers);
- useLifecycle(elementRef.current, context, props, setOpen);
- return elementRef;
- };
-}
diff --git a/node_modules/@react-leaflet/core/lib/dom.d.ts b/node_modules/@react-leaflet/core/lib/dom.d.ts
deleted file mode 100644
index 25a720f..0000000
--- a/node_modules/@react-leaflet/core/lib/dom.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export declare function addClassName(element: HTMLElement, className: string): void;
-export declare function removeClassName(element: HTMLElement, className: string): void;
-export declare function updateClassName(element?: HTMLElement, prevClassName?: string, nextClassName?: string): void;
diff --git a/node_modules/@react-leaflet/core/lib/dom.js b/node_modules/@react-leaflet/core/lib/dom.js
deleted file mode 100644
index e41c0e8..0000000
--- a/node_modules/@react-leaflet/core/lib/dom.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import { DomUtil } from 'leaflet';
-function splitClassName(className) {
- return className.split(' ').filter(Boolean);
-}
-export function addClassName(element, className) {
- splitClassName(className).forEach((cls)=>{
- DomUtil.addClass(element, cls);
- });
-}
-export function removeClassName(element, className) {
- splitClassName(className).forEach((cls)=>{
- DomUtil.removeClass(element, cls);
- });
-}
-export function updateClassName(element, prevClassName, nextClassName) {
- if (element != null && nextClassName !== prevClassName) {
- if (prevClassName != null && prevClassName.length > 0) {
- removeClassName(element, prevClassName);
- }
- if (nextClassName != null && nextClassName.length > 0) {
- addClassName(element, nextClassName);
- }
- }
-}
diff --git a/node_modules/@react-leaflet/core/lib/element.d.ts b/node_modules/@react-leaflet/core/lib/element.d.ts
deleted file mode 100644
index 88ffea7..0000000
--- a/node_modules/@react-leaflet/core/lib/element.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { type MutableRefObject } from 'react';
-import type { LeafletContextInterface } from './context.js';
-export declare type LeafletElement = Readonly<{
- instance: T;
- context: LeafletContextInterface;
- container?: C | null;
-}>;
-export declare function createElementObject(instance: T, context: LeafletContextInterface, container?: C | null): LeafletElement;
-export declare type ElementHook = (props: P, context: LeafletContextInterface) => MutableRefObject>;
-export declare function createElementHook(createElement: (props: P, context: LeafletContextInterface) => LeafletElement, updateElement?: (instance: E, props: P, prevProps: P) => void): (props: P, context: LeafletContextInterface) => ReturnType>;
diff --git a/node_modules/@react-leaflet/core/lib/element.js b/node_modules/@react-leaflet/core/lib/element.js
deleted file mode 100644
index 76c1d2e..0000000
--- a/node_modules/@react-leaflet/core/lib/element.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { useEffect, useRef } from 'react';
-export function createElementObject(instance, context, container) {
- return Object.freeze({
- instance,
- context,
- container
- });
-}
-export function createElementHook(createElement, updateElement) {
- if (updateElement == null) {
- return function useImmutableLeafletElement(props, context) {
- const elementRef = useRef();
- if (!elementRef.current) elementRef.current = createElement(props, context);
- return elementRef;
- };
- }
- return function useMutableLeafletElement(props, context) {
- const elementRef = useRef();
- if (!elementRef.current) elementRef.current = createElement(props, context);
- const propsRef = useRef(props);
- const { instance } = elementRef.current;
- useEffect(function updateElementProps() {
- if (propsRef.current !== props) {
- updateElement(instance, props, propsRef.current);
- propsRef.current = props;
- }
- }, [
- instance,
- props,
- context
- ]);
- return elementRef;
- };
-}
diff --git a/node_modules/@react-leaflet/core/lib/events.d.ts b/node_modules/@react-leaflet/core/lib/events.d.ts
deleted file mode 100644
index cc9421d..0000000
--- a/node_modules/@react-leaflet/core/lib/events.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import type { Evented, LeafletEventHandlerFnMap } from 'leaflet';
-import type { LeafletElement } from './element.js';
-export declare type EventedProps = {
- eventHandlers?: LeafletEventHandlerFnMap;
-};
-export declare function useEventHandlers(element: LeafletElement, eventHandlers: LeafletEventHandlerFnMap | null | undefined): void;
diff --git a/node_modules/@react-leaflet/core/lib/events.js b/node_modules/@react-leaflet/core/lib/events.js
deleted file mode 100644
index 79a61cc..0000000
--- a/node_modules/@react-leaflet/core/lib/events.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import { useEffect, useRef } from 'react';
-export function useEventHandlers(element, eventHandlers) {
- const eventHandlersRef = useRef();
- useEffect(function addEventHandlers() {
- if (eventHandlers != null) {
- element.instance.on(eventHandlers);
- }
- eventHandlersRef.current = eventHandlers;
- return function removeEventHandlers() {
- if (eventHandlersRef.current != null) {
- element.instance.off(eventHandlersRef.current);
- }
- eventHandlersRef.current = null;
- };
- }, [
- element,
- eventHandlers
- ]);
-}
diff --git a/node_modules/@react-leaflet/core/lib/generic.d.ts b/node_modules/@react-leaflet/core/lib/generic.d.ts
deleted file mode 100644
index 3046834..0000000
--- a/node_modules/@react-leaflet/core/lib/generic.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-///
-import type { Control, ControlOptions, FeatureGroup, Layer, Path } from 'leaflet';
-import { type PropsWithChildren } from './component.js';
-import type { LeafletContextInterface } from './context.js';
-import { type LeafletElement } from './element.js';
-import { type LayerProps } from './layer.js';
-import { type DivOverlay, type DivOverlayLifecycleHook } from './div-overlay.js';
-import { type PathProps } from './path.js';
-interface LayerWithChildrenProps extends LayerProps, PropsWithChildren {
-}
-interface PathWithChildrenProps extends PathProps, PropsWithChildren {
-}
-export declare function createControlComponent(createInstance: (props: P) => E): import("react").ForwardRefExoticComponent & import("react").RefAttributes>;
-export declare function createLayerComponent(createElement: (props: P, context: LeafletContextInterface) => LeafletElement, updateElement?: (instance: E, props: P, prevProps: P) => void): import("react").ForwardRefExoticComponent & import("react").RefAttributes>;
-export declare function createOverlayComponent(createElement: (props: P, context: LeafletContextInterface) => LeafletElement, useLifecycle: DivOverlayLifecycleHook): import("react").ForwardRefExoticComponent & import("react").RefAttributes>;
-export declare function createPathComponent(createElement: (props: P, context: LeafletContextInterface) => LeafletElement, updateElement?: (instance: E, props: P, prevProps: P) => void): import("react").ForwardRefExoticComponent & import("react").RefAttributes>;
-export declare function createTileLayerComponent(createElement: (props: P, context: LeafletContextInterface) => LeafletElement, updateElement?: (instance: E, props: P, prevProps: P) => void): import("react").ForwardRefExoticComponent & import("react").RefAttributes>;
-export {};
diff --git a/node_modules/@react-leaflet/core/lib/generic.js b/node_modules/@react-leaflet/core/lib/generic.js
deleted file mode 100644
index e893066..0000000
--- a/node_modules/@react-leaflet/core/lib/generic.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { createContainerComponent, createDivOverlayComponent, createLeafComponent } from './component.js';
-import { createControlHook } from './control.js';
-import { createElementHook, createElementObject } from './element.js';
-import { createLayerHook } from './layer.js';
-import { createDivOverlayHook } from './div-overlay.js';
-import { createPathHook } from './path.js';
-export function createControlComponent(createInstance) {
- function createElement(props, context) {
- return createElementObject(createInstance(props), context);
- }
- const useElement = createElementHook(createElement);
- const useControl = createControlHook(useElement);
- return createLeafComponent(useControl);
-}
-export function createLayerComponent(createElement, updateElement) {
- const useElement = createElementHook(createElement, updateElement);
- const useLayer = createLayerHook(useElement);
- return createContainerComponent(useLayer);
-}
-export function createOverlayComponent(createElement, useLifecycle) {
- const useElement = createElementHook(createElement);
- const useOverlay = createDivOverlayHook(useElement, useLifecycle);
- return createDivOverlayComponent(useOverlay);
-}
-export function createPathComponent(createElement, updateElement) {
- const useElement = createElementHook(createElement, updateElement);
- const usePath = createPathHook(useElement);
- return createContainerComponent(usePath);
-}
-export function createTileLayerComponent(createElement, updateElement) {
- const useElement = createElementHook(createElement, updateElement);
- const useLayer = createLayerHook(useElement);
- return createLeafComponent(useLayer);
-}
diff --git a/node_modules/@react-leaflet/core/lib/grid-layer.d.ts b/node_modules/@react-leaflet/core/lib/grid-layer.d.ts
deleted file mode 100644
index b676e90..0000000
--- a/node_modules/@react-leaflet/core/lib/grid-layer.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import type { GridLayer, GridLayerOptions } from 'leaflet';
-export declare function updateGridLayer(layer: E, props: P, prevProps: P): void;
diff --git a/node_modules/@react-leaflet/core/lib/grid-layer.js b/node_modules/@react-leaflet/core/lib/grid-layer.js
deleted file mode 100644
index 81526cd..0000000
--- a/node_modules/@react-leaflet/core/lib/grid-layer.js
+++ /dev/null
@@ -1,9 +0,0 @@
-export function updateGridLayer(layer, props, prevProps) {
- const { opacity , zIndex } = props;
- if (opacity != null && opacity !== prevProps.opacity) {
- layer.setOpacity(opacity);
- }
- if (zIndex != null && zIndex !== prevProps.zIndex) {
- layer.setZIndex(zIndex);
- }
-}
diff --git a/node_modules/@react-leaflet/core/lib/index.d.ts b/node_modules/@react-leaflet/core/lib/index.d.ts
deleted file mode 100644
index 0ce757d..0000000
--- a/node_modules/@react-leaflet/core/lib/index.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-export { useAttribution } from './attribution.js';
-export { type CircleMarkerProps, type CircleProps, updateCircle, } from './circle.js';
-export { createContainerComponent, createDivOverlayComponent, createLeafComponent, } from './component.js';
-export { CONTEXT_VERSION, type LeafletContextInterface, LeafletContext, LeafletProvider, createLeafletContext, extendContext, useLeafletContext, } from './context.js';
-export { createControlHook } from './control.js';
-export { type DivOverlayHook, type DivOverlayLifecycleHook, type SetOpenFunc, createDivOverlayHook, } from './div-overlay.js';
-export { addClassName, removeClassName, updateClassName } from './dom.js';
-export { type ElementHook, type LeafletElement, createElementHook, createElementObject, } from './element.js';
-export { type EventedProps, useEventHandlers } from './events.js';
-export { createControlComponent, createLayerComponent, createOverlayComponent, createPathComponent, createTileLayerComponent, } from './generic.js';
-export { updateGridLayer } from './grid-layer.js';
-export { type InteractiveLayerProps, type LayerProps, createLayerHook, useLayerLifecycle, } from './layer.js';
-export { type MediaOverlayProps, updateMediaOverlay } from './media-overlay.js';
-export { withPane } from './pane.js';
-export { type PathProps, createPathHook, usePathOptions } from './path.js';
diff --git a/node_modules/@react-leaflet/core/lib/index.js b/node_modules/@react-leaflet/core/lib/index.js
deleted file mode 100644
index 69dff41..0000000
--- a/node_modules/@react-leaflet/core/lib/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-export { useAttribution } from './attribution.js';
-export { updateCircle } from './circle.js';
-export { createContainerComponent, createDivOverlayComponent, createLeafComponent } from './component.js';
-export { CONTEXT_VERSION, LeafletContext, LeafletProvider, createLeafletContext, extendContext, useLeafletContext } from './context.js';
-export { createControlHook } from './control.js';
-export { createDivOverlayHook } from './div-overlay.js';
-export { addClassName, removeClassName, updateClassName } from './dom.js';
-export { createElementHook, createElementObject } from './element.js';
-export { useEventHandlers } from './events.js';
-export { createControlComponent, createLayerComponent, createOverlayComponent, createPathComponent, createTileLayerComponent } from './generic.js';
-export { updateGridLayer } from './grid-layer.js';
-export { createLayerHook, useLayerLifecycle } from './layer.js';
-export { updateMediaOverlay } from './media-overlay.js';
-export { withPane } from './pane.js';
-export { createPathHook, usePathOptions } from './path.js';
diff --git a/node_modules/@react-leaflet/core/lib/layer.d.ts b/node_modules/@react-leaflet/core/lib/layer.d.ts
deleted file mode 100644
index 148bc6a..0000000
--- a/node_modules/@react-leaflet/core/lib/layer.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import type { InteractiveLayerOptions, Layer, LayerOptions } from 'leaflet';
-import { type LeafletContextInterface } from './context.js';
-import type { LeafletElement, ElementHook } from './element.js';
-import { type EventedProps } from './events.js';
-export interface LayerProps extends EventedProps, LayerOptions {
-}
-export interface InteractiveLayerProps extends LayerProps, InteractiveLayerOptions {
-}
-export declare function useLayerLifecycle(element: LeafletElement, context: LeafletContextInterface): void;
-export declare function createLayerHook(useElement: ElementHook): (props: P) => ReturnType>;
diff --git a/node_modules/@react-leaflet/core/lib/layer.js b/node_modules/@react-leaflet/core/lib/layer.js
deleted file mode 100644
index 6364b3a..0000000
--- a/node_modules/@react-leaflet/core/lib/layer.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import { useEffect } from 'react';
-import { useAttribution } from './attribution.js';
-import { useLeafletContext } from './context.js';
-import { useEventHandlers } from './events.js';
-import { withPane } from './pane.js';
-export function useLayerLifecycle(element, context) {
- useEffect(function addLayer() {
- const container = context.layerContainer ?? context.map;
- container.addLayer(element.instance);
- return function removeLayer() {
- context.layerContainer?.removeLayer(element.instance);
- context.map.removeLayer(element.instance);
- };
- }, [
- context,
- element
- ]);
-}
-export function createLayerHook(useElement) {
- return function useLayer(props) {
- const context = useLeafletContext();
- const elementRef = useElement(withPane(props, context), context);
- useAttribution(context.map, props.attribution);
- useEventHandlers(elementRef.current, props.eventHandlers);
- useLayerLifecycle(elementRef.current, context);
- return elementRef;
- };
-}
diff --git a/node_modules/@react-leaflet/core/lib/media-overlay.d.ts b/node_modules/@react-leaflet/core/lib/media-overlay.d.ts
deleted file mode 100644
index 636962f..0000000
--- a/node_modules/@react-leaflet/core/lib/media-overlay.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { type LatLngBoundsExpression, type ImageOverlay as LeafletImageOverlay, type ImageOverlayOptions, type SVGOverlay as LeafletSVGOverlay, type VideoOverlay as LeafletVideoOverlay } from 'leaflet';
-import type { InteractiveLayerProps } from './layer.js';
-export interface MediaOverlayProps extends ImageOverlayOptions, InteractiveLayerProps {
- bounds: LatLngBoundsExpression;
-}
-export declare function updateMediaOverlay(overlay: E, props: P, prevProps: P): void;
diff --git a/node_modules/@react-leaflet/core/lib/media-overlay.js b/node_modules/@react-leaflet/core/lib/media-overlay.js
deleted file mode 100644
index fc03a12..0000000
--- a/node_modules/@react-leaflet/core/lib/media-overlay.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LatLngBounds } from 'leaflet';
-export function updateMediaOverlay(overlay, props, prevProps) {
- if (props.bounds instanceof LatLngBounds && props.bounds !== prevProps.bounds) {
- overlay.setBounds(props.bounds);
- }
- if (props.opacity != null && props.opacity !== prevProps.opacity) {
- overlay.setOpacity(props.opacity);
- }
- if (props.zIndex != null && props.zIndex !== prevProps.zIndex) {
- // @ts-ignore missing in definition but inherited from ImageOverlay
- overlay.setZIndex(props.zIndex);
- }
-}
diff --git a/node_modules/@react-leaflet/core/lib/pane.d.ts b/node_modules/@react-leaflet/core/lib/pane.d.ts
deleted file mode 100644
index a8946ea..0000000
--- a/node_modules/@react-leaflet/core/lib/pane.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import type { LayerOptions } from 'leaflet';
-import type { LeafletContextInterface } from './context.js';
-export declare function withPane(props: P, context: LeafletContextInterface): P;
diff --git a/node_modules/@react-leaflet/core/lib/pane.js b/node_modules/@react-leaflet/core/lib/pane.js
deleted file mode 100644
index 5673a2c..0000000
--- a/node_modules/@react-leaflet/core/lib/pane.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export function withPane(props, context) {
- const pane = props.pane ?? context.pane;
- return pane ? {
- ...props,
- pane
- } : props;
-}
diff --git a/node_modules/@react-leaflet/core/lib/path.d.ts b/node_modules/@react-leaflet/core/lib/path.d.ts
deleted file mode 100644
index 17d66ad..0000000
--- a/node_modules/@react-leaflet/core/lib/path.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import type { FeatureGroup, Path, PathOptions } from 'leaflet';
-import type { LeafletElement, ElementHook } from './element.js';
-import { type InteractiveLayerProps } from './layer.js';
-export interface PathProps extends InteractiveLayerProps {
- pathOptions?: PathOptions;
-}
-export declare function usePathOptions(element: LeafletElement, props: PathProps): void;
-export declare function createPathHook(useElement: ElementHook): (props: P) => ReturnType>;
diff --git a/node_modules/@react-leaflet/core/lib/path.js b/node_modules/@react-leaflet/core/lib/path.js
deleted file mode 100644
index 636a448..0000000
--- a/node_modules/@react-leaflet/core/lib/path.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import { useEffect, useRef } from 'react';
-import { useLeafletContext } from './context.js';
-import { useEventHandlers } from './events.js';
-import { useLayerLifecycle } from './layer.js';
-import { withPane } from './pane.js';
-export function usePathOptions(element, props) {
- const optionsRef = useRef();
- useEffect(function updatePathOptions() {
- if (props.pathOptions !== optionsRef.current) {
- const options = props.pathOptions ?? {};
- element.instance.setStyle(options);
- optionsRef.current = options;
- }
- }, [
- element,
- props
- ]);
-}
-export function createPathHook(useElement) {
- return function usePath(props) {
- const context = useLeafletContext();
- const elementRef = useElement(withPane(props, context), context);
- useEventHandlers(elementRef.current, props.eventHandlers);
- useLayerLifecycle(elementRef.current, context);
- usePathOptions(elementRef.current, props);
- return elementRef;
- };
-}
diff --git a/node_modules/@react-leaflet/core/package.json b/node_modules/@react-leaflet/core/package.json
deleted file mode 100644
index 924b588..0000000
--- a/node_modules/@react-leaflet/core/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "name": "@react-leaflet/core",
- "version": "2.1.0",
- "description": "React Leaflet core",
- "repository": {
- "type": "git",
- "url": "https://github.com/PaulLeCam/react-leaflet.git"
- },
- "keywords": [
- "react-component",
- "react",
- "leaflet",
- "map"
- ],
- "author": "Paul Le Cam ",
- "license": "Hippocratic-2.1",
- "bugs": {
- "url": "https://github.com/PaulLeCam/react-leaflet/issues"
- },
- "homepage": "https://react-leaflet.js.org/docs/core-introduction",
- "type": "module",
- "main": "lib/index.js",
- "types": "lib/index.d.ts",
- "exports": {
- ".": "./lib/index.js"
- },
- "files": [
- "lib/*"
- ],
- "sideEffects": false,
- "peerDependencies": {
- "leaflet": "^1.9.0",
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
- },
- "devDependencies": {
- "@types/react": "^18.0.21",
- "@types/react-dom": "^18.0.6"
- },
- "jest": {
- "extensionsToTreatAsEsm": [
- ".ts",
- ".tsx"
- ],
- "resolver": "ts-jest-resolver",
- "testEnvironment": "jsdom",
- "transform": {
- "^.+\\.(t|j)sx?$": [
- "@swc/jest",
- {
- "root": "../.."
- }
- ]
- }
- },
- "scripts": {
- "build:clean": "del lib",
- "build:js": "swc src -d ./lib --config-file ../../.swcrc",
- "build:types": "tsc --emitDeclarationOnly",
- "build": "pnpm run build:clean && pnpm run build:types && pnpm run build:js",
- "test:types": "tsc --noEmit",
- "test:unit": "cross-env NODE_ENV=test jest",
- "test": "pnpm run test:types && pnpm run test:unit",
- "start": "pnpm run test && pnpm run build"
- }
-}
\ No newline at end of file
diff --git a/node_modules/abab/LICENSE.md b/node_modules/abab/LICENSE.md
deleted file mode 100644
index aac4aac..0000000
--- a/node_modules/abab/LICENSE.md
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright © 2019 W3C and Jeff Carpenter \
-
-Both the original source code and new contributions in this repository are released under the [3-Clause BSD license](https://opensource.org/licenses/BSD-3-Clause).
-
-# The 3-Clause BSD License
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-2. 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.
-3. Neither the name of the copyright holder nor the names of its 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/abab/README.md b/node_modules/abab/README.md
deleted file mode 100644
index 6f32eb0..0000000
--- a/node_modules/abab/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# abab [](https://www.npmjs.com/package/abab) [](https://travis-ci.org/jsdom/abab)
-
-A JavaScript module that implements `window.atob` and `window.btoa` according the forgiving-base64 algorithm in the [Infra Standard](https://infra.spec.whatwg.org/#forgiving-base64). The original code was forked from [w3c/web-platform-tests](https://github.com/w3c/web-platform-tests/blob/master/html/webappapis/atob/base64.html).
-
-Compatibility: Node.js version 3+ and all major browsers.
-
-Install with `npm`:
-
-```sh
-npm install abab
-```
-
-## API
-
-### `btoa` (base64 encode)
-
-```js
-const { btoa } = require('abab');
-btoa('Hello, world!'); // 'SGVsbG8sIHdvcmxkIQ=='
-```
-
-### `atob` (base64 decode)
-
-```js
-const { atob } = require('abab');
-atob('SGVsbG8sIHdvcmxkIQ=='); // 'Hello, world!'
-```
-
-#### Valid characters
-
-[Per the spec](https://html.spec.whatwg.org/multipage/webappapis.html#atob:dom-windowbase64-btoa-3), `btoa` will accept strings "containing only characters in the range `U+0000` to `U+00FF`." If passed a string with characters above `U+00FF`, `btoa` will return `null`. If `atob` is passed a string that is not base64-valid, it will also return `null`. In both cases when `null` is returned, the spec calls for throwing a `DOMException` of type `InvalidCharacterError`.
-
-## Browsers
-
-If you want to include just one of the methods to save bytes in your client-side code, you can `require` the desired module directly.
-
-```js
-const atob = require('abab/lib/atob');
-const btoa = require('abab/lib/btoa');
-```
-
-## Development
-
-If you're **submitting a PR** or **deploying to npm**, please use the [checklists in CONTRIBUTING.md](CONTRIBUTING.md#checklists).
-
-## Remembering what `atob` and `btoa` stand for
-
-Base64 comes from IETF [RFC 4648](https://tools.ietf.org/html/rfc4648#section-4) (2006).
-
-- **`btoa`**, the encoder function, stands for **binary** to **ASCII**, meaning it converts any binary input into a subset of **ASCII** (Base64).
-- **`atob`**, the decoder function, converts **ASCII** (or Base64) to its original **binary** format.
diff --git a/node_modules/abab/index.d.ts b/node_modules/abab/index.d.ts
deleted file mode 100644
index 665a6ad..0000000
--- a/node_modules/abab/index.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export function atob(encodedData: string): string | null
-export function btoa(stringToEncode: string): string | null
diff --git a/node_modules/abab/index.js b/node_modules/abab/index.js
deleted file mode 100644
index 49d5ae9..0000000
--- a/node_modules/abab/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-"use strict";
-
-const atob = require("./lib/atob");
-const btoa = require("./lib/btoa");
-
-module.exports = {
- atob,
- btoa
-};
diff --git a/node_modules/abab/lib/atob.js b/node_modules/abab/lib/atob.js
deleted file mode 100644
index c8f753a..0000000
--- a/node_modules/abab/lib/atob.js
+++ /dev/null
@@ -1,101 +0,0 @@
-"use strict";
-
-/**
- * Implementation of atob() according to the HTML and Infra specs, except that
- * instead of throwing INVALID_CHARACTER_ERR we return null.
- */
-function atob(data) {
- if (arguments.length === 0) {
- throw new TypeError("1 argument required, but only 0 present.");
- }
-
- // Web IDL requires DOMStrings to just be converted using ECMAScript
- // ToString, which in our case amounts to using a template literal.
- data = `${data}`;
- // "Remove all ASCII whitespace from data."
- data = data.replace(/[ \t\n\f\r]/g, "");
- // "If data's length divides by 4 leaving no remainder, then: if data ends
- // with one or two U+003D (=) code points, then remove them from data."
- if (data.length % 4 === 0) {
- data = data.replace(/==?$/, "");
- }
- // "If data's length divides by 4 leaving a remainder of 1, then return
- // failure."
- //
- // "If data contains a code point that is not one of
- //
- // U+002B (+)
- // U+002F (/)
- // ASCII alphanumeric
- //
- // then return failure."
- if (data.length % 4 === 1 || /[^+/0-9A-Za-z]/.test(data)) {
- return null;
- }
- // "Let output be an empty byte sequence."
- let output = "";
- // "Let buffer be an empty buffer that can have bits appended to it."
- //
- // We append bits via left-shift and or. accumulatedBits is used to track
- // when we've gotten to 24 bits.
- let buffer = 0;
- let accumulatedBits = 0;
- // "Let position be a position variable for data, initially pointing at the
- // start of data."
- //
- // "While position does not point past the end of data:"
- for (let i = 0; i < data.length; i++) {
- // "Find the code point pointed to by position in the second column of
- // Table 1: The Base 64 Alphabet of RFC 4648. Let n be the number given in
- // the first cell of the same row.
- //
- // "Append to buffer the six bits corresponding to n, most significant bit
- // first."
- //
- // atobLookup() implements the table from RFC 4648.
- buffer <<= 6;
- buffer |= atobLookup(data[i]);
- accumulatedBits += 6;
- // "If buffer has accumulated 24 bits, interpret them as three 8-bit
- // big-endian numbers. Append three bytes with values equal to those
- // numbers to output, in the same order, and then empty buffer."
- if (accumulatedBits === 24) {
- output += String.fromCharCode((buffer & 0xff0000) >> 16);
- output += String.fromCharCode((buffer & 0xff00) >> 8);
- output += String.fromCharCode(buffer & 0xff);
- buffer = accumulatedBits = 0;
- }
- // "Advance position by 1."
- }
- // "If buffer is not empty, it contains either 12 or 18 bits. If it contains
- // 12 bits, then discard the last four and interpret the remaining eight as
- // an 8-bit big-endian number. If it contains 18 bits, then discard the last
- // two and interpret the remaining 16 as two 8-bit big-endian numbers. Append
- // the one or two bytes with values equal to those one or two numbers to
- // output, in the same order."
- if (accumulatedBits === 12) {
- buffer >>= 4;
- output += String.fromCharCode(buffer);
- } else if (accumulatedBits === 18) {
- buffer >>= 2;
- output += String.fromCharCode((buffer & 0xff00) >> 8);
- output += String.fromCharCode(buffer & 0xff);
- }
- // "Return output."
- return output;
-}
-/**
- * A lookup table for atob(), which converts an ASCII character to the
- * corresponding six-bit number.
- */
-
-const keystr =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-function atobLookup(chr) {
- const index = keystr.indexOf(chr);
- // Throw exception if character is not in the lookup string; should not be hit in tests
- return index < 0 ? undefined : index;
-}
-
-module.exports = atob;
diff --git a/node_modules/abab/lib/btoa.js b/node_modules/abab/lib/btoa.js
deleted file mode 100644
index 8d385d7..0000000
--- a/node_modules/abab/lib/btoa.js
+++ /dev/null
@@ -1,62 +0,0 @@
-"use strict";
-
-/**
- * btoa() as defined by the HTML and Infra specs, which mostly just references
- * RFC 4648.
- */
-function btoa(s) {
- if (arguments.length === 0) {
- throw new TypeError("1 argument required, but only 0 present.");
- }
-
- let i;
- // String conversion as required by Web IDL.
- s = `${s}`;
- // "The btoa() method must throw an "InvalidCharacterError" DOMException if
- // data contains any character whose code point is greater than U+00FF."
- for (i = 0; i < s.length; i++) {
- if (s.charCodeAt(i) > 255) {
- return null;
- }
- }
- let out = "";
- for (i = 0; i < s.length; i += 3) {
- const groupsOfSix = [undefined, undefined, undefined, undefined];
- groupsOfSix[0] = s.charCodeAt(i) >> 2;
- groupsOfSix[1] = (s.charCodeAt(i) & 0x03) << 4;
- if (s.length > i + 1) {
- groupsOfSix[1] |= s.charCodeAt(i + 1) >> 4;
- groupsOfSix[2] = (s.charCodeAt(i + 1) & 0x0f) << 2;
- }
- if (s.length > i + 2) {
- groupsOfSix[2] |= s.charCodeAt(i + 2) >> 6;
- groupsOfSix[3] = s.charCodeAt(i + 2) & 0x3f;
- }
- for (let j = 0; j < groupsOfSix.length; j++) {
- if (typeof groupsOfSix[j] === "undefined") {
- out += "=";
- } else {
- out += btoaLookup(groupsOfSix[j]);
- }
- }
- }
- return out;
-}
-
-/**
- * Lookup table for btoa(), which converts a six-bit number into the
- * corresponding ASCII character.
- */
-const keystr =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-function btoaLookup(index) {
- if (index >= 0 && index < 64) {
- return keystr[index];
- }
-
- // Throw INVALID_CHARACTER_ERR exception here -- won't be hit in the tests.
- return undefined;
-}
-
-module.exports = btoa;
diff --git a/node_modules/abab/package.json b/node_modules/abab/package.json
deleted file mode 100644
index 71602db..0000000
--- a/node_modules/abab/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "abab",
- "version": "2.0.6",
- "description": "WHATWG spec-compliant implementations of window.atob and window.btoa.",
- "main": "index.js",
- "files": [
- "index.d.ts",
- "index.js",
- "lib/"
- ],
- "scripts": {
- "mocha": "mocha test/node",
- "karma": "karma start",
- "test": "npm run lint && npm run mocha && npm run karma",
- "lint": "eslint ."
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/jsdom/abab.git"
- },
- "keywords": [
- "atob",
- "btoa",
- "browser"
- ],
- "author": "Jeff Carpenter ",
- "license": "BSD-3-Clause",
- "bugs": {
- "url": "https://github.com/jsdom/abab/issues"
- },
- "homepage": "https://github.com/jsdom/abab#readme",
- "devDependencies": {
- "eslint": "^4.19.1",
- "karma": "^2.0.0",
- "karma-cli": "^1.0.1",
- "karma-firefox-launcher": "^1.1.0",
- "karma-mocha": "^1.3.0",
- "karma-webpack": "^3.0.0",
- "mocha": "^5.1.0",
- "webpack": "^4.5.0"
- }
-}
diff --git a/node_modules/acorn-globals/LICENSE b/node_modules/acorn-globals/LICENSE
deleted file mode 100644
index 27cc9f3..0000000
--- a/node_modules/acorn-globals/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 Forbes Lindesay
-
-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/acorn-globals/README.md b/node_modules/acorn-globals/README.md
deleted file mode 100644
index 5f7326f..0000000
--- a/node_modules/acorn-globals/README.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# acorn-globals
-
-Detect global variables in JavaScript using acorn
-
-[Get supported acorn-globals with the Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-acorn_globals?utm_source=npm-acorn-globals&utm_medium=referral&utm_campaign=readme)
-
-[](https://travis-ci.org/ForbesLindesay/acorn-globals)
-[](https://david-dm.org/ForbesLindesay/acorn-globals)
-[](https://www.npmjs.org/package/acorn-globals)
-
-## Installation
-
- npm install acorn-globals
-
-## Usage
-
-detect.js
-
-```js
-var fs = require('fs');
-var detect = require('acorn-globals');
-
-var src = fs.readFileSync(__dirname + '/input.js', 'utf8');
-
-var scope = detect(src);
-console.dir(scope);
-```
-
-input.js
-
-```js
-var x = 5;
-var y = 3, z = 2;
-
-w.foo();
-w = 2;
-
-RAWR=444;
-RAWR.foo();
-
-BLARG=3;
-
-foo(function () {
- var BAR = 3;
- process.nextTick(function (ZZZZZZZZZZZZ) {
- console.log('beep boop');
- var xyz = 4;
- x += 10;
- x.zzzzzz;
- ZZZ=6;
- });
- function doom () {
- }
- ZZZ.foo();
-
-});
-
-console.log(xyz);
-```
-
-output:
-
-```
-$ node example/detect.js
-[ { name: 'BLARG', nodes: [ [Object] ] },
- { name: 'RAWR', nodes: [ [Object], [Object] ] },
- { name: 'ZZZ', nodes: [ [Object], [Object] ] },
- { name: 'console', nodes: [ [Object], [Object] ] },
- { name: 'foo', nodes: [ [Object] ] },
- { name: 'process', nodes: [ [Object] ] },
- { name: 'w', nodes: [ [Object], [Object] ] },
- { name: 'xyz', nodes: [ [Object] ] } ]
-```
-
-## 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
diff --git a/node_modules/acorn-globals/index.js b/node_modules/acorn-globals/index.js
deleted file mode 100644
index 232cbe4..0000000
--- a/node_modules/acorn-globals/index.js
+++ /dev/null
@@ -1,179 +0,0 @@
-'use strict';
-
-var acorn = require('acorn');
-var walk = require('acorn-walk');
-
-function isScope(node) {
- return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration' || node.type === 'ArrowFunctionExpression' || node.type === 'Program';
-}
-function isBlockScope(node) {
- return node.type === 'BlockStatement' || isScope(node);
-}
-
-function declaresArguments(node) {
- return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
-}
-
-function declaresThis(node) {
- return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
-}
-
-function reallyParse(source, options) {
- var parseOptions = Object.assign({}, options,
- {
- allowReturnOutsideFunction: true,
- allowImportExportEverywhere: true,
- allowHashBang: true
- }
- );
- return acorn.parse(source, parseOptions);
-}
-module.exports = findGlobals;
-module.exports.parse = reallyParse;
-function findGlobals(source, options) {
- options = options || {};
- var globals = [];
- var ast;
- // istanbul ignore else
- if (typeof source === 'string') {
- ast = reallyParse(source, options);
- } else {
- ast = source;
- }
- // istanbul ignore if
- if (!(ast && typeof ast === 'object' && ast.type === 'Program')) {
- throw new TypeError('Source must be either a string of JavaScript or an acorn AST');
- }
- var declareFunction = function (node) {
- var fn = node;
- fn.locals = fn.locals || Object.create(null);
- node.params.forEach(function (node) {
- declarePattern(node, fn);
- });
- if (node.id) {
- fn.locals[node.id.name] = true;
- }
- };
- var declareClass = function (node) {
- node.locals = node.locals || Object.create(null);
- if (node.id) {
- node.locals[node.id.name] = true;
- }
- };
- var declarePattern = function (node, parent) {
- switch (node.type) {
- case 'Identifier':
- parent.locals[node.name] = true;
- break;
- case 'ObjectPattern':
- node.properties.forEach(function (node) {
- declarePattern(node.value || node.argument, parent);
- });
- break;
- case 'ArrayPattern':
- node.elements.forEach(function (node) {
- if (node) declarePattern(node, parent);
- });
- break;
- case 'RestElement':
- declarePattern(node.argument, parent);
- break;
- case 'AssignmentPattern':
- declarePattern(node.left, parent);
- break;
- // istanbul ignore next
- default:
- throw new Error('Unrecognized pattern type: ' + node.type);
- }
- };
- var declareModuleSpecifier = function (node, parents) {
- ast.locals = ast.locals || Object.create(null);
- ast.locals[node.local.name] = true;
- };
- walk.ancestor(ast, {
- 'VariableDeclaration': function (node, parents) {
- var parent = null;
- for (var i = parents.length - 1; i >= 0 && parent === null; i--) {
- if (node.kind === 'var' ? isScope(parents[i]) : isBlockScope(parents[i])) {
- parent = parents[i];
- }
- }
- parent.locals = parent.locals || Object.create(null);
- node.declarations.forEach(function (declaration) {
- declarePattern(declaration.id, parent);
- });
- },
- 'FunctionDeclaration': function (node, parents) {
- var parent = null;
- for (var i = parents.length - 2; i >= 0 && parent === null; i--) {
- if (isScope(parents[i])) {
- parent = parents[i];
- }
- }
- parent.locals = parent.locals || Object.create(null);
- if (node.id) {
- parent.locals[node.id.name] = true;
- }
- declareFunction(node);
- },
- 'Function': declareFunction,
- 'ClassDeclaration': function (node, parents) {
- var parent = null;
- for (var i = parents.length - 2; i >= 0 && parent === null; i--) {
- if (isBlockScope(parents[i])) {
- parent = parents[i];
- }
- }
- parent.locals = parent.locals || Object.create(null);
- if (node.id) {
- parent.locals[node.id.name] = true;
- }
- declareClass(node);
- },
- 'Class': declareClass,
- 'TryStatement': function (node) {
- if (node.handler === null) return;
- node.handler.locals = node.handler.locals || Object.create(null);
- declarePattern(node.handler.param, node.handler);
- },
- 'ImportDefaultSpecifier': declareModuleSpecifier,
- 'ImportSpecifier': declareModuleSpecifier,
- 'ImportNamespaceSpecifier': declareModuleSpecifier
- });
- function identifier(node, parents) {
- var name = node.name;
- if (name === 'undefined') return;
- for (var i = 0; i < parents.length; i++) {
- if (name === 'arguments' && declaresArguments(parents[i])) {
- return;
- }
- if (parents[i].locals && name in parents[i].locals) {
- return;
- }
- }
- node.parents = parents.slice();
- globals.push(node);
- }
- walk.ancestor(ast, {
- 'VariablePattern': identifier,
- 'Identifier': identifier,
- 'ThisExpression': function (node, parents) {
- for (var i = 0; i < parents.length; i++) {
- if (declaresThis(parents[i])) {
- return;
- }
- }
- node.parents = parents.slice();
- globals.push(node);
- }
- });
- var groupedGlobals = Object.create(null);
- globals.forEach(function (node) {
- var name = node.type === 'ThisExpression' ? 'this' : node.name;
- groupedGlobals[name] = (groupedGlobals[name] || []);
- groupedGlobals[name].push(node);
- });
- return Object.keys(groupedGlobals).sort().map(function (name) {
- return {name: name, nodes: groupedGlobals[name]};
- });
-}
diff --git a/node_modules/acorn-globals/node_modules/.bin/acorn b/node_modules/acorn-globals/node_modules/.bin/acorn
deleted file mode 120000
index cf76760..0000000
--- a/node_modules/acorn-globals/node_modules/.bin/acorn
+++ /dev/null
@@ -1 +0,0 @@
-../acorn/bin/acorn
\ No newline at end of file
diff --git a/node_modules/acorn-globals/node_modules/acorn/CHANGELOG.md b/node_modules/acorn-globals/node_modules/acorn/CHANGELOG.md
deleted file mode 100644
index 1438da6..0000000
--- a/node_modules/acorn-globals/node_modules/acorn/CHANGELOG.md
+++ /dev/null
@@ -1,550 +0,0 @@
-## 6.4.0 (2019-11-26)
-
-### New features
-
-Add a static `acorn` property to the `Parser` class that contains the entire module interface, to allow plugins to access the instance of the library that they are acting on.
-
-## 6.3.0 (2019-08-12)
-
-### New features
-
-`sourceType: "module"` can now be used even when `ecmaVersion` is less than 6, to parse module-style code that otherwise conforms to an older standard.
-
-## 6.2.1 (2019-07-21)
-
-### Bug fixes
-
-Fix bug causing Acorn to treat some characters as identifier characters that shouldn't be treated as such.
-
-Fix issue where setting the `allowReserved` option to `"never"` allowed reserved words in some circumstances.
-
-## 6.2.0 (2019-07-04)
-
-### Bug fixes
-
-Improve valid assignment checking in `for`/`in` and `for`/`of` loops.
-
-Disallow binding `let` in patterns.
-
-### New features
-
-Support bigint syntax with `ecmaVersion` >= 10.
-
-Support dynamic `import` syntax with `ecmaVersion` >= 10.
-
-Upgrade to Unicode version 12.
-
-## 6.1.1 (2019-02-27)
-
-### Bug fixes
-
-Fix bug that caused parsing default exports of with names to fail.
-
-## 6.1.0 (2019-02-08)
-
-### Bug fixes
-
-Fix scope checking when redefining a `var` as a lexical binding.
-
-### New features
-
-Split up `parseSubscripts` to use an internal `parseSubscript` method to make it easier to extend with plugins.
-
-## 6.0.7 (2019-02-04)
-
-### Bug fixes
-
-Check that exported bindings are defined.
-
-Don't treat `\u180e` as a whitespace character.
-
-Check for duplicate parameter names in methods.
-
-Don't allow shorthand properties when they are generators or async methods.
-
-Forbid binding `await` in async arrow function's parameter list.
-
-## 6.0.6 (2019-01-30)
-
-### Bug fixes
-
-The content of class declarations and expressions is now always parsed in strict mode.
-
-Don't allow `let` or `const` to bind the variable name `let`.
-
-Treat class declarations as lexical.
-
-Don't allow a generator function declaration as the sole body of an `if` or `else`.
-
-Ignore `"use strict"` when after an empty statement.
-
-Allow string line continuations with special line terminator characters.
-
-Treat `for` bodies as part of the `for` scope when checking for conflicting bindings.
-
-Fix bug with parsing `yield` in a `for` loop initializer.
-
-Implement special cases around scope checking for functions.
-
-## 6.0.5 (2019-01-02)
-
-### Bug fixes
-
-Fix TypeScript type for `Parser.extend` and add `allowAwaitOutsideFunction` to options type.
-
-Don't treat `let` as a keyword when the next token is `{` on the next line.
-
-Fix bug that broke checking for parentheses around an object pattern in a destructuring assignment when `preserveParens` was on.
-
-## 6.0.4 (2018-11-05)
-
-### Bug fixes
-
-Further improvements to tokenizing regular expressions in corner cases.
-
-## 6.0.3 (2018-11-04)
-
-### Bug fixes
-
-Fix bug in tokenizing an expression-less return followed by a function followed by a regular expression.
-
-Remove stray symlink in the package tarball.
-
-## 6.0.2 (2018-09-26)
-
-### Bug fixes
-
-Fix bug where default expressions could fail to parse inside an object destructuring assignment expression.
-
-## 6.0.1 (2018-09-14)
-
-### Bug fixes
-
-Fix wrong value in `version` export.
-
-## 6.0.0 (2018-09-14)
-
-### Bug fixes
-
-Better handle variable-redefinition checks for catch bindings and functions directly under if statements.
-
-Forbid `new.target` in top-level arrow functions.
-
-Fix issue with parsing a regexp after `yield` in some contexts.
-
-### New features
-
-The package now comes with TypeScript definitions.
-
-### Breaking changes
-
-The default value of the `ecmaVersion` option is now 9 (2018).
-
-Plugins work differently, and will have to be rewritten to work with this version.
-
-The loose parser and walker have been moved into separate packages (`acorn-loose` and `acorn-walk`).
-
-## 5.7.3 (2018-09-10)
-
-### Bug fixes
-
-Fix failure to tokenize regexps after expressions like `x.of`.
-
-Better error message for unterminated template literals.
-
-## 5.7.2 (2018-08-24)
-
-### Bug fixes
-
-Properly handle `allowAwaitOutsideFunction` in for statements.
-
-Treat function declarations at the top level of modules like let bindings.
-
-Don't allow async function declarations as the only statement under a label.
-
-## 5.7.0 (2018-06-15)
-
-### New features
-
-Upgraded to Unicode 11.
-
-## 5.6.0 (2018-05-31)
-
-### New features
-
-Allow U+2028 and U+2029 in string when ECMAVersion >= 10.
-
-Allow binding-less catch statements when ECMAVersion >= 10.
-
-Add `allowAwaitOutsideFunction` option for parsing top-level `await`.
-
-## 5.5.3 (2018-03-08)
-
-### Bug fixes
-
-A _second_ republish of the code in 5.5.1, this time with yarn, to hopefully get valid timestamps.
-
-## 5.5.2 (2018-03-08)
-
-### Bug fixes
-
-A republish of the code in 5.5.1 in an attempt to solve an issue with the file timestamps in the npm package being 0.
-
-## 5.5.1 (2018-03-06)
-
-### Bug fixes
-
-Fix misleading error message for octal escapes in template strings.
-
-## 5.5.0 (2018-02-27)
-
-### New features
-
-The identifier character categorization is now based on Unicode version 10.
-
-Acorn will now validate the content of regular expressions, including new ES9 features.
-
-## 5.4.0 (2018-02-01)
-
-### Bug fixes
-
-Disallow duplicate or escaped flags on regular expressions.
-
-Disallow octal escapes in strings in strict mode.
-
-### New features
-
-Add support for async iteration.
-
-Add support for object spread and rest.
-
-## 5.3.0 (2017-12-28)
-
-### Bug fixes
-
-Fix parsing of floating point literals with leading zeroes in loose mode.
-
-Allow duplicate property names in object patterns.
-
-Don't allow static class methods named `prototype`.
-
-Disallow async functions directly under `if` or `else`.
-
-Parse right-hand-side of `for`/`of` as an assignment expression.
-
-Stricter parsing of `for`/`in`.
-
-Don't allow unicode escapes in contextual keywords.
-
-### New features
-
-Parsing class members was factored into smaller methods to allow plugins to hook into it.
-
-## 5.2.1 (2017-10-30)
-
-### Bug fixes
-
-Fix a token context corruption bug.
-
-## 5.2.0 (2017-10-30)
-
-### Bug fixes
-
-Fix token context tracking for `class` and `function` in property-name position.
-
-Make sure `%*` isn't parsed as a valid operator.
-
-Allow shorthand properties `get` and `set` to be followed by default values.
-
-Disallow `super` when not in callee or object position.
-
-### New features
-
-Support [`directive` property](https://github.com/estree/estree/compare/b3de58c9997504d6fba04b72f76e6dd1619ee4eb...1da8e603237144f44710360f8feb7a9977e905e0) on directive expression statements.
-
-## 5.1.2 (2017-09-04)
-
-### Bug fixes
-
-Disable parsing of legacy HTML-style comments in modules.
-
-Fix parsing of async methods whose names are keywords.
-
-## 5.1.1 (2017-07-06)
-
-### Bug fixes
-
-Fix problem with disambiguating regexp and division after a class.
-
-## 5.1.0 (2017-07-05)
-
-### Bug fixes
-
-Fix tokenizing of regexps in an object-desctructuring `for`/`of` loop and after `yield`.
-
-Parse zero-prefixed numbers with non-octal digits as decimal.
-
-Allow object/array patterns in rest parameters.
-
-Don't error when `yield` is used as a property name.
-
-Allow `async` as a shorthand object property.
-
-### New features
-
-Implement the [template literal revision proposal](https://github.com/tc39/proposal-template-literal-revision) for ES9.
-
-## 5.0.3 (2017-04-01)
-
-### Bug fixes
-
-Fix spurious duplicate variable definition errors for named functions.
-
-## 5.0.2 (2017-03-30)
-
-### Bug fixes
-
-A binary operator after a parenthesized arrow expression is no longer incorrectly treated as an error.
-
-## 5.0.0 (2017-03-28)
-
-### Bug fixes
-
-Raise an error for duplicated lexical bindings.
-
-Fix spurious error when an assignement expression occurred after a spread expression.
-
-Accept regular expressions after `of` (in `for`/`of`), `yield` (in a generator), and braced arrow functions.
-
-Allow labels in front or `var` declarations, even in strict mode.
-
-### Breaking changes
-
-Parse declarations following `export default` as declaration nodes, not expressions. This means that class and function declarations nodes can now have `null` as their `id`.
-
-## 4.0.11 (2017-02-07)
-
-### Bug fixes
-
-Allow all forms of member expressions to be parenthesized as lvalue.
-
-## 4.0.10 (2017-02-07)
-
-### Bug fixes
-
-Don't expect semicolons after default-exported functions or classes, even when they are expressions.
-
-Check for use of `'use strict'` directives in non-simple parameter functions, even when already in strict mode.
-
-## 4.0.9 (2017-02-06)
-
-### Bug fixes
-
-Fix incorrect error raised for parenthesized simple assignment targets, so that `(x) = 1` parses again.
-
-## 4.0.8 (2017-02-03)
-
-### Bug fixes
-
-Solve spurious parenthesized pattern errors by temporarily erring on the side of accepting programs that our delayed errors don't handle correctly yet.
-
-## 4.0.7 (2017-02-02)
-
-### Bug fixes
-
-Accept invalidly rejected code like `(x).y = 2` again.
-
-Don't raise an error when a function _inside_ strict code has a non-simple parameter list.
-
-## 4.0.6 (2017-02-02)
-
-### Bug fixes
-
-Fix exponential behavior (manifesting itself as a complete hang for even relatively small source files) introduced by the new 'use strict' check.
-
-## 4.0.5 (2017-02-02)
-
-### Bug fixes
-
-Disallow parenthesized pattern expressions.
-
-Allow keywords as export names.
-
-Don't allow the `async` keyword to be parenthesized.
-
-Properly raise an error when a keyword contains a character escape.
-
-Allow `"use strict"` to appear after other string literal expressions.
-
-Disallow labeled declarations.
-
-## 4.0.4 (2016-12-19)
-
-### Bug fixes
-
-Fix crash when `export` was followed by a keyword that can't be
-exported.
-
-## 4.0.3 (2016-08-16)
-
-### Bug fixes
-
-Allow regular function declarations inside single-statement `if` branches in loose mode. Forbid them entirely in strict mode.
-
-Properly parse properties named `async` in ES2017 mode.
-
-Fix bug where reserved words were broken in ES2017 mode.
-
-## 4.0.2 (2016-08-11)
-
-### Bug fixes
-
-Don't ignore period or 'e' characters after octal numbers.
-
-Fix broken parsing for call expressions in default parameter values of arrow functions.
-
-## 4.0.1 (2016-08-08)
-
-### Bug fixes
-
-Fix false positives in duplicated export name errors.
-
-## 4.0.0 (2016-08-07)
-
-### Breaking changes
-
-The default `ecmaVersion` option value is now 7.
-
-A number of internal method signatures changed, so plugins might need to be updated.
-
-### Bug fixes
-
-The parser now raises errors on duplicated export names.
-
-`arguments` and `eval` can now be used in shorthand properties.
-
-Duplicate parameter names in non-simple argument lists now always produce an error.
-
-### New features
-
-The `ecmaVersion` option now also accepts year-style version numbers
-(2015, etc).
-
-Support for `async`/`await` syntax when `ecmaVersion` is >= 8.
-
-Support for trailing commas in call expressions when `ecmaVersion` is >= 8.
-
-## 3.3.0 (2016-07-25)
-
-### Bug fixes
-
-Fix bug in tokenizing of regexp operator after a function declaration.
-
-Fix parser crash when parsing an array pattern with a hole.
-
-### New features
-
-Implement check against complex argument lists in functions that enable strict mode in ES7.
-
-## 3.2.0 (2016-06-07)
-
-### Bug fixes
-
-Improve handling of lack of unicode regexp support in host
-environment.
-
-Properly reject shorthand properties whose name is a keyword.
-
-### New features
-
-Visitors created with `visit.make` now have their base as _prototype_, rather than copying properties into a fresh object.
-
-## 3.1.0 (2016-04-18)
-
-### Bug fixes
-
-Properly tokenize the division operator directly after a function expression.
-
-Allow trailing comma in destructuring arrays.
-
-## 3.0.4 (2016-02-25)
-
-### Fixes
-
-Allow update expressions as left-hand-side of the ES7 exponential operator.
-
-## 3.0.2 (2016-02-10)
-
-### Fixes
-
-Fix bug that accidentally made `undefined` a reserved word when parsing ES7.
-
-## 3.0.0 (2016-02-10)
-
-### Breaking changes
-
-The default value of the `ecmaVersion` option is now 6 (used to be 5).
-
-Support for comprehension syntax (which was dropped from the draft spec) has been removed.
-
-### Fixes
-
-`let` and `yield` are now “contextual keywords”, meaning you can mostly use them as identifiers in ES5 non-strict code.
-
-A parenthesized class or function expression after `export default` is now parsed correctly.
-
-### New features
-
-When `ecmaVersion` is set to 7, Acorn will parse the exponentiation operator (`**`).
-
-The identifier character ranges are now based on Unicode 8.0.0.
-
-Plugins can now override the `raiseRecoverable` method to override the way non-critical errors are handled.
-
-## 2.7.0 (2016-01-04)
-
-### Fixes
-
-Stop allowing rest parameters in setters.
-
-Disallow `y` rexexp flag in ES5.
-
-Disallow `\00` and `\000` escapes in strict mode.
-
-Raise an error when an import name is a reserved word.
-
-## 2.6.2 (2015-11-10)
-
-### Fixes
-
-Don't crash when no options object is passed.
-
-## 2.6.0 (2015-11-09)
-
-### Fixes
-
-Add `await` as a reserved word in module sources.
-
-Disallow `yield` in a parameter default value for a generator.
-
-Forbid using a comma after a rest pattern in an array destructuring.
-
-### New features
-
-Support parsing stdin in command-line tool.
-
-## 2.5.0 (2015-10-27)
-
-### Fixes
-
-Fix tokenizer support in the command-line tool.
-
-Stop allowing `new.target` outside of functions.
-
-Remove legacy `guard` and `guardedHandler` properties from try nodes.
-
-Stop allowing multiple `__proto__` properties on an object literal in strict mode.
-
-Don't allow rest parameters to be non-identifier patterns.
-
-Check for duplicate paramter names in arrow functions.
diff --git a/node_modules/acorn-globals/node_modules/acorn/LICENSE b/node_modules/acorn-globals/node_modules/acorn/LICENSE
deleted file mode 100644
index 2c0632b..0000000
--- a/node_modules/acorn-globals/node_modules/acorn/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2012-2018 by 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/acorn-globals/node_modules/acorn/README.md b/node_modules/acorn-globals/node_modules/acorn/README.md
deleted file mode 100644
index bcf85cc..0000000
--- a/node_modules/acorn-globals/node_modules/acorn/README.md
+++ /dev/null
@@ -1,269 +0,0 @@
-# Acorn
-
-A tiny, fast JavaScript parser written in JavaScript.
-
-## Community
-
-Acorn is open source software released under an
-[MIT license](https://github.com/acornjs/acorn/blob/master/acorn/LICENSE).
-
-You are welcome to
-[report bugs](https://github.com/acornjs/acorn/issues) or create pull
-requests on [github](https://github.com/acornjs/acorn). For questions
-and discussion, please use the
-[Tern discussion forum](https://discuss.ternjs.net).
-
-## Installation
-
-The easiest way to install acorn is from [`npm`](https://www.npmjs.com/):
-
-```sh
-npm install acorn
-```
-
-Alternately, you can download the source and build acorn yourself:
-
-```sh
-git clone https://github.com/acornjs/acorn.git
-cd acorn
-npm install
-```
-
-## Interface
-
-**parse**`(input, options)` is the main interface to the library. The
-`input` parameter is a string, `options` can be undefined or an object
-setting some of the options listed below. The return value will be an
-abstract syntax tree object as specified by the [ESTree
-spec](https://github.com/estree/estree).
-
-```javascript
-let acorn = require("acorn");
-console.log(acorn.parse("1 + 1"));
-```
-
-When encountering a syntax error, the parser will raise a
-`SyntaxError` object with a meaningful message. The error object will
-have a `pos` property that indicates the string offset at which the
-error occurred, and a `loc` object that contains a `{line, column}`
-object referring to that same position.
-
-Options can be provided by passing a second argument, which should be
-an object containing any of these fields:
-
-- **ecmaVersion**: Indicates the ECMAScript version to parse. Must be
- either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018) or 10 (2019, partial
- support). This influences support for strict mode, the set of
- reserved words, and support for new syntax features. Default is 9.
-
- **NOTE**: Only 'stage 4' (finalized) ECMAScript features are being
- implemented by Acorn. Other proposed new features can be implemented
- through plugins.
-
-- **sourceType**: Indicate the mode the code should be parsed in. Can be
- either `"script"` or `"module"`. This influences global strict mode
- and parsing of `import` and `export` declarations.
-
- **NOTE**: If set to `"module"`, then static `import` / `export` syntax
- will be valid, even if `ecmaVersion` is less than 6.
-
-- **onInsertedSemicolon**: If given a callback, that callback will be
- called whenever a missing semicolon is inserted by the parser. The
- callback will be given the character offset of the point where the
- semicolon is inserted as argument, and if `locations` is on, also a
- `{line, column}` object representing this position.
-
-- **onTrailingComma**: Like `onInsertedSemicolon`, but for trailing
- commas.
-
-- **allowReserved**: If `false`, using a reserved word will generate
- an error. Defaults to `true` for `ecmaVersion` 3, `false` for higher
- versions. When given the value `"never"`, reserved words and
- keywords can also not be used as property names (as in Internet
- Explorer's old parser).
-
-- **allowReturnOutsideFunction**: By default, a return statement at
- the top level raises an error. Set this to `true` to accept such
- code.
-
-- **allowImportExportEverywhere**: By default, `import` and `export`
- declarations can only appear at a program's top level. Setting this
- option to `true` allows them anywhere where a statement is allowed.
-
-- **allowAwaitOutsideFunction**: By default, `await` expressions can
- only appear inside `async` functions. Setting this option to
- `true` allows to have top-level `await` expressions. They are
- still not allowed in non-`async` functions, though.
-
-- **allowHashBang**: When this is enabled (off by default), if the
- code starts with the characters `#!` (as in a shellscript), the
- first line will be treated as a comment.
-
-- **locations**: When `true`, each node has a `loc` object attached
- with `start` and `end` subobjects, each of which contains the
- one-based line and zero-based column numbers in `{line, column}`
- form. Default is `false`.
-
-- **onToken**: If a function is passed for this option, each found
- token will be passed in same format as tokens returned from
- `tokenizer().getToken()`.
-
- If array is passed, each found token is pushed to it.
-
- Note that you are not allowed to call the parser from the
- callback—that will corrupt its internal state.
-
-- **onComment**: If a function is passed for this option, whenever a
- comment is encountered the function will be called with the
- following parameters:
-
- - `block`: `true` if the comment is a block comment, false if it
- is a line comment.
- - `text`: The content of the comment.
- - `start`: Character offset of the start of the comment.
- - `end`: Character offset of the end of the comment.
-
- When the `locations` options is on, the `{line, column}` locations
- of the comment’s start and end are passed as two additional
- parameters.
-
- If array is passed for this option, each found comment is pushed
- to it as object in Esprima format:
-
- ```javascript
- {
- "type": "Line" | "Block",
- "value": "comment text",
- "start": Number,
- "end": Number,
- // If `locations` option is on:
- "loc": {
- "start": {line: Number, column: Number}
- "end": {line: Number, column: Number}
- },
- // If `ranges` option is on:
- "range": [Number, Number]
- }
- ```
-
- Note that you are not allowed to call the parser from the
- callback—that will corrupt its internal state.
-
-- **ranges**: Nodes have their start and end characters offsets
- recorded in `start` and `end` properties (directly on the node,
- rather than the `loc` object, which holds line/column data. To also
- add a
- [semi-standardized](https://bugzilla.mozilla.org/show_bug.cgi?id=745678)
- `range` property holding a `[start, end]` array with the same
- numbers, set the `ranges` option to `true`.
-
-- **program**: It is possible to parse multiple files into a single
- AST by passing the tree produced by parsing the first file as the
- `program` option in subsequent parses. This will add the toplevel
- forms of the parsed file to the "Program" (top) node of an existing
- parse tree.
-
-- **sourceFile**: When the `locations` option is `true`, you can pass
- this option to add a `source` attribute in every node’s `loc`
- object. Note that the contents of this option are not examined or
- processed in any way; you are free to use whatever format you
- choose.
-
-- **directSourceFile**: Like `sourceFile`, but a `sourceFile` property
- will be added (regardless of the `location` option) directly to the
- nodes, rather than the `loc` object.
-
-- **preserveParens**: If this option is `true`, parenthesized expressions
- are represented by (non-standard) `ParenthesizedExpression` nodes
- that have a single `expression` property containing the expression
- inside parentheses.
-
-**parseExpressionAt**`(input, offset, options)` will parse a single
-expression in a string, and return its AST. It will not complain if
-there is more of the string left after the expression.
-
-**tokenizer**`(input, options)` returns an object with a `getToken`
-method that can be called repeatedly to get the next token, a `{start,
-end, type, value}` object (with added `loc` property when the
-`locations` option is enabled and `range` property when the `ranges`
-option is enabled). When the token's type is `tokTypes.eof`, you
-should stop calling the method, since it will keep returning that same
-token forever.
-
-In ES6 environment, returned result can be used as any other
-protocol-compliant iterable:
-
-```javascript
-for (let token of acorn.tokenizer(str)) {
- // iterate over the tokens
-}
-
-// transform code to array of tokens:
-var tokens = [...acorn.tokenizer(str)];
-```
-
-**tokTypes** holds an object mapping names to the token type objects
-that end up in the `type` properties of tokens.
-
-**getLineInfo**`(input, offset)` can be used to get a `{line,
-column}` object for a given program string and offset.
-
-### The `Parser` class
-
-Instances of the **`Parser`** class contain all the state and logic
-that drives a parse. It has static methods `parse`,
-`parseExpressionAt`, and `tokenizer` that match the top-level
-functions by the same name.
-
-When extending the parser with plugins, you need to call these methods
-on the extended version of the class. To extend a parser with plugins,
-you can use its static `extend` method.
-
-```javascript
-var acorn = require("acorn");
-var jsx = require("acorn-jsx");
-var JSXParser = acorn.Parser.extend(jsx());
-JSXParser.parse("foo()");
-```
-
-The `extend` method takes any number of plugin values, and returns a
-new `Parser` class that includes the extra parser logic provided by
-the plugins.
-
-## Command line interface
-
-The `bin/acorn` utility can be used to parse a file from the command
-line. It accepts as arguments its input file and the following
-options:
-
-- `--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|--ecma10`: Sets the ECMAScript version
- to parse. Default is version 9.
-
-- `--module`: Sets the parsing mode to `"module"`. Is set to `"script"` otherwise.
-
-- `--locations`: Attaches a "loc" object to each node with "start" and
- "end" subobjects, each of which contains the one-based line and
- zero-based column numbers in `{line, column}` form.
-
-- `--allow-hash-bang`: If the code starts with the characters #! (as
- in a shellscript), the first line will be treated as a comment.
-
-- `--compact`: No whitespace is used in the AST output.
-
-- `--silent`: Do not output the AST, just return the exit status.
-
-- `--help`: Print the usage information and quit.
-
-The utility spits out the syntax tree as JSON data.
-
-## Existing plugins
-
- - [`acorn-jsx`](https://github.com/RReverser/acorn-jsx): Parse [Facebook JSX syntax extensions](https://github.com/facebook/jsx)
-
-Plugins for ECMAScript proposals:
-
- - [`acorn-stage3`](https://github.com/acornjs/acorn-stage3): Parse most stage 3 proposals, bundling:
- - [`acorn-class-fields`](https://github.com/acornjs/acorn-class-fields): Parse [class fields proposal](https://github.com/tc39/proposal-class-fields)
- - [`acorn-import-meta`](https://github.com/acornjs/acorn-import-meta): Parse [import.meta proposal](https://github.com/tc39/proposal-import-meta)
- - [`acorn-numeric-separator`](https://github.com/acornjs/acorn-numeric-separator): Parse [numeric separator proposal](https://github.com/tc39/proposal-numeric-separator)
- - [`acorn-private-methods`](https://github.com/acornjs/acorn-private-methods): parse [private methods, getters and setters proposal](https://github.com/tc39/proposal-private-methods)n
diff --git a/node_modules/acorn-globals/node_modules/acorn/package.json b/node_modules/acorn-globals/node_modules/acorn/package.json
deleted file mode 100644
index 9281d70..0000000
--- a/node_modules/acorn-globals/node_modules/acorn/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "acorn",
- "description": "ECMAScript parser",
- "homepage": "https://github.com/acornjs/acorn",
- "main": "dist/acorn.js",
- "module": "dist/acorn.mjs",
- "version": "6.4.2",
- "engines": {"node": ">=0.4.0"},
- "maintainers": [
- {
- "name": "Marijn Haverbeke",
- "email": "marijnh@gmail.com",
- "web": "https://marijnhaverbeke.nl"
- },
- {
- "name": "Ingvar Stepanyan",
- "email": "me@rreverser.com",
- "web": "https://rreverser.com/"
- },
- {
- "name": "Adrian Heine",
- "web": "http://adrianheine.de"
- }
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/acornjs/acorn.git"
- },
- "license": "MIT",
- "scripts": {
- "prepare": "cd ..; npm run build:main && npm run build:bin"
- },
- "bin": {"acorn": "./bin/acorn"}
-}
diff --git a/node_modules/acorn-globals/package.json b/node_modules/acorn-globals/package.json
deleted file mode 100644
index 9877227..0000000
--- a/node_modules/acorn-globals/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "acorn-globals",
- "version": "4.3.4",
- "description": "Detect global variables in JavaScript using acorn",
- "keywords": [
- "ast",
- "variable",
- "name",
- "lexical",
- "scope",
- "local",
- "global",
- "implicit"
- ],
- "files": [
- "index.js",
- "LICENSE"
- ],
- "dependencies": {
- "acorn": "^6.0.1",
- "acorn-walk": "^6.0.1"
- },
- "devDependencies": {
- "testit": "^3.0.0"
- },
- "scripts": {
- "test": "node test"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/ForbesLindesay/acorn-globals.git"
- },
- "author": "ForbesLindesay",
- "license": "MIT"
-}
\ No newline at end of file
diff --git a/node_modules/acorn-walk/CHANGELOG.md b/node_modules/acorn-walk/CHANGELOG.md
deleted file mode 100644
index c02dbd7..0000000
--- a/node_modules/acorn-walk/CHANGELOG.md
+++ /dev/null
@@ -1,103 +0,0 @@
-## 6.2.0 (2017-07-04)
-
-### New features
-
-Add support for `Import` nodes.
-
-## 6.1.0 (2018-09-28)
-
-### New features
-
-The walker now walks `TemplateElement` nodes.
-
-## 6.0.1 (2018-09-14)
-
-### Bug fixes
-
-Fix bad "main" field in package.json.
-
-## 6.0.0 (2018-09-14)
-
-### Breaking changes
-
-This is now a separate package, `acorn-walk`, rather than part of the main `acorn` package.
-
-The `ScopeBody` and `ScopeExpression` meta-node-types are no longer supported.
-
-## 5.7.1 (2018-06-15)
-
-### Bug fixes
-
-Make sure the walker and bin files are rebuilt on release (the previous release didn't get the up-to-date versions).
-
-## 5.7.0 (2018-06-15)
-
-### Bug fixes
-
-Fix crash in walker when walking a binding-less catch node.
-
-## 5.6.2 (2018-06-05)
-
-### Bug fixes
-
-In the walker, go back to allowing the `baseVisitor` argument to be null to default to the default base everywhere.
-
-## 5.6.1 (2018-06-01)
-
-### Bug fixes
-
-Fix regression when passing `null` as fourth argument to `walk.recursive`.
-
-## 5.6.0 (2018-05-31)
-
-### Bug fixes
-
-Fix a bug in the walker that caused a crash when walking an object pattern spread.
-
-## 5.5.1 (2018-03-06)
-
-### Bug fixes
-
-Fix regression in walker causing property values in object patterns to be walked as expressions.
-
-## 5.5.0 (2018-02-27)
-
-### Bug fixes
-
-Support object spread in the AST walker.
-
-## 5.4.1 (2018-02-02)
-
-### Bug fixes
-
-5.4.0 somehow accidentally included an old version of walk.js.
-
-## 5.2.0 (2017-10-30)
-
-### Bug fixes
-
-The `full` and `fullAncestor` walkers no longer visit nodes multiple times.
-
-## 5.1.0 (2017-07-05)
-
-### New features
-
-New walker functions `full` and `fullAncestor`.
-
-## 3.2.0 (2016-06-07)
-
-### New features
-
-Make it possible to use `visit.ancestor` with a walk state.
-
-## 3.1.0 (2016-04-18)
-
-### New features
-
-The walker now allows defining handlers for `CatchClause` nodes.
-
-## 2.5.2 (2015-10-27)
-
-### Fixes
-
-Fix bug where the walker walked an exported `let` statement as an expression.
diff --git a/node_modules/acorn-walk/LICENSE b/node_modules/acorn-walk/LICENSE
deleted file mode 100644
index 2c0632b..0000000
--- a/node_modules/acorn-walk/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2012-2018 by 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/acorn-walk/README.md b/node_modules/acorn-walk/README.md
deleted file mode 100644
index e192bac..0000000
--- a/node_modules/acorn-walk/README.md
+++ /dev/null
@@ -1,126 +0,0 @@
-# Acorn AST walker
-
-An abstract syntax tree walker for the
-[ESTree](https://github.com/estree/estree) format.
-
-## Community
-
-Acorn is open source software released under an
-[MIT license](https://github.com/acornjs/acorn/blob/master/acorn-walk/LICENSE).
-
-You are welcome to
-[report bugs](https://github.com/acornjs/acorn/issues) or create pull
-requests on [github](https://github.com/acornjs/acorn). For questions
-and discussion, please use the
-[Tern discussion forum](https://discuss.ternjs.net).
-
-## Installation
-
-The easiest way to install acorn is from [`npm`](https://www.npmjs.com/):
-
-```sh
-npm install acorn-walk
-```
-
-Alternately, you can download the source and build acorn yourself:
-
-```sh
-git clone https://github.com/acornjs/acorn.git
-cd acorn
-npm install
-```
-
-## Interface
-
-An algorithm for recursing through a syntax tree is stored as an
-object, with a property for each tree node type holding a function
-that will recurse through such a node. There are several ways to run
-such a walker.
-
-**simple**`(node, visitors, base, state)` does a 'simple' walk over a
-tree. `node` should be the AST node to walk, and `visitors` an object
-with properties whose names correspond to node types in the [ESTree
-spec](https://github.com/estree/estree). The properties should contain
-functions that will be called with the node object and, if applicable
-the state at that point. The last two arguments are optional. `base`
-is a walker algorithm, and `state` is a start state. The default
-walker will simply visit all statements and expressions and not
-produce a meaningful state. (An example of a use of state is to track
-scope at each point in the tree.)
-
-```js
-const acorn = require("acorn")
-const walk = require("acorn-walk")
-
-walk.simple(acorn.parse("let x = 10"), {
- Literal(node) {
- console.log(`Found a literal: ${node.value}`)
- }
-})
-```
-
-**ancestor**`(node, visitors, base, state)` does a 'simple' walk over
-a tree, building up an array of ancestor nodes (including the current node)
-and passing the array to the callbacks as a third parameter.
-
-```js
-const acorn = require("acorn")
-const walk = require("acorn-walk")
-
-walk.ancestor(acorn.parse("foo('hi')"), {
- Literal(_, ancestors) {
- console.log("This literal's ancestors are:", ancestors.map(n => n.type))
- }
-})
-```
-
-**recursive**`(node, state, functions, base)` does a 'recursive'
-walk, where the walker functions are responsible for continuing the
-walk on the child nodes of their target node. `state` is the start
-state, and `functions` should contain an object that maps node types
-to walker functions. Such functions are called with `(node, state, c)`
-arguments, and can cause the walk to continue on a sub-node by calling
-the `c` argument on it with `(node, state)` arguments. The optional
-`base` argument provides the fallback walker functions for node types
-that aren't handled in the `functions` object. If not given, the
-default walkers will be used.
-
-**make**`(functions, base)` builds a new walker object by using the
-walker functions in `functions` and filling in the missing ones by
-taking defaults from `base`.
-
-**full**`(node, callback, base, state)` does a 'full' walk over a
-tree, calling the callback with the arguments (node, state, type) for
-each node
-
-**fullAncestor**`(node, callback, base, state)` does a 'full' walk
-over a tree, building up an array of ancestor nodes (including the
-current node) and passing the array to the callbacks as a third
-parameter.
-
-```js
-const acorn = require("acorn")
-const walk = require("acorn-walk")
-
-walk.full(acorn.parse("1 + 1"), node => {
- console.log(`There's a ${node.type} node at ${node.ch}`)
-})
-```
-
-**findNodeAt**`(node, start, end, test, base, state)` tries to locate
-a node in a tree at the given start and/or end offsets, which
-satisfies the predicate `test`. `start` and `end` can be either `null`
-(as wildcard) or a number. `test` may be a string (indicating a node
-type) or a function that takes `(nodeType, node)` arguments and
-returns a boolean indicating whether this node is interesting. `base`
-and `state` are optional, and can be used to specify a custom walker.
-Nodes are tested from inner to outer, so if two nodes match the
-boundaries, the inner one will be preferred.
-
-**findNodeAround**`(node, pos, test, base, state)` is a lot like
-`findNodeAt`, but will match any node that exists 'around' (spanning)
-the given position.
-
-**findNodeAfter**`(node, pos, test, base, state)` is similar to
-`findNodeAround`, but will match all nodes *after* the given position
-(testing outer nodes before inner nodes).
diff --git a/node_modules/acorn-walk/package.json b/node_modules/acorn-walk/package.json
deleted file mode 100644
index 239e6c7..0000000
--- a/node_modules/acorn-walk/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "acorn-walk",
- "description": "ECMAScript (ESTree) AST walker",
- "homepage": "https://github.com/acornjs/acorn",
- "main": "dist/walk.js",
- "module": "dist/walk.mjs",
- "version": "6.2.0",
- "engines": {"node": ">=0.4.0"},
- "maintainers": [
- {
- "name": "Marijn Haverbeke",
- "email": "marijnh@gmail.com",
- "web": "https://marijnhaverbeke.nl"
- },
- {
- "name": "Ingvar Stepanyan",
- "email": "me@rreverser.com",
- "web": "https://rreverser.com/"
- },
- {
- "name": "Adrian Heine",
- "web": "http://adrianheine.de"
- }
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/acornjs/acorn.git"
- },
- "scripts": {
- "prepare": "cd ..; npm run build:walk"
- },
- "license": "MIT"
-}
diff --git a/node_modules/acorn/CHANGELOG.md b/node_modules/acorn/CHANGELOG.md
deleted file mode 100644
index 164fd27..0000000
--- a/node_modules/acorn/CHANGELOG.md
+++ /dev/null
@@ -1,620 +0,0 @@
-## 7.4.0 (2020-08-03)
-
-### New features
-
-Add support for logical assignment operators.
-
-Add support for numeric separators.
-
-## 7.3.1 (2020-06-11)
-
-### Bug fixes
-
-Make the string in the `version` export match the actual library version.
-
-## 7.3.0 (2020-06-11)
-
-### Bug fixes
-
-Fix a bug that caused parsing of object patterns with a property named `set` that had a default value to fail.
-
-### New features
-
-Add support for optional chaining (`?.`).
-
-## 7.2.0 (2020-05-09)
-
-### Bug fixes
-
-Fix precedence issue in parsing of async arrow functions.
-
-### New features
-
-Add support for nullish coalescing.
-
-Add support for `import.meta`.
-
-Support `export * as ...` syntax.
-
-Upgrade to Unicode 13.
-
-## 6.4.1 (2020-03-09)
-
-### Bug fixes
-
-More carefully check for valid UTF16 surrogate pairs in regexp validator.
-
-## 7.1.1 (2020-03-01)
-
-### Bug fixes
-
-Treat `\8` and `\9` as invalid escapes in template strings.
-
-Allow unicode escapes in property names that are keywords.
-
-Don't error on an exponential operator expression as argument to `await`.
-
-More carefully check for valid UTF16 surrogate pairs in regexp validator.
-
-## 7.1.0 (2019-09-24)
-
-### Bug fixes
-
-Disallow trailing object literal commas when ecmaVersion is less than 5.
-
-### New features
-
-Add a static `acorn` property to the `Parser` class that contains the entire module interface, to allow plugins to access the instance of the library that they are acting on.
-
-## 7.0.0 (2019-08-13)
-
-### Breaking changes
-
-Changes the node format for dynamic imports to use the `ImportExpression` node type, as defined in [ESTree](https://github.com/estree/estree/blob/master/es2020.md#importexpression).
-
-Makes 10 (ES2019) the default value for the `ecmaVersion` option.
-
-## 6.3.0 (2019-08-12)
-
-### New features
-
-`sourceType: "module"` can now be used even when `ecmaVersion` is less than 6, to parse module-style code that otherwise conforms to an older standard.
-
-## 6.2.1 (2019-07-21)
-
-### Bug fixes
-
-Fix bug causing Acorn to treat some characters as identifier characters that shouldn't be treated as such.
-
-Fix issue where setting the `allowReserved` option to `"never"` allowed reserved words in some circumstances.
-
-## 6.2.0 (2019-07-04)
-
-### Bug fixes
-
-Improve valid assignment checking in `for`/`in` and `for`/`of` loops.
-
-Disallow binding `let` in patterns.
-
-### New features
-
-Support bigint syntax with `ecmaVersion` >= 11.
-
-Support dynamic `import` syntax with `ecmaVersion` >= 11.
-
-Upgrade to Unicode version 12.
-
-## 6.1.1 (2019-02-27)
-
-### Bug fixes
-
-Fix bug that caused parsing default exports of with names to fail.
-
-## 6.1.0 (2019-02-08)
-
-### Bug fixes
-
-Fix scope checking when redefining a `var` as a lexical binding.
-
-### New features
-
-Split up `parseSubscripts` to use an internal `parseSubscript` method to make it easier to extend with plugins.
-
-## 6.0.7 (2019-02-04)
-
-### Bug fixes
-
-Check that exported bindings are defined.
-
-Don't treat `\u180e` as a whitespace character.
-
-Check for duplicate parameter names in methods.
-
-Don't allow shorthand properties when they are generators or async methods.
-
-Forbid binding `await` in async arrow function's parameter list.
-
-## 6.0.6 (2019-01-30)
-
-### Bug fixes
-
-The content of class declarations and expressions is now always parsed in strict mode.
-
-Don't allow `let` or `const` to bind the variable name `let`.
-
-Treat class declarations as lexical.
-
-Don't allow a generator function declaration as the sole body of an `if` or `else`.
-
-Ignore `"use strict"` when after an empty statement.
-
-Allow string line continuations with special line terminator characters.
-
-Treat `for` bodies as part of the `for` scope when checking for conflicting bindings.
-
-Fix bug with parsing `yield` in a `for` loop initializer.
-
-Implement special cases around scope checking for functions.
-
-## 6.0.5 (2019-01-02)
-
-### Bug fixes
-
-Fix TypeScript type for `Parser.extend` and add `allowAwaitOutsideFunction` to options type.
-
-Don't treat `let` as a keyword when the next token is `{` on the next line.
-
-Fix bug that broke checking for parentheses around an object pattern in a destructuring assignment when `preserveParens` was on.
-
-## 6.0.4 (2018-11-05)
-
-### Bug fixes
-
-Further improvements to tokenizing regular expressions in corner cases.
-
-## 6.0.3 (2018-11-04)
-
-### Bug fixes
-
-Fix bug in tokenizing an expression-less return followed by a function followed by a regular expression.
-
-Remove stray symlink in the package tarball.
-
-## 6.0.2 (2018-09-26)
-
-### Bug fixes
-
-Fix bug where default expressions could fail to parse inside an object destructuring assignment expression.
-
-## 6.0.1 (2018-09-14)
-
-### Bug fixes
-
-Fix wrong value in `version` export.
-
-## 6.0.0 (2018-09-14)
-
-### Bug fixes
-
-Better handle variable-redefinition checks for catch bindings and functions directly under if statements.
-
-Forbid `new.target` in top-level arrow functions.
-
-Fix issue with parsing a regexp after `yield` in some contexts.
-
-### New features
-
-The package now comes with TypeScript definitions.
-
-### Breaking changes
-
-The default value of the `ecmaVersion` option is now 9 (2018).
-
-Plugins work differently, and will have to be rewritten to work with this version.
-
-The loose parser and walker have been moved into separate packages (`acorn-loose` and `acorn-walk`).
-
-## 5.7.3 (2018-09-10)
-
-### Bug fixes
-
-Fix failure to tokenize regexps after expressions like `x.of`.
-
-Better error message for unterminated template literals.
-
-## 5.7.2 (2018-08-24)
-
-### Bug fixes
-
-Properly handle `allowAwaitOutsideFunction` in for statements.
-
-Treat function declarations at the top level of modules like let bindings.
-
-Don't allow async function declarations as the only statement under a label.
-
-## 5.7.0 (2018-06-15)
-
-### New features
-
-Upgraded to Unicode 11.
-
-## 5.6.0 (2018-05-31)
-
-### New features
-
-Allow U+2028 and U+2029 in string when ECMAVersion >= 10.
-
-Allow binding-less catch statements when ECMAVersion >= 10.
-
-Add `allowAwaitOutsideFunction` option for parsing top-level `await`.
-
-## 5.5.3 (2018-03-08)
-
-### Bug fixes
-
-A _second_ republish of the code in 5.5.1, this time with yarn, to hopefully get valid timestamps.
-
-## 5.5.2 (2018-03-08)
-
-### Bug fixes
-
-A republish of the code in 5.5.1 in an attempt to solve an issue with the file timestamps in the npm package being 0.
-
-## 5.5.1 (2018-03-06)
-
-### Bug fixes
-
-Fix misleading error message for octal escapes in template strings.
-
-## 5.5.0 (2018-02-27)
-
-### New features
-
-The identifier character categorization is now based on Unicode version 10.
-
-Acorn will now validate the content of regular expressions, including new ES9 features.
-
-## 5.4.0 (2018-02-01)
-
-### Bug fixes
-
-Disallow duplicate or escaped flags on regular expressions.
-
-Disallow octal escapes in strings in strict mode.
-
-### New features
-
-Add support for async iteration.
-
-Add support for object spread and rest.
-
-## 5.3.0 (2017-12-28)
-
-### Bug fixes
-
-Fix parsing of floating point literals with leading zeroes in loose mode.
-
-Allow duplicate property names in object patterns.
-
-Don't allow static class methods named `prototype`.
-
-Disallow async functions directly under `if` or `else`.
-
-Parse right-hand-side of `for`/`of` as an assignment expression.
-
-Stricter parsing of `for`/`in`.
-
-Don't allow unicode escapes in contextual keywords.
-
-### New features
-
-Parsing class members was factored into smaller methods to allow plugins to hook into it.
-
-## 5.2.1 (2017-10-30)
-
-### Bug fixes
-
-Fix a token context corruption bug.
-
-## 5.2.0 (2017-10-30)
-
-### Bug fixes
-
-Fix token context tracking for `class` and `function` in property-name position.
-
-Make sure `%*` isn't parsed as a valid operator.
-
-Allow shorthand properties `get` and `set` to be followed by default values.
-
-Disallow `super` when not in callee or object position.
-
-### New features
-
-Support [`directive` property](https://github.com/estree/estree/compare/b3de58c9997504d6fba04b72f76e6dd1619ee4eb...1da8e603237144f44710360f8feb7a9977e905e0) on directive expression statements.
-
-## 5.1.2 (2017-09-04)
-
-### Bug fixes
-
-Disable parsing of legacy HTML-style comments in modules.
-
-Fix parsing of async methods whose names are keywords.
-
-## 5.1.1 (2017-07-06)
-
-### Bug fixes
-
-Fix problem with disambiguating regexp and division after a class.
-
-## 5.1.0 (2017-07-05)
-
-### Bug fixes
-
-Fix tokenizing of regexps in an object-desctructuring `for`/`of` loop and after `yield`.
-
-Parse zero-prefixed numbers with non-octal digits as decimal.
-
-Allow object/array patterns in rest parameters.
-
-Don't error when `yield` is used as a property name.
-
-Allow `async` as a shorthand object property.
-
-### New features
-
-Implement the [template literal revision proposal](https://github.com/tc39/proposal-template-literal-revision) for ES9.
-
-## 5.0.3 (2017-04-01)
-
-### Bug fixes
-
-Fix spurious duplicate variable definition errors for named functions.
-
-## 5.0.2 (2017-03-30)
-
-### Bug fixes
-
-A binary operator after a parenthesized arrow expression is no longer incorrectly treated as an error.
-
-## 5.0.0 (2017-03-28)
-
-### Bug fixes
-
-Raise an error for duplicated lexical bindings.
-
-Fix spurious error when an assignement expression occurred after a spread expression.
-
-Accept regular expressions after `of` (in `for`/`of`), `yield` (in a generator), and braced arrow functions.
-
-Allow labels in front or `var` declarations, even in strict mode.
-
-### Breaking changes
-
-Parse declarations following `export default` as declaration nodes, not expressions. This means that class and function declarations nodes can now have `null` as their `id`.
-
-## 4.0.11 (2017-02-07)
-
-### Bug fixes
-
-Allow all forms of member expressions to be parenthesized as lvalue.
-
-## 4.0.10 (2017-02-07)
-
-### Bug fixes
-
-Don't expect semicolons after default-exported functions or classes, even when they are expressions.
-
-Check for use of `'use strict'` directives in non-simple parameter functions, even when already in strict mode.
-
-## 4.0.9 (2017-02-06)
-
-### Bug fixes
-
-Fix incorrect error raised for parenthesized simple assignment targets, so that `(x) = 1` parses again.
-
-## 4.0.8 (2017-02-03)
-
-### Bug fixes
-
-Solve spurious parenthesized pattern errors by temporarily erring on the side of accepting programs that our delayed errors don't handle correctly yet.
-
-## 4.0.7 (2017-02-02)
-
-### Bug fixes
-
-Accept invalidly rejected code like `(x).y = 2` again.
-
-Don't raise an error when a function _inside_ strict code has a non-simple parameter list.
-
-## 4.0.6 (2017-02-02)
-
-### Bug fixes
-
-Fix exponential behavior (manifesting itself as a complete hang for even relatively small source files) introduced by the new 'use strict' check.
-
-## 4.0.5 (2017-02-02)
-
-### Bug fixes
-
-Disallow parenthesized pattern expressions.
-
-Allow keywords as export names.
-
-Don't allow the `async` keyword to be parenthesized.
-
-Properly raise an error when a keyword contains a character escape.
-
-Allow `"use strict"` to appear after other string literal expressions.
-
-Disallow labeled declarations.
-
-## 4.0.4 (2016-12-19)
-
-### Bug fixes
-
-Fix crash when `export` was followed by a keyword that can't be
-exported.
-
-## 4.0.3 (2016-08-16)
-
-### Bug fixes
-
-Allow regular function declarations inside single-statement `if` branches in loose mode. Forbid them entirely in strict mode.
-
-Properly parse properties named `async` in ES2017 mode.
-
-Fix bug where reserved words were broken in ES2017 mode.
-
-## 4.0.2 (2016-08-11)
-
-### Bug fixes
-
-Don't ignore period or 'e' characters after octal numbers.
-
-Fix broken parsing for call expressions in default parameter values of arrow functions.
-
-## 4.0.1 (2016-08-08)
-
-### Bug fixes
-
-Fix false positives in duplicated export name errors.
-
-## 4.0.0 (2016-08-07)
-
-### Breaking changes
-
-The default `ecmaVersion` option value is now 7.
-
-A number of internal method signatures changed, so plugins might need to be updated.
-
-### Bug fixes
-
-The parser now raises errors on duplicated export names.
-
-`arguments` and `eval` can now be used in shorthand properties.
-
-Duplicate parameter names in non-simple argument lists now always produce an error.
-
-### New features
-
-The `ecmaVersion` option now also accepts year-style version numbers
-(2015, etc).
-
-Support for `async`/`await` syntax when `ecmaVersion` is >= 8.
-
-Support for trailing commas in call expressions when `ecmaVersion` is >= 8.
-
-## 3.3.0 (2016-07-25)
-
-### Bug fixes
-
-Fix bug in tokenizing of regexp operator after a function declaration.
-
-Fix parser crash when parsing an array pattern with a hole.
-
-### New features
-
-Implement check against complex argument lists in functions that enable strict mode in ES7.
-
-## 3.2.0 (2016-06-07)
-
-### Bug fixes
-
-Improve handling of lack of unicode regexp support in host
-environment.
-
-Properly reject shorthand properties whose name is a keyword.
-
-### New features
-
-Visitors created with `visit.make` now have their base as _prototype_, rather than copying properties into a fresh object.
-
-## 3.1.0 (2016-04-18)
-
-### Bug fixes
-
-Properly tokenize the division operator directly after a function expression.
-
-Allow trailing comma in destructuring arrays.
-
-## 3.0.4 (2016-02-25)
-
-### Fixes
-
-Allow update expressions as left-hand-side of the ES7 exponential operator.
-
-## 3.0.2 (2016-02-10)
-
-### Fixes
-
-Fix bug that accidentally made `undefined` a reserved word when parsing ES7.
-
-## 3.0.0 (2016-02-10)
-
-### Breaking changes
-
-The default value of the `ecmaVersion` option is now 6 (used to be 5).
-
-Support for comprehension syntax (which was dropped from the draft spec) has been removed.
-
-### Fixes
-
-`let` and `yield` are now “contextual keywords”, meaning you can mostly use them as identifiers in ES5 non-strict code.
-
-A parenthesized class or function expression after `export default` is now parsed correctly.
-
-### New features
-
-When `ecmaVersion` is set to 7, Acorn will parse the exponentiation operator (`**`).
-
-The identifier character ranges are now based on Unicode 8.0.0.
-
-Plugins can now override the `raiseRecoverable` method to override the way non-critical errors are handled.
-
-## 2.7.0 (2016-01-04)
-
-### Fixes
-
-Stop allowing rest parameters in setters.
-
-Disallow `y` rexexp flag in ES5.
-
-Disallow `\00` and `\000` escapes in strict mode.
-
-Raise an error when an import name is a reserved word.
-
-## 2.6.2 (2015-11-10)
-
-### Fixes
-
-Don't crash when no options object is passed.
-
-## 2.6.0 (2015-11-09)
-
-### Fixes
-
-Add `await` as a reserved word in module sources.
-
-Disallow `yield` in a parameter default value for a generator.
-
-Forbid using a comma after a rest pattern in an array destructuring.
-
-### New features
-
-Support parsing stdin in command-line tool.
-
-## 2.5.0 (2015-10-27)
-
-### Fixes
-
-Fix tokenizer support in the command-line tool.
-
-Stop allowing `new.target` outside of functions.
-
-Remove legacy `guard` and `guardedHandler` properties from try nodes.
-
-Stop allowing multiple `__proto__` properties on an object literal in strict mode.
-
-Don't allow rest parameters to be non-identifier patterns.
-
-Check for duplicate paramter names in arrow functions.
diff --git a/node_modules/acorn/LICENSE b/node_modules/acorn/LICENSE
deleted file mode 100644
index cc5272c..0000000
--- a/node_modules/acorn/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (C) 2012-2018 by 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/acorn/README.md b/node_modules/acorn/README.md
deleted file mode 100644
index 52d2e9b..0000000
--- a/node_modules/acorn/README.md
+++ /dev/null
@@ -1,269 +0,0 @@
-# Acorn
-
-A tiny, fast JavaScript parser written in JavaScript.
-
-## Community
-
-Acorn is open source software released under an
-[MIT license](https://github.com/acornjs/acorn/blob/master/acorn/LICENSE).
-
-You are welcome to
-[report bugs](https://github.com/acornjs/acorn/issues) or create pull
-requests on [github](https://github.com/acornjs/acorn). For questions
-and discussion, please use the
-[Tern discussion forum](https://discuss.ternjs.net).
-
-## Installation
-
-The easiest way to install acorn is from [`npm`](https://www.npmjs.com/):
-
-```sh
-npm install acorn
-```
-
-Alternately, you can download the source and build acorn yourself:
-
-```sh
-git clone https://github.com/acornjs/acorn.git
-cd acorn
-npm install
-```
-
-## Interface
-
-**parse**`(input, options)` is the main interface to the library. The
-`input` parameter is a string, `options` can be undefined or an object
-setting some of the options listed below. The return value will be an
-abstract syntax tree object as specified by the [ESTree
-spec](https://github.com/estree/estree).
-
-```javascript
-let acorn = require("acorn");
-console.log(acorn.parse("1 + 1"));
-```
-
-When encountering a syntax error, the parser will raise a
-`SyntaxError` object with a meaningful message. The error object will
-have a `pos` property that indicates the string offset at which the
-error occurred, and a `loc` object that contains a `{line, column}`
-object referring to that same position.
-
-Options can be provided by passing a second argument, which should be
-an object containing any of these fields:
-
-- **ecmaVersion**: Indicates the ECMAScript version to parse. Must be
- either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), 10 (2019) or 11
- (2020, partial support). This influences support for strict mode,
- the set of reserved words, and support for new syntax features.
- Default is 10.
-
- **NOTE**: Only 'stage 4' (finalized) ECMAScript features are being
- implemented by Acorn. Other proposed new features can be implemented
- through plugins.
-
-- **sourceType**: Indicate the mode the code should be parsed in. Can be
- either `"script"` or `"module"`. This influences global strict mode
- and parsing of `import` and `export` declarations.
-
- **NOTE**: If set to `"module"`, then static `import` / `export` syntax
- will be valid, even if `ecmaVersion` is less than 6.
-
-- **onInsertedSemicolon**: If given a callback, that callback will be
- called whenever a missing semicolon is inserted by the parser. The
- callback will be given the character offset of the point where the
- semicolon is inserted as argument, and if `locations` is on, also a
- `{line, column}` object representing this position.
-
-- **onTrailingComma**: Like `onInsertedSemicolon`, but for trailing
- commas.
-
-- **allowReserved**: If `false`, using a reserved word will generate
- an error. Defaults to `true` for `ecmaVersion` 3, `false` for higher
- versions. When given the value `"never"`, reserved words and
- keywords can also not be used as property names (as in Internet
- Explorer's old parser).
-
-- **allowReturnOutsideFunction**: By default, a return statement at
- the top level raises an error. Set this to `true` to accept such
- code.
-
-- **allowImportExportEverywhere**: By default, `import` and `export`
- declarations can only appear at a program's top level. Setting this
- option to `true` allows them anywhere where a statement is allowed.
-
-- **allowAwaitOutsideFunction**: By default, `await` expressions can
- only appear inside `async` functions. Setting this option to
- `true` allows to have top-level `await` expressions. They are
- still not allowed in non-`async` functions, though.
-
-- **allowHashBang**: When this is enabled (off by default), if the
- code starts with the characters `#!` (as in a shellscript), the
- first line will be treated as a comment.
-
-- **locations**: When `true`, each node has a `loc` object attached
- with `start` and `end` subobjects, each of which contains the
- one-based line and zero-based column numbers in `{line, column}`
- form. Default is `false`.
-
-- **onToken**: If a function is passed for this option, each found
- token will be passed in same format as tokens returned from
- `tokenizer().getToken()`.
-
- If array is passed, each found token is pushed to it.
-
- Note that you are not allowed to call the parser from the
- callback—that will corrupt its internal state.
-
-- **onComment**: If a function is passed for this option, whenever a
- comment is encountered the function will be called with the
- following parameters:
-
- - `block`: `true` if the comment is a block comment, false if it
- is a line comment.
- - `text`: The content of the comment.
- - `start`: Character offset of the start of the comment.
- - `end`: Character offset of the end of the comment.
-
- When the `locations` options is on, the `{line, column}` locations
- of the comment’s start and end are passed as two additional
- parameters.
-
- If array is passed for this option, each found comment is pushed
- to it as object in Esprima format:
-
- ```javascript
- {
- "type": "Line" | "Block",
- "value": "comment text",
- "start": Number,
- "end": Number,
- // If `locations` option is on:
- "loc": {
- "start": {line: Number, column: Number}
- "end": {line: Number, column: Number}
- },
- // If `ranges` option is on:
- "range": [Number, Number]
- }
- ```
-
- Note that you are not allowed to call the parser from the
- callback—that will corrupt its internal state.
-
-- **ranges**: Nodes have their start and end characters offsets
- recorded in `start` and `end` properties (directly on the node,
- rather than the `loc` object, which holds line/column data. To also
- add a
- [semi-standardized](https://bugzilla.mozilla.org/show_bug.cgi?id=745678)
- `range` property holding a `[start, end]` array with the same
- numbers, set the `ranges` option to `true`.
-
-- **program**: It is possible to parse multiple files into a single
- AST by passing the tree produced by parsing the first file as the
- `program` option in subsequent parses. This will add the toplevel
- forms of the parsed file to the "Program" (top) node of an existing
- parse tree.
-
-- **sourceFile**: When the `locations` option is `true`, you can pass
- this option to add a `source` attribute in every node’s `loc`
- object. Note that the contents of this option are not examined or
- processed in any way; you are free to use whatever format you
- choose.
-
-- **directSourceFile**: Like `sourceFile`, but a `sourceFile` property
- will be added (regardless of the `location` option) directly to the
- nodes, rather than the `loc` object.
-
-- **preserveParens**: If this option is `true`, parenthesized expressions
- are represented by (non-standard) `ParenthesizedExpression` nodes
- that have a single `expression` property containing the expression
- inside parentheses.
-
-**parseExpressionAt**`(input, offset, options)` will parse a single
-expression in a string, and return its AST. It will not complain if
-there is more of the string left after the expression.
-
-**tokenizer**`(input, options)` returns an object with a `getToken`
-method that can be called repeatedly to get the next token, a `{start,
-end, type, value}` object (with added `loc` property when the
-`locations` option is enabled and `range` property when the `ranges`
-option is enabled). When the token's type is `tokTypes.eof`, you
-should stop calling the method, since it will keep returning that same
-token forever.
-
-In ES6 environment, returned result can be used as any other
-protocol-compliant iterable:
-
-```javascript
-for (let token of acorn.tokenizer(str)) {
- // iterate over the tokens
-}
-
-// transform code to array of tokens:
-var tokens = [...acorn.tokenizer(str)];
-```
-
-**tokTypes** holds an object mapping names to the token type objects
-that end up in the `type` properties of tokens.
-
-**getLineInfo**`(input, offset)` can be used to get a `{line,
-column}` object for a given program string and offset.
-
-### The `Parser` class
-
-Instances of the **`Parser`** class contain all the state and logic
-that drives a parse. It has static methods `parse`,
-`parseExpressionAt`, and `tokenizer` that match the top-level
-functions by the same name.
-
-When extending the parser with plugins, you need to call these methods
-on the extended version of the class. To extend a parser with plugins,
-you can use its static `extend` method.
-
-```javascript
-var acorn = require("acorn");
-var jsx = require("acorn-jsx");
-var JSXParser = acorn.Parser.extend(jsx());
-JSXParser.parse("foo()");
-```
-
-The `extend` method takes any number of plugin values, and returns a
-new `Parser` class that includes the extra parser logic provided by
-the plugins.
-
-## Command line interface
-
-The `bin/acorn` utility can be used to parse a file from the command
-line. It accepts as arguments its input file and the following
-options:
-
-- `--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|--ecma10`: Sets the ECMAScript version
- to parse. Default is version 9.
-
-- `--module`: Sets the parsing mode to `"module"`. Is set to `"script"` otherwise.
-
-- `--locations`: Attaches a "loc" object to each node with "start" and
- "end" subobjects, each of which contains the one-based line and
- zero-based column numbers in `{line, column}` form.
-
-- `--allow-hash-bang`: If the code starts with the characters #! (as
- in a shellscript), the first line will be treated as a comment.
-
-- `--compact`: No whitespace is used in the AST output.
-
-- `--silent`: Do not output the AST, just return the exit status.
-
-- `--help`: Print the usage information and quit.
-
-The utility spits out the syntax tree as JSON data.
-
-## Existing plugins
-
- - [`acorn-jsx`](https://github.com/RReverser/acorn-jsx): Parse [Facebook JSX syntax extensions](https://github.com/facebook/jsx)
-
-Plugins for ECMAScript proposals:
-
- - [`acorn-stage3`](https://github.com/acornjs/acorn-stage3): Parse most stage 3 proposals, bundling:
- - [`acorn-class-fields`](https://github.com/acornjs/acorn-class-fields): Parse [class fields proposal](https://github.com/tc39/proposal-class-fields)
- - [`acorn-import-meta`](https://github.com/acornjs/acorn-import-meta): Parse [import.meta proposal](https://github.com/tc39/proposal-import-meta)
- - [`acorn-private-methods`](https://github.com/acornjs/acorn-private-methods): parse [private methods, getters and setters proposal](https://github.com/tc39/proposal-private-methods)n
diff --git a/node_modules/acorn/package.json b/node_modules/acorn/package.json
deleted file mode 100644
index 1069930..0000000
--- a/node_modules/acorn/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "acorn",
- "description": "ECMAScript parser",
- "homepage": "https://github.com/acornjs/acorn",
- "main": "dist/acorn.js",
- "types": "dist/acorn.d.ts",
- "module": "dist/acorn.mjs",
- "version": "7.4.1",
- "engines": {"node": ">=0.4.0"},
- "maintainers": [
- {
- "name": "Marijn Haverbeke",
- "email": "marijnh@gmail.com",
- "web": "https://marijnhaverbeke.nl"
- },
- {
- "name": "Ingvar Stepanyan",
- "email": "me@rreverser.com",
- "web": "https://rreverser.com/"
- },
- {
- "name": "Adrian Heine",
- "web": "http://adrianheine.de"
- }
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/acornjs/acorn.git"
- },
- "license": "MIT",
- "scripts": {
- "prepare": "cd ..; npm run build:main && npm run build:bin"
- },
- "bin": {"acorn": "./bin/acorn"}
-}
diff --git a/node_modules/ajv/.tonic_example.js b/node_modules/ajv/.tonic_example.js
deleted file mode 100644
index aa11812..0000000
--- a/node_modules/ajv/.tonic_example.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var Ajv = require('ajv');
-var ajv = new Ajv({allErrors: true});
-
-var schema = {
- "properties": {
- "foo": { "type": "string" },
- "bar": { "type": "number", "maximum": 3 }
- }
-};
-
-var validate = ajv.compile(schema);
-
-test({"foo": "abc", "bar": 2});
-test({"foo": 2, "bar": 4});
-
-function test(data) {
- var valid = validate(data);
- if (valid) console.log('Valid!');
- else console.log('Invalid: ' + ajv.errorsText(validate.errors));
-}
\ No newline at end of file
diff --git a/node_modules/ajv/LICENSE b/node_modules/ajv/LICENSE
deleted file mode 100644
index 96ee719..0000000
--- a/node_modules/ajv/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-2017 Evgeny Poberezkin
-
-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/ajv/README.md b/node_modules/ajv/README.md
deleted file mode 100644
index 5aa2078..0000000
--- a/node_modules/ajv/README.md
+++ /dev/null
@@ -1,1497 +0,0 @@
-
-
-# Ajv: Another JSON Schema Validator
-
-The fastest JSON Schema validator for Node.js and browser. Supports draft-04/06/07.
-
-[](https://travis-ci.org/ajv-validator/ajv)
-[](https://www.npmjs.com/package/ajv)
-[](https://www.npmjs.com/package/ajv/v/7.0.0-beta.0)
-[](https://www.npmjs.com/package/ajv)
-[](https://coveralls.io/github/ajv-validator/ajv?branch=master)
-[](https://gitter.im/ajv-validator/ajv)
-[](https://github.com/sponsors/epoberezkin)
-
-
-## Ajv v7 beta is released
-
-[Ajv version 7.0.0-beta.0](https://github.com/ajv-validator/ajv/tree/v7-beta) is released with these changes:
-
-- to reduce the mistakes in JSON schemas and unexpected validation results, [strict mode](./docs/strict-mode.md) is added - it prohibits ignored or ambiguous JSON Schema elements.
-- to make code injection from untrusted schemas impossible, [code generation](./docs/codegen.md) is fully re-written to be safe.
-- to simplify Ajv extensions, the new keyword API that is used by pre-defined keywords is available to user-defined keywords - it is much easier to define any keywords now, especially with subschemas.
-- schemas are compiled to ES6 code (ES5 code generation is supported with an option).
-- to improve reliability and maintainability the code is migrated to TypeScript.
-
-**Please note**:
-
-- the support for JSON-Schema draft-04 is removed - if you have schemas using "id" attributes you have to replace them with "\$id" (or continue using version 6 that will be supported until 02/28/2021).
-- all formats are separated to ajv-formats package - they have to be explicitely added if you use them.
-
-See [release notes](https://github.com/ajv-validator/ajv/releases/tag/v7.0.0-beta.0) for the details.
-
-To install the new version:
-
-```bash
-npm install ajv@beta
-```
-
-See [Getting started with v7](https://github.com/ajv-validator/ajv/tree/v7-beta#usage) for code example.
-
-
-## Mozilla MOSS grant and OpenJS Foundation
-
-[
](https://www.mozilla.org/en-US/moss/) [
](https://openjsf.org/blog/2020/08/14/ajv-joins-openjs-foundation-as-an-incubation-project/)
-
-Ajv has been awarded a grant from Mozilla’s [Open Source Support (MOSS) program](https://www.mozilla.org/en-US/moss/) in the “Foundational Technology” track! It will sponsor the development of Ajv support of [JSON Schema version 2019-09](https://tools.ietf.org/html/draft-handrews-json-schema-02) and of [JSON Type Definition](https://tools.ietf.org/html/draft-ucarion-json-type-definition-04).
-
-Ajv also joined [OpenJS Foundation](https://openjsf.org/) – having this support will help ensure the longevity and stability of Ajv for all its users.
-
-This [blog post](https://www.poberezkin.com/posts/2020-08-14-ajv-json-validator-mozilla-open-source-grant-openjs-foundation.html) has more details.
-
-I am looking for the long term maintainers of Ajv – working with [ReadySet](https://www.thereadyset.co/), also sponsored by Mozilla, to establish clear guidelines for the role of a "maintainer" and the contribution standards, and to encourage a wider, more inclusive, contribution from the community.
-
-
-## Please [sponsor Ajv development](https://github.com/sponsors/epoberezkin)
-
-Since I asked to support Ajv development 40 people and 6 organizations contributed via GitHub and OpenCollective - this support helped receiving the MOSS grant!
-
-Your continuing support is very important - the funds will be used to develop and maintain Ajv once the next major version is released.
-
-Please sponsor Ajv via:
-- [GitHub sponsors page](https://github.com/sponsors/epoberezkin) (GitHub will match it)
-- [Ajv Open Collective️](https://opencollective.com/ajv)
-
-Thank you.
-
-
-#### Open Collective sponsors
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## Using version 6
-
-[JSON Schema draft-07](http://json-schema.org/latest/json-schema-validation.html) is published.
-
-[Ajv version 6.0.0](https://github.com/ajv-validator/ajv/releases/tag/v6.0.0) that supports draft-07 is released. It may require either migrating your schemas or updating your code (to continue using draft-04 and v5 schemas, draft-06 schemas will be supported without changes).
-
-__Please note__: To use Ajv with draft-06 schemas you need to explicitly add the meta-schema to the validator instance:
-
-```javascript
-ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-06.json'));
-```
-
-To use Ajv with draft-04 schemas in addition to explicitly adding meta-schema you also need to use option schemaId:
-
-```javascript
-var ajv = new Ajv({schemaId: 'id'});
-// If you want to use both draft-04 and draft-06/07 schemas:
-// var ajv = new Ajv({schemaId: 'auto'});
-ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-04.json'));
-```
-
-
-## Contents
-
-- [Performance](#performance)
-- [Features](#features)
-- [Getting started](#getting-started)
-- [Frequently Asked Questions](https://github.com/ajv-validator/ajv/blob/master/FAQ.md)
-- [Using in browser](#using-in-browser)
- - [Ajv and Content Security Policies (CSP)](#ajv-and-content-security-policies-csp)
-- [Command line interface](#command-line-interface)
-- Validation
- - [Keywords](#validation-keywords)
- - [Annotation keywords](#annotation-keywords)
- - [Formats](#formats)
- - [Combining schemas with $ref](#ref)
- - [$data reference](#data-reference)
- - NEW: [$merge and $patch keywords](#merge-and-patch-keywords)
- - [Defining custom keywords](#defining-custom-keywords)
- - [Asynchronous schema compilation](#asynchronous-schema-compilation)
- - [Asynchronous validation](#asynchronous-validation)
-- [Security considerations](#security-considerations)
- - [Security contact](#security-contact)
- - [Untrusted schemas](#untrusted-schemas)
- - [Circular references in objects](#circular-references-in-javascript-objects)
- - [Trusted schemas](#security-risks-of-trusted-schemas)
- - [ReDoS attack](#redos-attack)
-- Modifying data during validation
- - [Filtering data](#filtering-data)
- - [Assigning defaults](#assigning-defaults)
- - [Coercing data types](#coercing-data-types)
-- API
- - [Methods](#api)
- - [Options](#options)
- - [Validation errors](#validation-errors)
-- [Plugins](#plugins)
-- [Related packages](#related-packages)
-- [Some packages using Ajv](#some-packages-using-ajv)
-- [Tests, Contributing, Changes history](#tests)
-- [Support, Code of conduct, License](#open-source-software-support)
-
-
-## Performance
-
-Ajv generates code using [doT templates](https://github.com/olado/doT) to turn JSON Schemas into super-fast validation functions that are efficient for v8 optimization.
-
-Currently Ajv is the fastest and the most standard compliant validator according to these benchmarks:
-
-- [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark) - 50% faster than the second place
-- [jsck benchmark](https://github.com/pandastrike/jsck#benchmarks) - 20-190% faster
-- [z-schema benchmark](https://rawgit.com/zaggino/z-schema/master/benchmark/results.html)
-- [themis benchmark](https://cdn.rawgit.com/playlyfe/themis/master/benchmark/results.html)
-
-
-Performance of different validators by [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark):
-
-[](https://github.com/ebdrup/json-schema-benchmark/blob/master/README.md#performance)
-
-
-## Features
-
-- Ajv implements full JSON Schema [draft-06/07](http://json-schema.org/) and draft-04 standards:
- - all validation keywords (see [JSON Schema validation keywords](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md))
- - full support of remote refs (remote schemas have to be added with `addSchema` or compiled to be available)
- - support of circular references between schemas
- - correct string lengths for strings with unicode pairs (can be turned off)
- - [formats](#formats) defined by JSON Schema draft-07 standard and custom formats (can be turned off)
- - [validates schemas against meta-schema](#api-validateschema)
-- supports [browsers](#using-in-browser) and Node.js 0.10-14.x
-- [asynchronous loading](#asynchronous-schema-compilation) of referenced schemas during compilation
-- "All errors" validation mode with [option allErrors](#options)
-- [error messages with parameters](#validation-errors) describing error reasons to allow creating custom error messages
-- i18n error messages support with [ajv-i18n](https://github.com/ajv-validator/ajv-i18n) package
-- [filtering data](#filtering-data) from additional properties
-- [assigning defaults](#assigning-defaults) to missing properties and items
-- [coercing data](#coercing-data-types) to the types specified in `type` keywords
-- [custom keywords](#defining-custom-keywords)
-- draft-06/07 keywords `const`, `contains`, `propertyNames` and `if/then/else`
-- draft-06 boolean schemas (`true`/`false` as a schema to always pass/fail).
-- keywords `switch`, `patternRequired`, `formatMaximum` / `formatMinimum` and `formatExclusiveMaximum` / `formatExclusiveMinimum` from [JSON Schema extension proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals) with [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package
-- [$data reference](#data-reference) to use values from the validated data as values for the schema keywords
-- [asynchronous validation](#asynchronous-validation) of custom formats and keywords
-
-
-## Install
-
-```
-npm install ajv
-```
-
-
-## Getting started
-
-Try it in the Node.js REPL: https://tonicdev.com/npm/ajv
-
-
-The fastest validation call:
-
-```javascript
-// Node.js require:
-var Ajv = require('ajv');
-// or ESM/TypeScript import
-import Ajv from 'ajv';
-
-var ajv = new Ajv(); // options can be passed, e.g. {allErrors: true}
-var validate = ajv.compile(schema);
-var valid = validate(data);
-if (!valid) console.log(validate.errors);
-```
-
-or with less code
-
-```javascript
-// ...
-var valid = ajv.validate(schema, data);
-if (!valid) console.log(ajv.errors);
-// ...
-```
-
-or
-
-```javascript
-// ...
-var valid = ajv.addSchema(schema, 'mySchema')
- .validate('mySchema', data);
-if (!valid) console.log(ajv.errorsText());
-// ...
-```
-
-See [API](#api) and [Options](#options) for more details.
-
-Ajv compiles schemas to functions and caches them in all cases (using schema serialized with [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) or a custom function as a key), so that the next time the same schema is used (not necessarily the same object instance) it won't be compiled again.
-
-The best performance is achieved when using compiled functions returned by `compile` or `getSchema` methods (there is no additional function call).
-
-__Please note__: every time a validation function or `ajv.validate` are called `errors` property is overwritten. You need to copy `errors` array reference to another variable if you want to use it later (e.g., in the callback). See [Validation errors](#validation-errors)
-
-__Note for TypeScript users__: `ajv` provides its own TypeScript declarations
-out of the box, so you don't need to install the deprecated `@types/ajv`
-module.
-
-
-## Using in browser
-
-You can require Ajv directly from the code you browserify - in this case Ajv will be a part of your bundle.
-
-If you need to use Ajv in several bundles you can create a separate UMD bundle using `npm run bundle` script (thanks to [siddo420](https://github.com/siddo420)).
-
-Then you need to load Ajv in the browser:
-```html
-
-```
-
-This bundle can be used with different module systems; it creates global `Ajv` if no module system is found.
-
-The browser bundle is available on [cdnjs](https://cdnjs.com/libraries/ajv).
-
-Ajv is tested with these browsers:
-
-[](https://saucelabs.com/u/epoberezkin)
-
-__Please note__: some frameworks, e.g. Dojo, may redefine global require in such way that is not compatible with CommonJS module format. In such case Ajv bundle has to be loaded before the framework and then you can use global Ajv (see issue [#234](https://github.com/ajv-validator/ajv/issues/234)).
-
-
-### Ajv and Content Security Policies (CSP)
-
-If you're using Ajv to compile a schema (the typical use) in a browser document that is loaded with a Content Security Policy (CSP), that policy will require a `script-src` directive that includes the value `'unsafe-eval'`.
-:warning: NOTE, however, that `unsafe-eval` is NOT recommended in a secure CSP[[1]](https://developer.chrome.com/extensions/contentSecurityPolicy#relaxing-eval), as it has the potential to open the document to cross-site scripting (XSS) attacks.
-
-In order to make use of Ajv without easing your CSP, you can [pre-compile a schema using the CLI](https://github.com/ajv-validator/ajv-cli#compile-schemas). This will transpile the schema JSON into a JavaScript file that exports a `validate` function that works simlarly to a schema compiled at runtime.
-
-Note that pre-compilation of schemas is performed using [ajv-pack](https://github.com/ajv-validator/ajv-pack) and there are [some limitations to the schema features it can compile](https://github.com/ajv-validator/ajv-pack#limitations). A successfully pre-compiled schema is equivalent to the same schema compiled at runtime.
-
-
-## Command line interface
-
-CLI is available as a separate npm package [ajv-cli](https://github.com/ajv-validator/ajv-cli). It supports:
-
-- compiling JSON Schemas to test their validity
-- BETA: generating standalone module exporting a validation function to be used without Ajv (using [ajv-pack](https://github.com/ajv-validator/ajv-pack))
-- migrate schemas to draft-07 (using [json-schema-migrate](https://github.com/epoberezkin/json-schema-migrate))
-- validating data file(s) against JSON Schema
-- testing expected validity of data against JSON Schema
-- referenced schemas
-- custom meta-schemas
-- files in JSON, JSON5, YAML, and JavaScript format
-- all Ajv options
-- reporting changes in data after validation in [JSON-patch](https://tools.ietf.org/html/rfc6902) format
-
-
-## Validation keywords
-
-Ajv supports all validation keywords from draft-07 of JSON Schema standard:
-
-- [type](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#type)
-- [for numbers](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#keywords-for-numbers) - maximum, minimum, exclusiveMaximum, exclusiveMinimum, multipleOf
-- [for strings](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#keywords-for-strings) - maxLength, minLength, pattern, format
-- [for arrays](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#keywords-for-arrays) - maxItems, minItems, uniqueItems, items, additionalItems, [contains](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#contains)
-- [for objects](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#keywords-for-objects) - maxProperties, minProperties, required, properties, patternProperties, additionalProperties, dependencies, [propertyNames](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#propertynames)
-- [for all types](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#keywords-for-all-types) - enum, [const](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#const)
-- [compound keywords](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#compound-keywords) - not, oneOf, anyOf, allOf, [if/then/else](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#ifthenelse)
-
-With [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package Ajv also supports validation keywords from [JSON Schema extension proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals) for JSON Schema standard:
-
-- [patternRequired](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#patternrequired-proposed) - like `required` but with patterns that some property should match.
-- [formatMaximum, formatMinimum, formatExclusiveMaximum, formatExclusiveMinimum](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#formatmaximum--formatminimum-and-exclusiveformatmaximum--exclusiveformatminimum-proposed) - setting limits for date, time, etc.
-
-See [JSON Schema validation keywords](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md) for more details.
-
-
-## Annotation keywords
-
-JSON Schema specification defines several annotation keywords that describe schema itself but do not perform any validation.
-
-- `title` and `description`: information about the data represented by that schema
-- `$comment` (NEW in draft-07): information for developers. With option `$comment` Ajv logs or passes the comment string to the user-supplied function. See [Options](#options).
-- `default`: a default value of the data instance, see [Assigning defaults](#assigning-defaults).
-- `examples` (NEW in draft-06): an array of data instances. Ajv does not check the validity of these instances against the schema.
-- `readOnly` and `writeOnly` (NEW in draft-07): marks data-instance as read-only or write-only in relation to the source of the data (database, api, etc.).
-- `contentEncoding`: [RFC 2045](https://tools.ietf.org/html/rfc2045#section-6.1 ), e.g., "base64".
-- `contentMediaType`: [RFC 2046](https://tools.ietf.org/html/rfc2046), e.g., "image/png".
-
-__Please note__: Ajv does not implement validation of the keywords `examples`, `contentEncoding` and `contentMediaType` but it reserves them. If you want to create a plugin that implements some of them, it should remove these keywords from the instance.
-
-
-## Formats
-
-Ajv implements formats defined by JSON Schema specification and several other formats. It is recommended NOT to use "format" keyword implementations with untrusted data, as they use potentially unsafe regular expressions - see [ReDoS attack](#redos-attack).
-
-__Please note__: if you need to use "format" keyword to validate untrusted data, you MUST assess their suitability and safety for your validation scenarios.
-
-The following formats are implemented for string validation with "format" keyword:
-
-- _date_: full-date according to [RFC3339](http://tools.ietf.org/html/rfc3339#section-5.6).
-- _time_: time with optional time-zone.
-- _date-time_: date-time from the same source (time-zone is mandatory). `date`, `time` and `date-time` validate ranges in `full` mode and only regexp in `fast` mode (see [options](#options)).
-- _uri_: full URI.
-- _uri-reference_: URI reference, including full and relative URIs.
-- _uri-template_: URI template according to [RFC6570](https://tools.ietf.org/html/rfc6570)
-- _url_ (deprecated): [URL record](https://url.spec.whatwg.org/#concept-url).
-- _email_: email address.
-- _hostname_: host name according to [RFC1034](http://tools.ietf.org/html/rfc1034#section-3.5).
-- _ipv4_: IP address v4.
-- _ipv6_: IP address v6.
-- _regex_: tests whether a string is a valid regular expression by passing it to RegExp constructor.
-- _uuid_: Universally Unique IDentifier according to [RFC4122](http://tools.ietf.org/html/rfc4122).
-- _json-pointer_: JSON-pointer according to [RFC6901](https://tools.ietf.org/html/rfc6901).
-- _relative-json-pointer_: relative JSON-pointer according to [this draft](http://tools.ietf.org/html/draft-luff-relative-json-pointer-00).
-
-__Please note__: JSON Schema draft-07 also defines formats `iri`, `iri-reference`, `idn-hostname` and `idn-email` for URLs, hostnames and emails with international characters. Ajv does not implement these formats. If you create Ajv plugin that implements them please make a PR to mention this plugin here.
-
-There are two modes of format validation: `fast` and `full`. This mode affects formats `date`, `time`, `date-time`, `uri`, `uri-reference`, and `email`. See [Options](#options) for details.
-
-You can add additional formats and replace any of the formats above using [addFormat](#api-addformat) method.
-
-The option `unknownFormats` allows changing the default behaviour when an unknown format is encountered. In this case Ajv can either fail schema compilation (default) or ignore it (default in versions before 5.0.0). You also can allow specific format(s) that will be ignored. See [Options](#options) for details.
-
-You can find regular expressions used for format validation and the sources that were used in [formats.js](https://github.com/ajv-validator/ajv/blob/master/lib/compile/formats.js).
-
-
-## Combining schemas with $ref
-
-You can structure your validation logic across multiple schema files and have schemas reference each other using `$ref` keyword.
-
-Example:
-
-```javascript
-var schema = {
- "$id": "http://example.com/schemas/schema.json",
- "type": "object",
- "properties": {
- "foo": { "$ref": "defs.json#/definitions/int" },
- "bar": { "$ref": "defs.json#/definitions/str" }
- }
-};
-
-var defsSchema = {
- "$id": "http://example.com/schemas/defs.json",
- "definitions": {
- "int": { "type": "integer" },
- "str": { "type": "string" }
- }
-};
-```
-
-Now to compile your schema you can either pass all schemas to Ajv instance:
-
-```javascript
-var ajv = new Ajv({schemas: [schema, defsSchema]});
-var validate = ajv.getSchema('http://example.com/schemas/schema.json');
-```
-
-or use `addSchema` method:
-
-```javascript
-var ajv = new Ajv;
-var validate = ajv.addSchema(defsSchema)
- .compile(schema);
-```
-
-See [Options](#options) and [addSchema](#api) method.
-
-__Please note__:
-- `$ref` is resolved as the uri-reference using schema $id as the base URI (see the example).
-- References can be recursive (and mutually recursive) to implement the schemas for different data structures (such as linked lists, trees, graphs, etc.).
-- You don't have to host your schema files at the URIs that you use as schema $id. These URIs are only used to identify the schemas, and according to JSON Schema specification validators should not expect to be able to download the schemas from these URIs.
-- The actual location of the schema file in the file system is not used.
-- You can pass the identifier of the schema as the second parameter of `addSchema` method or as a property name in `schemas` option. This identifier can be used instead of (or in addition to) schema $id.
-- You cannot have the same $id (or the schema identifier) used for more than one schema - the exception will be thrown.
-- You can implement dynamic resolution of the referenced schemas using `compileAsync` method. In this way you can store schemas in any system (files, web, database, etc.) and reference them without explicitly adding to Ajv instance. See [Asynchronous schema compilation](#asynchronous-schema-compilation).
-
-
-## $data reference
-
-With `$data` option you can use values from the validated data as the values for the schema keywords. See [proposal](https://github.com/json-schema-org/json-schema-spec/issues/51) for more information about how it works.
-
-`$data` reference is supported in the keywords: const, enum, format, maximum/minimum, exclusiveMaximum / exclusiveMinimum, maxLength / minLength, maxItems / minItems, maxProperties / minProperties, formatMaximum / formatMinimum, formatExclusiveMaximum / formatExclusiveMinimum, multipleOf, pattern, required, uniqueItems.
-
-The value of "$data" should be a [JSON-pointer](https://tools.ietf.org/html/rfc6901) to the data (the root is always the top level data object, even if the $data reference is inside a referenced subschema) or a [relative JSON-pointer](http://tools.ietf.org/html/draft-luff-relative-json-pointer-00) (it is relative to the current point in data; if the $data reference is inside a referenced subschema it cannot point to the data outside of the root level for this subschema).
-
-Examples.
-
-This schema requires that the value in property `smaller` is less or equal than the value in the property larger:
-
-```javascript
-var ajv = new Ajv({$data: true});
-
-var schema = {
- "properties": {
- "smaller": {
- "type": "number",
- "maximum": { "$data": "1/larger" }
- },
- "larger": { "type": "number" }
- }
-};
-
-var validData = {
- smaller: 5,
- larger: 7
-};
-
-ajv.validate(schema, validData); // true
-```
-
-This schema requires that the properties have the same format as their field names:
-
-```javascript
-var schema = {
- "additionalProperties": {
- "type": "string",
- "format": { "$data": "0#" }
- }
-};
-
-var validData = {
- 'date-time': '1963-06-19T08:30:06.283185Z',
- email: 'joe.bloggs@example.com'
-}
-```
-
-`$data` reference is resolved safely - it won't throw even if some property is undefined. If `$data` resolves to `undefined` the validation succeeds (with the exclusion of `const` keyword). If `$data` resolves to incorrect type (e.g. not "number" for maximum keyword) the validation fails.
-
-
-## $merge and $patch keywords
-
-With the package [ajv-merge-patch](https://github.com/ajv-validator/ajv-merge-patch) you can use the keywords `$merge` and `$patch` that allow extending JSON Schemas with patches using formats [JSON Merge Patch (RFC 7396)](https://tools.ietf.org/html/rfc7396) and [JSON Patch (RFC 6902)](https://tools.ietf.org/html/rfc6902).
-
-To add keywords `$merge` and `$patch` to Ajv instance use this code:
-
-```javascript
-require('ajv-merge-patch')(ajv);
-```
-
-Examples.
-
-Using `$merge`:
-
-```json
-{
- "$merge": {
- "source": {
- "type": "object",
- "properties": { "p": { "type": "string" } },
- "additionalProperties": false
- },
- "with": {
- "properties": { "q": { "type": "number" } }
- }
- }
-}
-```
-
-Using `$patch`:
-
-```json
-{
- "$patch": {
- "source": {
- "type": "object",
- "properties": { "p": { "type": "string" } },
- "additionalProperties": false
- },
- "with": [
- { "op": "add", "path": "/properties/q", "value": { "type": "number" } }
- ]
- }
-}
-```
-
-The schemas above are equivalent to this schema:
-
-```json
-{
- "type": "object",
- "properties": {
- "p": { "type": "string" },
- "q": { "type": "number" }
- },
- "additionalProperties": false
-}
-```
-
-The properties `source` and `with` in the keywords `$merge` and `$patch` can use absolute or relative `$ref` to point to other schemas previously added to the Ajv instance or to the fragments of the current schema.
-
-See the package [ajv-merge-patch](https://github.com/ajv-validator/ajv-merge-patch) for more information.
-
-
-## Defining custom keywords
-
-The advantages of using custom keywords are:
-
-- allow creating validation scenarios that cannot be expressed using JSON Schema
-- simplify your schemas
-- help bringing a bigger part of the validation logic to your schemas
-- make your schemas more expressive, less verbose and closer to your application domain
-- implement custom data processors that modify your data (`modifying` option MUST be used in keyword definition) and/or create side effects while the data is being validated
-
-If a keyword is used only for side-effects and its validation result is pre-defined, use option `valid: true/false` in keyword definition to simplify both generated code (no error handling in case of `valid: true`) and your keyword functions (no need to return any validation result).
-
-The concerns you have to be aware of when extending JSON Schema standard with custom keywords are the portability and understanding of your schemas. You will have to support these custom keywords on other platforms and to properly document these keywords so that everybody can understand them in your schemas.
-
-You can define custom keywords with [addKeyword](#api-addkeyword) method. Keywords are defined on the `ajv` instance level - new instances will not have previously defined keywords.
-
-Ajv allows defining keywords with:
-- validation function
-- compilation function
-- macro function
-- inline compilation function that should return code (as string) that will be inlined in the currently compiled schema.
-
-Example. `range` and `exclusiveRange` keywords using compiled schema:
-
-```javascript
-ajv.addKeyword('range', {
- type: 'number',
- compile: function (sch, parentSchema) {
- var min = sch[0];
- var max = sch[1];
-
- return parentSchema.exclusiveRange === true
- ? function (data) { return data > min && data < max; }
- : function (data) { return data >= min && data <= max; }
- }
-});
-
-var schema = { "range": [2, 4], "exclusiveRange": true };
-var validate = ajv.compile(schema);
-console.log(validate(2.01)); // true
-console.log(validate(3.99)); // true
-console.log(validate(2)); // false
-console.log(validate(4)); // false
-```
-
-Several custom keywords (typeof, instanceof, range and propertyNames) are defined in [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package - they can be used for your schemas and as a starting point for your own custom keywords.
-
-See [Defining custom keywords](https://github.com/ajv-validator/ajv/blob/master/CUSTOM.md) for more details.
-
-
-## Asynchronous schema compilation
-
-During asynchronous compilation remote references are loaded using supplied function. See `compileAsync` [method](#api-compileAsync) and `loadSchema` [option](#options).
-
-Example:
-
-```javascript
-var ajv = new Ajv({ loadSchema: loadSchema });
-
-ajv.compileAsync(schema).then(function (validate) {
- var valid = validate(data);
- // ...
-});
-
-function loadSchema(uri) {
- return request.json(uri).then(function (res) {
- if (res.statusCode >= 400)
- throw new Error('Loading error: ' + res.statusCode);
- return res.body;
- });
-}
-```
-
-__Please note__: [Option](#options) `missingRefs` should NOT be set to `"ignore"` or `"fail"` for asynchronous compilation to work.
-
-
-## Asynchronous validation
-
-Example in Node.js REPL: https://tonicdev.com/esp/ajv-asynchronous-validation
-
-You can define custom formats and keywords that perform validation asynchronously by accessing database or some other service. You should add `async: true` in the keyword or format definition (see [addFormat](#api-addformat), [addKeyword](#api-addkeyword) and [Defining custom keywords](#defining-custom-keywords)).
-
-If your schema uses asynchronous formats/keywords or refers to some schema that contains them it should have `"$async": true` keyword so that Ajv can compile it correctly. If asynchronous format/keyword or reference to asynchronous schema is used in the schema without `$async` keyword Ajv will throw an exception during schema compilation.
-
-__Please note__: all asynchronous subschemas that are referenced from the current or other schemas should have `"$async": true` keyword as well, otherwise the schema compilation will fail.
-
-Validation function for an asynchronous custom format/keyword should return a promise that resolves with `true` or `false` (or rejects with `new Ajv.ValidationError(errors)` if you want to return custom errors from the keyword function).
-
-Ajv compiles asynchronous schemas to [es7 async functions](http://tc39.github.io/ecmascript-asyncawait/) that can optionally be transpiled with [nodent](https://github.com/MatAtBread/nodent). Async functions are supported in Node.js 7+ and all modern browsers. You can also supply any other transpiler as a function via `processCode` option. See [Options](#options).
-
-The compiled validation function has `$async: true` property (if the schema is asynchronous), so you can differentiate these functions if you are using both synchronous and asynchronous schemas.
-
-Validation result will be a promise that resolves with validated data or rejects with an exception `Ajv.ValidationError` that contains the array of validation errors in `errors` property.
-
-
-Example:
-
-```javascript
-var ajv = new Ajv;
-// require('ajv-async')(ajv);
-
-ajv.addKeyword('idExists', {
- async: true,
- type: 'number',
- validate: checkIdExists
-});
-
-
-function checkIdExists(schema, data) {
- return knex(schema.table)
- .select('id')
- .where('id', data)
- .then(function (rows) {
- return !!rows.length; // true if record is found
- });
-}
-
-var schema = {
- "$async": true,
- "properties": {
- "userId": {
- "type": "integer",
- "idExists": { "table": "users" }
- },
- "postId": {
- "type": "integer",
- "idExists": { "table": "posts" }
- }
- }
-};
-
-var validate = ajv.compile(schema);
-
-validate({ userId: 1, postId: 19 })
-.then(function (data) {
- console.log('Data is valid', data); // { userId: 1, postId: 19 }
-})
-.catch(function (err) {
- if (!(err instanceof Ajv.ValidationError)) throw err;
- // data is invalid
- console.log('Validation errors:', err.errors);
-});
-```
-
-### Using transpilers with asynchronous validation functions.
-
-[ajv-async](https://github.com/ajv-validator/ajv-async) uses [nodent](https://github.com/MatAtBread/nodent) to transpile async functions. To use another transpiler you should separately install it (or load its bundle in the browser).
-
-
-#### Using nodent
-
-```javascript
-var ajv = new Ajv;
-require('ajv-async')(ajv);
-// in the browser if you want to load ajv-async bundle separately you can:
-// window.ajvAsync(ajv);
-var validate = ajv.compile(schema); // transpiled es7 async function
-validate(data).then(successFunc).catch(errorFunc);
-```
-
-
-#### Using other transpilers
-
-```javascript
-var ajv = new Ajv({ processCode: transpileFunc });
-var validate = ajv.compile(schema); // transpiled es7 async function
-validate(data).then(successFunc).catch(errorFunc);
-```
-
-See [Options](#options).
-
-
-## Security considerations
-
-JSON Schema, if properly used, can replace data sanitisation. It doesn't replace other API security considerations. It also introduces additional security aspects to consider.
-
-
-##### Security contact
-
-To report a security vulnerability, please use the
-[Tidelift security contact](https://tidelift.com/security).
-Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues.
-
-
-##### Untrusted schemas
-
-Ajv treats JSON schemas as trusted as your application code. This security model is based on the most common use case, when the schemas are static and bundled together with the application.
-
-If your schemas are received from untrusted sources (or generated from untrusted data) there are several scenarios you need to prevent:
-- compiling schemas can cause stack overflow (if they are too deep)
-- compiling schemas can be slow (e.g. [#557](https://github.com/ajv-validator/ajv/issues/557))
-- validating certain data can be slow
-
-It is difficult to predict all the scenarios, but at the very least it may help to limit the size of untrusted schemas (e.g. limit JSON string length) and also the maximum schema object depth (that can be high for relatively small JSON strings). You also may want to mitigate slow regular expressions in `pattern` and `patternProperties` keywords.
-
-Regardless the measures you take, using untrusted schemas increases security risks.
-
-
-##### Circular references in JavaScript objects
-
-Ajv does not support schemas and validated data that have circular references in objects. See [issue #802](https://github.com/ajv-validator/ajv/issues/802).
-
-An attempt to compile such schemas or validate such data would cause stack overflow (or will not complete in case of asynchronous validation). Depending on the parser you use, untrusted data can lead to circular references.
-
-
-##### Security risks of trusted schemas
-
-Some keywords in JSON Schemas can lead to very slow validation for certain data. These keywords include (but may be not limited to):
-
-- `pattern` and `format` for large strings - in some cases using `maxLength` can help mitigate it, but certain regular expressions can lead to exponential validation time even with relatively short strings (see [ReDoS attack](#redos-attack)).
-- `patternProperties` for large property names - use `propertyNames` to mitigate, but some regular expressions can have exponential evaluation time as well.
-- `uniqueItems` for large non-scalar arrays - use `maxItems` to mitigate
-
-__Please note__: The suggestions above to prevent slow validation would only work if you do NOT use `allErrors: true` in production code (using it would continue validation after validation errors).
-
-You can validate your JSON schemas against [this meta-schema](https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-secure.json) to check that these recommendations are followed:
-
-```javascript
-const isSchemaSecure = ajv.compile(require('ajv/lib/refs/json-schema-secure.json'));
-
-const schema1 = {format: 'email'};
-isSchemaSecure(schema1); // false
-
-const schema2 = {format: 'email', maxLength: MAX_LENGTH};
-isSchemaSecure(schema2); // true
-```
-
-__Please note__: following all these recommendation is not a guarantee that validation of untrusted data is safe - it can still lead to some undesirable results.
-
-
-##### Content Security Policies (CSP)
-See [Ajv and Content Security Policies (CSP)](#ajv-and-content-security-policies-csp)
-
-
-## ReDoS attack
-
-Certain regular expressions can lead to the exponential evaluation time even with relatively short strings.
-
-Please assess the regular expressions you use in the schemas on their vulnerability to this attack - see [safe-regex](https://github.com/substack/safe-regex), for example.
-
-__Please note__: some formats that Ajv implements use [regular expressions](https://github.com/ajv-validator/ajv/blob/master/lib/compile/formats.js) that can be vulnerable to ReDoS attack, so if you use Ajv to validate data from untrusted sources __it is strongly recommended__ to consider the following:
-
-- making assessment of "format" implementations in Ajv.
-- using `format: 'fast'` option that simplifies some of the regular expressions (although it does not guarantee that they are safe).
-- replacing format implementations provided by Ajv with your own implementations of "format" keyword that either uses different regular expressions or another approach to format validation. Please see [addFormat](#api-addformat) method.
-- disabling format validation by ignoring "format" keyword with option `format: false`
-
-Whatever mitigation you choose, please assume all formats provided by Ajv as potentially unsafe and make your own assessment of their suitability for your validation scenarios.
-
-
-## Filtering data
-
-With [option `removeAdditional`](#options) (added by [andyscott](https://github.com/andyscott)) you can filter data during the validation.
-
-This option modifies original data.
-
-Example:
-
-```javascript
-var ajv = new Ajv({ removeAdditional: true });
-var schema = {
- "additionalProperties": false,
- "properties": {
- "foo": { "type": "number" },
- "bar": {
- "additionalProperties": { "type": "number" },
- "properties": {
- "baz": { "type": "string" }
- }
- }
- }
-}
-
-var data = {
- "foo": 0,
- "additional1": 1, // will be removed; `additionalProperties` == false
- "bar": {
- "baz": "abc",
- "additional2": 2 // will NOT be removed; `additionalProperties` != false
- },
-}
-
-var validate = ajv.compile(schema);
-
-console.log(validate(data)); // true
-console.log(data); // { "foo": 0, "bar": { "baz": "abc", "additional2": 2 }
-```
-
-If `removeAdditional` option in the example above were `"all"` then both `additional1` and `additional2` properties would have been removed.
-
-If the option were `"failing"` then property `additional1` would have been removed regardless of its value and property `additional2` would have been removed only if its value were failing the schema in the inner `additionalProperties` (so in the example above it would have stayed because it passes the schema, but any non-number would have been removed).
-
-__Please note__: If you use `removeAdditional` option with `additionalProperties` keyword inside `anyOf`/`oneOf` keywords your validation can fail with this schema, for example:
-
-```json
-{
- "type": "object",
- "oneOf": [
- {
- "properties": {
- "foo": { "type": "string" }
- },
- "required": [ "foo" ],
- "additionalProperties": false
- },
- {
- "properties": {
- "bar": { "type": "integer" }
- },
- "required": [ "bar" ],
- "additionalProperties": false
- }
- ]
-}
-```
-
-The intention of the schema above is to allow objects with either the string property "foo" or the integer property "bar", but not with both and not with any other properties.
-
-With the option `removeAdditional: true` the validation will pass for the object `{ "foo": "abc"}` but will fail for the object `{"bar": 1}`. It happens because while the first subschema in `oneOf` is validated, the property `bar` is removed because it is an additional property according to the standard (because it is not included in `properties` keyword in the same schema).
-
-While this behaviour is unexpected (issues [#129](https://github.com/ajv-validator/ajv/issues/129), [#134](https://github.com/ajv-validator/ajv/issues/134)), it is correct. To have the expected behaviour (both objects are allowed and additional properties are removed) the schema has to be refactored in this way:
-
-```json
-{
- "type": "object",
- "properties": {
- "foo": { "type": "string" },
- "bar": { "type": "integer" }
- },
- "additionalProperties": false,
- "oneOf": [
- { "required": [ "foo" ] },
- { "required": [ "bar" ] }
- ]
-}
-```
-
-The schema above is also more efficient - it will compile into a faster function.
-
-
-## Assigning defaults
-
-With [option `useDefaults`](#options) Ajv will assign values from `default` keyword in the schemas of `properties` and `items` (when it is the array of schemas) to the missing properties and items.
-
-With the option value `"empty"` properties and items equal to `null` or `""` (empty string) will be considered missing and assigned defaults.
-
-This option modifies original data.
-
-__Please note__: the default value is inserted in the generated validation code as a literal, so the value inserted in the data will be the deep clone of the default in the schema.
-
-
-Example 1 (`default` in `properties`):
-
-```javascript
-var ajv = new Ajv({ useDefaults: true });
-var schema = {
- "type": "object",
- "properties": {
- "foo": { "type": "number" },
- "bar": { "type": "string", "default": "baz" }
- },
- "required": [ "foo", "bar" ]
-};
-
-var data = { "foo": 1 };
-
-var validate = ajv.compile(schema);
-
-console.log(validate(data)); // true
-console.log(data); // { "foo": 1, "bar": "baz" }
-```
-
-Example 2 (`default` in `items`):
-
-```javascript
-var schema = {
- "type": "array",
- "items": [
- { "type": "number" },
- { "type": "string", "default": "foo" }
- ]
-}
-
-var data = [ 1 ];
-
-var validate = ajv.compile(schema);
-
-console.log(validate(data)); // true
-console.log(data); // [ 1, "foo" ]
-```
-
-`default` keywords in other cases are ignored:
-
-- not in `properties` or `items` subschemas
-- in schemas inside `anyOf`, `oneOf` and `not` (see [#42](https://github.com/ajv-validator/ajv/issues/42))
-- in `if` subschema of `switch` keyword
-- in schemas generated by custom macro keywords
-
-The [`strictDefaults` option](#options) customizes Ajv's behavior for the defaults that Ajv ignores (`true` raises an error, and `"log"` outputs a warning).
-
-
-## Coercing data types
-
-When you are validating user inputs all your data properties are usually strings. The option `coerceTypes` allows you to have your data types coerced to the types specified in your schema `type` keywords, both to pass the validation and to use the correctly typed data afterwards.
-
-This option modifies original data.
-
-__Please note__: if you pass a scalar value to the validating function its type will be coerced and it will pass the validation, but the value of the variable you pass won't be updated because scalars are passed by value.
-
-
-Example 1:
-
-```javascript
-var ajv = new Ajv({ coerceTypes: true });
-var schema = {
- "type": "object",
- "properties": {
- "foo": { "type": "number" },
- "bar": { "type": "boolean" }
- },
- "required": [ "foo", "bar" ]
-};
-
-var data = { "foo": "1", "bar": "false" };
-
-var validate = ajv.compile(schema);
-
-console.log(validate(data)); // true
-console.log(data); // { "foo": 1, "bar": false }
-```
-
-Example 2 (array coercions):
-
-```javascript
-var ajv = new Ajv({ coerceTypes: 'array' });
-var schema = {
- "properties": {
- "foo": { "type": "array", "items": { "type": "number" } },
- "bar": { "type": "boolean" }
- }
-};
-
-var data = { "foo": "1", "bar": ["false"] };
-
-var validate = ajv.compile(schema);
-
-console.log(validate(data)); // true
-console.log(data); // { "foo": [1], "bar": false }
-```
-
-The coercion rules, as you can see from the example, are different from JavaScript both to validate user input as expected and to have the coercion reversible (to correctly validate cases where different types are defined in subschemas of "anyOf" and other compound keywords).
-
-See [Coercion rules](https://github.com/ajv-validator/ajv/blob/master/COERCION.md) for details.
-
-
-## API
-
-##### new Ajv(Object options) -> Object
-
-Create Ajv instance.
-
-
-##### .compile(Object schema) -> Function<Object data>
-
-Generate validating function and cache the compiled schema for future use.
-
-Validating function returns a boolean value. This function has properties `errors` and `schema`. Errors encountered during the last validation are assigned to `errors` property (it is assigned `null` if there was no errors). `schema` property contains the reference to the original schema.
-
-The schema passed to this method will be validated against meta-schema unless `validateSchema` option is false. If schema is invalid, an error will be thrown. See [options](#options).
-
-
-##### .compileAsync(Object schema [, Boolean meta] [, Function callback]) -> Promise
-
-Asynchronous version of `compile` method that loads missing remote schemas using asynchronous function in `options.loadSchema`. This function returns a Promise that resolves to a validation function. An optional callback passed to `compileAsync` will be called with 2 parameters: error (or null) and validating function. The returned promise will reject (and the callback will be called with an error) when:
-
-- missing schema can't be loaded (`loadSchema` returns a Promise that rejects).
-- a schema containing a missing reference is loaded, but the reference cannot be resolved.
-- schema (or some loaded/referenced schema) is invalid.
-
-The function compiles schema and loads the first missing schema (or meta-schema) until all missing schemas are loaded.
-
-You can asynchronously compile meta-schema by passing `true` as the second parameter.
-
-See example in [Asynchronous compilation](#asynchronous-schema-compilation).
-
-
-##### .validate(Object schema|String key|String ref, data) -> Boolean
-
-Validate data using passed schema (it will be compiled and cached).
-
-Instead of the schema you can use the key that was previously passed to `addSchema`, the schema id if it was present in the schema or any previously resolved reference.
-
-Validation errors will be available in the `errors` property of Ajv instance (`null` if there were no errors).
-
-__Please note__: every time this method is called the errors are overwritten so you need to copy them to another variable if you want to use them later.
-
-If the schema is asynchronous (has `$async` keyword on the top level) this method returns a Promise. See [Asynchronous validation](#asynchronous-validation).
-
-
-##### .addSchema(Array<Object>|Object schema [, String key]) -> Ajv
-
-Add schema(s) to validator instance. This method does not compile schemas (but it still validates them). Because of that dependencies can be added in any order and circular dependencies are supported. It also prevents unnecessary compilation of schemas that are containers for other schemas but not used as a whole.
-
-Array of schemas can be passed (schemas should have ids), the second parameter will be ignored.
-
-Key can be passed that can be used to reference the schema and will be used as the schema id if there is no id inside the schema. If the key is not passed, the schema id will be used as the key.
-
-
-Once the schema is added, it (and all the references inside it) can be referenced in other schemas and used to validate data.
-
-Although `addSchema` does not compile schemas, explicit compilation is not required - the schema will be compiled when it is used first time.
-
-By default the schema is validated against meta-schema before it is added, and if the schema does not pass validation the exception is thrown. This behaviour is controlled by `validateSchema` option.
-
-__Please note__: Ajv uses the [method chaining syntax](https://en.wikipedia.org/wiki/Method_chaining) for all methods with the prefix `add*` and `remove*`.
-This allows you to do nice things like the following.
-
-```javascript
-var validate = new Ajv().addSchema(schema).addFormat(name, regex).getSchema(uri);
-```
-
-##### .addMetaSchema(Array<Object>|Object schema [, String key]) -> Ajv
-
-Adds meta schema(s) that can be used to validate other schemas. That function should be used instead of `addSchema` because there may be instance options that would compile a meta schema incorrectly (at the moment it is `removeAdditional` option).
-
-There is no need to explicitly add draft-07 meta schema (http://json-schema.org/draft-07/schema) - it is added by default, unless option `meta` is set to `false`. You only need to use it if you have a changed meta-schema that you want to use to validate your schemas. See `validateSchema`.
-
-
-##### .validateSchema(Object schema) -> Boolean
-
-Validates schema. This method should be used to validate schemas rather than `validate` due to the inconsistency of `uri` format in JSON Schema standard.
-
-By default this method is called automatically when the schema is added, so you rarely need to use it directly.
-
-If schema doesn't have `$schema` property, it is validated against draft 6 meta-schema (option `meta` should not be false).
-
-If schema has `$schema` property, then the schema with this id (that should be previously added) is used to validate passed schema.
-
-Errors will be available at `ajv.errors`.
-
-
-##### .getSchema(String key) -> Function<Object data>
-
-Retrieve compiled schema previously added with `addSchema` by the key passed to `addSchema` or by its full reference (id). The returned validating function has `schema` property with the reference to the original schema.
-
-
-##### .removeSchema([Object schema|String key|String ref|RegExp pattern]) -> Ajv
-
-Remove added/cached schema. Even if schema is referenced by other schemas it can be safely removed as dependent schemas have local references.
-
-Schema can be removed using:
-- key passed to `addSchema`
-- it's full reference (id)
-- RegExp that should match schema id or key (meta-schemas won't be removed)
-- actual schema object that will be stable-stringified to remove schema from cache
-
-If no parameter is passed all schemas but meta-schemas will be removed and the cache will be cleared.
-
-
-##### .addFormat(String name, String|RegExp|Function|Object format) -> Ajv
-
-Add custom format to validate strings or numbers. It can also be used to replace pre-defined formats for Ajv instance.
-
-Strings are converted to RegExp.
-
-Function should return validation result as `true` or `false`.
-
-If object is passed it should have properties `validate`, `compare` and `async`:
-
-- _validate_: a string, RegExp or a function as described above.
-- _compare_: an optional comparison function that accepts two strings and compares them according to the format meaning. This function is used with keywords `formatMaximum`/`formatMinimum` (defined in [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package). It should return `1` if the first value is bigger than the second value, `-1` if it is smaller and `0` if it is equal.
-- _async_: an optional `true` value if `validate` is an asynchronous function; in this case it should return a promise that resolves with a value `true` or `false`.
-- _type_: an optional type of data that the format applies to. It can be `"string"` (default) or `"number"` (see https://github.com/ajv-validator/ajv/issues/291#issuecomment-259923858). If the type of data is different, the validation will pass.
-
-Custom formats can be also added via `formats` option.
-
-
-##### .addKeyword(String keyword, Object definition) -> Ajv
-
-Add custom validation keyword to Ajv instance.
-
-Keyword should be different from all standard JSON Schema keywords and different from previously defined keywords. There is no way to redefine keywords or to remove keyword definition from the instance.
-
-Keyword must start with a letter, `_` or `$`, and may continue with letters, numbers, `_`, `$`, or `-`.
-It is recommended to use an application-specific prefix for keywords to avoid current and future name collisions.
-
-Example Keywords:
-- `"xyz-example"`: valid, and uses prefix for the xyz project to avoid name collisions.
-- `"example"`: valid, but not recommended as it could collide with future versions of JSON Schema etc.
-- `"3-example"`: invalid as numbers are not allowed to be the first character in a keyword
-
-Keyword definition is an object with the following properties:
-
-- _type_: optional string or array of strings with data type(s) that the keyword applies to. If not present, the keyword will apply to all types.
-- _validate_: validating function
-- _compile_: compiling function
-- _macro_: macro function
-- _inline_: compiling function that returns code (as string)
-- _schema_: an optional `false` value used with "validate" keyword to not pass schema
-- _metaSchema_: an optional meta-schema for keyword schema
-- _dependencies_: an optional list of properties that must be present in the parent schema - it will be checked during schema compilation
-- _modifying_: `true` MUST be passed if keyword modifies data
-- _statements_: `true` can be passed in case inline keyword generates statements (as opposed to expression)
-- _valid_: pass `true`/`false` to pre-define validation result, the result returned from validation function will be ignored. This option cannot be used with macro keywords.
-- _$data_: an optional `true` value to support [$data reference](#data-reference) as the value of custom keyword. The reference will be resolved at validation time. If the keyword has meta-schema it would be extended to allow $data and it will be used to validate the resolved value. Supporting $data reference requires that keyword has validating function (as the only option or in addition to compile, macro or inline function).
-- _async_: an optional `true` value if the validation function is asynchronous (whether it is compiled or passed in _validate_ property); in this case it should return a promise that resolves with a value `true` or `false`. This option is ignored in case of "macro" and "inline" keywords.
-- _errors_: an optional boolean or string `"full"` indicating whether keyword returns errors. If this property is not set Ajv will determine if the errors were set in case of failed validation.
-
-_compile_, _macro_ and _inline_ are mutually exclusive, only one should be used at a time. _validate_ can be used separately or in addition to them to support $data reference.
-
-__Please note__: If the keyword is validating data type that is different from the type(s) in its definition, the validation function will not be called (and expanded macro will not be used), so there is no need to check for data type inside validation function or inside schema returned by macro function (unless you want to enforce a specific type and for some reason do not want to use a separate `type` keyword for that). In the same way as standard keywords work, if the keyword does not apply to the data type being validated, the validation of this keyword will succeed.
-
-See [Defining custom keywords](#defining-custom-keywords) for more details.
-
-
-##### .getKeyword(String keyword) -> Object|Boolean
-
-Returns custom keyword definition, `true` for pre-defined keywords and `false` if the keyword is unknown.
-
-
-##### .removeKeyword(String keyword) -> Ajv
-
-Removes custom or pre-defined keyword so you can redefine them.
-
-While this method can be used to extend pre-defined keywords, it can also be used to completely change their meaning - it may lead to unexpected results.
-
-__Please note__: schemas compiled before the keyword is removed will continue to work without changes. To recompile schemas use `removeSchema` method and compile them again.
-
-
-##### .errorsText([Array<Object> errors [, Object options]]) -> String
-
-Returns the text with all errors in a String.
-
-Options can have properties `separator` (string used to separate errors, ", " by default) and `dataVar` (the variable name that dataPaths are prefixed with, "data" by default).
-
-
-## Options
-
-Defaults:
-
-```javascript
-{
- // validation and reporting options:
- $data: false,
- allErrors: false,
- verbose: false,
- $comment: false, // NEW in Ajv version 6.0
- jsonPointers: false,
- uniqueItems: true,
- unicode: true,
- nullable: false,
- format: 'fast',
- formats: {},
- unknownFormats: true,
- schemas: {},
- logger: undefined,
- // referenced schema options:
- schemaId: '$id',
- missingRefs: true,
- extendRefs: 'ignore', // recommended 'fail'
- loadSchema: undefined, // function(uri: string): Promise {}
- // options to modify validated data:
- removeAdditional: false,
- useDefaults: false,
- coerceTypes: false,
- // strict mode options
- strictDefaults: false,
- strictKeywords: false,
- strictNumbers: false,
- // asynchronous validation options:
- transpile: undefined, // requires ajv-async package
- // advanced options:
- meta: true,
- validateSchema: true,
- addUsedSchema: true,
- inlineRefs: true,
- passContext: false,
- loopRequired: Infinity,
- ownProperties: false,
- multipleOfPrecision: false,
- errorDataPath: 'object', // deprecated
- messages: true,
- sourceCode: false,
- processCode: undefined, // function (str: string, schema: object): string {}
- cache: new Cache,
- serialize: undefined
-}
-```
-
-##### Validation and reporting options
-
-- _$data_: support [$data references](#data-reference). Draft 6 meta-schema that is added by default will be extended to allow them. If you want to use another meta-schema you need to use $dataMetaSchema method to add support for $data reference. See [API](#api).
-- _allErrors_: check all rules collecting all errors. Default is to return after the first error.
-- _verbose_: include the reference to the part of the schema (`schema` and `parentSchema`) and validated data in errors (false by default).
-- _$comment_ (NEW in Ajv version 6.0): log or pass the value of `$comment` keyword to a function. Option values:
- - `false` (default): ignore $comment keyword.
- - `true`: log the keyword value to console.
- - function: pass the keyword value, its schema path and root schema to the specified function
-- _jsonPointers_: set `dataPath` property of errors using [JSON Pointers](https://tools.ietf.org/html/rfc6901) instead of JavaScript property access notation.
-- _uniqueItems_: validate `uniqueItems` keyword (true by default).
-- _unicode_: calculate correct length of strings with unicode pairs (true by default). Pass `false` to use `.length` of strings that is faster, but gives "incorrect" lengths of strings with unicode pairs - each unicode pair is counted as two characters.
-- _nullable_: support keyword "nullable" from [Open API 3 specification](https://swagger.io/docs/specification/data-models/data-types/).
-- _format_: formats validation mode. Option values:
- - `"fast"` (default) - simplified and fast validation (see [Formats](#formats) for details of which formats are available and affected by this option).
- - `"full"` - more restrictive and slow validation. E.g., 25:00:00 and 2015/14/33 will be invalid time and date in 'full' mode but it will be valid in 'fast' mode.
- - `false` - ignore all format keywords.
-- _formats_: an object with custom formats. Keys and values will be passed to `addFormat` method.
-- _keywords_: an object with custom keywords. Keys and values will be passed to `addKeyword` method.
-- _unknownFormats_: handling of unknown formats. Option values:
- - `true` (default) - if an unknown format is encountered the exception is thrown during schema compilation. If `format` keyword value is [$data reference](#data-reference) and it is unknown the validation will fail.
- - `[String]` - an array of unknown format names that will be ignored. This option can be used to allow usage of third party schemas with format(s) for which you don't have definitions, but still fail if another unknown format is used. If `format` keyword value is [$data reference](#data-reference) and it is not in this array the validation will fail.
- - `"ignore"` - to log warning during schema compilation and always pass validation (the default behaviour in versions before 5.0.0). This option is not recommended, as it allows to mistype format name and it won't be validated without any error message. This behaviour is required by JSON Schema specification.
-- _schemas_: an array or object of schemas that will be added to the instance. In case you pass the array the schemas must have IDs in them. When the object is passed the method `addSchema(value, key)` will be called for each schema in this object.
-- _logger_: sets the logging method. Default is the global `console` object that should have methods `log`, `warn` and `error`. See [Error logging](#error-logging). Option values:
- - custom logger - it should have methods `log`, `warn` and `error`. If any of these methods is missing an exception will be thrown.
- - `false` - logging is disabled.
-
-
-##### Referenced schema options
-
-- _schemaId_: this option defines which keywords are used as schema URI. Option value:
- - `"$id"` (default) - only use `$id` keyword as schema URI (as specified in JSON Schema draft-06/07), ignore `id` keyword (if it is present a warning will be logged).
- - `"id"` - only use `id` keyword as schema URI (as specified in JSON Schema draft-04), ignore `$id` keyword (if it is present a warning will be logged).
- - `"auto"` - use both `$id` and `id` keywords as schema URI. If both are present (in the same schema object) and different the exception will be thrown during schema compilation.
-- _missingRefs_: handling of missing referenced schemas. Option values:
- - `true` (default) - if the reference cannot be resolved during compilation the exception is thrown. The thrown error has properties `missingRef` (with hash fragment) and `missingSchema` (without it). Both properties are resolved relative to the current base id (usually schema id, unless it was substituted).
- - `"ignore"` - to log error during compilation and always pass validation.
- - `"fail"` - to log error and successfully compile schema but fail validation if this rule is checked.
-- _extendRefs_: validation of other keywords when `$ref` is present in the schema. Option values:
- - `"ignore"` (default) - when `$ref` is used other keywords are ignored (as per [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3) standard). A warning will be logged during the schema compilation.
- - `"fail"` (recommended) - if other validation keywords are used together with `$ref` the exception will be thrown when the schema is compiled. This option is recommended to make sure schema has no keywords that are ignored, which can be confusing.
- - `true` - validate all keywords in the schemas with `$ref` (the default behaviour in versions before 5.0.0).
-- _loadSchema_: asynchronous function that will be used to load remote schemas when `compileAsync` [method](#api-compileAsync) is used and some reference is missing (option `missingRefs` should NOT be 'fail' or 'ignore'). This function should accept remote schema uri as a parameter and return a Promise that resolves to a schema. See example in [Asynchronous compilation](#asynchronous-schema-compilation).
-
-
-##### Options to modify validated data
-
-- _removeAdditional_: remove additional properties - see example in [Filtering data](#filtering-data). This option is not used if schema is added with `addMetaSchema` method. Option values:
- - `false` (default) - not to remove additional properties
- - `"all"` - all additional properties are removed, regardless of `additionalProperties` keyword in schema (and no validation is made for them).
- - `true` - only additional properties with `additionalProperties` keyword equal to `false` are removed.
- - `"failing"` - additional properties that fail schema validation will be removed (where `additionalProperties` keyword is `false` or schema).
-- _useDefaults_: replace missing or undefined properties and items with the values from corresponding `default` keywords. Default behaviour is to ignore `default` keywords. This option is not used if schema is added with `addMetaSchema` method. See examples in [Assigning defaults](#assigning-defaults). Option values:
- - `false` (default) - do not use defaults
- - `true` - insert defaults by value (object literal is used).
- - `"empty"` - in addition to missing or undefined, use defaults for properties and items that are equal to `null` or `""` (an empty string).
- - `"shared"` (deprecated) - insert defaults by reference. If the default is an object, it will be shared by all instances of validated data. If you modify the inserted default in the validated data, it will be modified in the schema as well.
-- _coerceTypes_: change data type of data to match `type` keyword. See the example in [Coercing data types](#coercing-data-types) and [coercion rules](https://github.com/ajv-validator/ajv/blob/master/COERCION.md). Option values:
- - `false` (default) - no type coercion.
- - `true` - coerce scalar data types.
- - `"array"` - in addition to coercions between scalar types, coerce scalar data to an array with one element and vice versa (as required by the schema).
-
-
-##### Strict mode options
-
-- _strictDefaults_: report ignored `default` keywords in schemas. Option values:
- - `false` (default) - ignored defaults are not reported
- - `true` - if an ignored default is present, throw an error
- - `"log"` - if an ignored default is present, log warning
-- _strictKeywords_: report unknown keywords in schemas. Option values:
- - `false` (default) - unknown keywords are not reported
- - `true` - if an unknown keyword is present, throw an error
- - `"log"` - if an unknown keyword is present, log warning
-- _strictNumbers_: validate numbers strictly, failing validation for NaN and Infinity. Option values:
- - `false` (default) - NaN or Infinity will pass validation for numeric types
- - `true` - NaN or Infinity will not pass validation for numeric types
-
-##### Asynchronous validation options
-
-- _transpile_: Requires [ajv-async](https://github.com/ajv-validator/ajv-async) package. It determines whether Ajv transpiles compiled asynchronous validation function. Option values:
- - `undefined` (default) - transpile with [nodent](https://github.com/MatAtBread/nodent) if async functions are not supported.
- - `true` - always transpile with nodent.
- - `false` - do not transpile; if async functions are not supported an exception will be thrown.
-
-
-##### Advanced options
-
-- _meta_: add [meta-schema](http://json-schema.org/documentation.html) so it can be used by other schemas (true by default). If an object is passed, it will be used as the default meta-schema for schemas that have no `$schema` keyword. This default meta-schema MUST have `$schema` keyword.
-- _validateSchema_: validate added/compiled schemas against meta-schema (true by default). `$schema` property in the schema can be http://json-schema.org/draft-07/schema or absent (draft-07 meta-schema will be used) or can be a reference to the schema previously added with `addMetaSchema` method. Option values:
- - `true` (default) - if the validation fails, throw the exception.
- - `"log"` - if the validation fails, log error.
- - `false` - skip schema validation.
-- _addUsedSchema_: by default methods `compile` and `validate` add schemas to the instance if they have `$id` (or `id`) property that doesn't start with "#". If `$id` is present and it is not unique the exception will be thrown. Set this option to `false` to skip adding schemas to the instance and the `$id` uniqueness check when these methods are used. This option does not affect `addSchema` method.
-- _inlineRefs_: Affects compilation of referenced schemas. Option values:
- - `true` (default) - the referenced schemas that don't have refs in them are inlined, regardless of their size - that substantially improves performance at the cost of the bigger size of compiled schema functions.
- - `false` - to not inline referenced schemas (they will be compiled as separate functions).
- - integer number - to limit the maximum number of keywords of the schema that will be inlined.
-- _passContext_: pass validation context to custom keyword functions. If this option is `true` and you pass some context to the compiled validation function with `validate.call(context, data)`, the `context` will be available as `this` in your custom keywords. By default `this` is Ajv instance.
-- _loopRequired_: by default `required` keyword is compiled into a single expression (or a sequence of statements in `allErrors` mode). In case of a very large number of properties in this keyword it may result in a very big validation function. Pass integer to set the number of properties above which `required` keyword will be validated in a loop - smaller validation function size but also worse performance.
-- _ownProperties_: by default Ajv iterates over all enumerable object properties; when this option is `true` only own enumerable object properties (i.e. found directly on the object rather than on its prototype) are iterated. Contributed by @mbroadst.
-- _multipleOfPrecision_: by default `multipleOf` keyword is validated by comparing the result of division with parseInt() of that result. It works for dividers that are bigger than 1. For small dividers such as 0.01 the result of the division is usually not integer (even when it should be integer, see issue [#84](https://github.com/ajv-validator/ajv/issues/84)). If you need to use fractional dividers set this option to some positive integer N to have `multipleOf` validated using this formula: `Math.abs(Math.round(division) - division) < 1e-N` (it is slower but allows for float arithmetics deviations).
-- _errorDataPath_ (deprecated): set `dataPath` to point to 'object' (default) or to 'property' when validating keywords `required`, `additionalProperties` and `dependencies`.
-- _messages_: Include human-readable messages in errors. `true` by default. `false` can be passed when custom messages are used (e.g. with [ajv-i18n](https://github.com/ajv-validator/ajv-i18n)).
-- _sourceCode_: add `sourceCode` property to validating function (for debugging; this code can be different from the result of toString call).
-- _processCode_: an optional function to process generated code before it is passed to Function constructor. It can be used to either beautify (the validating function is generated without line-breaks) or to transpile code. Starting from version 5.0.0 this option replaced options:
- - `beautify` that formatted the generated function using [js-beautify](https://github.com/beautify-web/js-beautify). If you want to beautify the generated code pass a function calling `require('js-beautify').js_beautify` as `processCode: code => js_beautify(code)`.
- - `transpile` that transpiled asynchronous validation function. You can still use `transpile` option with [ajv-async](https://github.com/ajv-validator/ajv-async) package. See [Asynchronous validation](#asynchronous-validation) for more information.
-- _cache_: an optional instance of cache to store compiled schemas using stable-stringified schema as a key. For example, set-associative cache [sacjs](https://github.com/epoberezkin/sacjs) can be used. If not passed then a simple hash is used which is good enough for the common use case (a limited number of statically defined schemas). Cache should have methods `put(key, value)`, `get(key)`, `del(key)` and `clear()`.
-- _serialize_: an optional function to serialize schema to cache key. Pass `false` to use schema itself as a key (e.g., if WeakMap used as a cache). By default [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used.
-
-
-## Validation errors
-
-In case of validation failure, Ajv assigns the array of errors to `errors` property of validation function (or to `errors` property of Ajv instance when `validate` or `validateSchema` methods were called). In case of [asynchronous validation](#asynchronous-validation), the returned promise is rejected with exception `Ajv.ValidationError` that has `errors` property.
-
-
-### Error objects
-
-Each error is an object with the following properties:
-
-- _keyword_: validation keyword.
-- _dataPath_: the path to the part of the data that was validated. By default `dataPath` uses JavaScript property access notation (e.g., `".prop[1].subProp"`). When the option `jsonPointers` is true (see [Options](#options)) `dataPath` will be set using JSON pointer standard (e.g., `"/prop/1/subProp"`).
-- _schemaPath_: the path (JSON-pointer as a URI fragment) to the schema of the keyword that failed validation.
-- _params_: the object with the additional information about error that can be used to create custom error messages (e.g., using [ajv-i18n](https://github.com/ajv-validator/ajv-i18n) package). See below for parameters set by all keywords.
-- _message_: the standard error message (can be excluded with option `messages` set to false).
-- _schema_: the schema of the keyword (added with `verbose` option).
-- _parentSchema_: the schema containing the keyword (added with `verbose` option)
-- _data_: the data validated by the keyword (added with `verbose` option).
-
-__Please note__: `propertyNames` keyword schema validation errors have an additional property `propertyName`, `dataPath` points to the object. After schema validation for each property name, if it is invalid an additional error is added with the property `keyword` equal to `"propertyNames"`.
-
-
-### Error parameters
-
-Properties of `params` object in errors depend on the keyword that failed validation.
-
-- `maxItems`, `minItems`, `maxLength`, `minLength`, `maxProperties`, `minProperties` - property `limit` (number, the schema of the keyword).
-- `additionalItems` - property `limit` (the maximum number of allowed items in case when `items` keyword is an array of schemas and `additionalItems` is false).
-- `additionalProperties` - property `additionalProperty` (the property not used in `properties` and `patternProperties` keywords).
-- `dependencies` - properties:
- - `property` (dependent property),
- - `missingProperty` (required missing dependency - only the first one is reported currently)
- - `deps` (required dependencies, comma separated list as a string),
- - `depsCount` (the number of required dependencies).
-- `format` - property `format` (the schema of the keyword).
-- `maximum`, `minimum` - properties:
- - `limit` (number, the schema of the keyword),
- - `exclusive` (boolean, the schema of `exclusiveMaximum` or `exclusiveMinimum`),
- - `comparison` (string, comparison operation to compare the data to the limit, with the data on the left and the limit on the right; can be "<", "<=", ">", ">=")
-- `multipleOf` - property `multipleOf` (the schema of the keyword)
-- `pattern` - property `pattern` (the schema of the keyword)
-- `required` - property `missingProperty` (required property that is missing).
-- `propertyNames` - property `propertyName` (an invalid property name).
-- `patternRequired` (in ajv-keywords) - property `missingPattern` (required pattern that did not match any property).
-- `type` - property `type` (required type(s), a string, can be a comma-separated list)
-- `uniqueItems` - properties `i` and `j` (indices of duplicate items).
-- `const` - property `allowedValue` pointing to the value (the schema of the keyword).
-- `enum` - property `allowedValues` pointing to the array of values (the schema of the keyword).
-- `$ref` - property `ref` with the referenced schema URI.
-- `oneOf` - property `passingSchemas` (array of indices of passing schemas, null if no schema passes).
-- custom keywords (in case keyword definition doesn't create errors) - property `keyword` (the keyword name).
-
-
-### Error logging
-
-Using the `logger` option when initiallizing Ajv will allow you to define custom logging. Here you can build upon the exisiting logging. The use of other logging packages is supported as long as the package or its associated wrapper exposes the required methods. If any of the required methods are missing an exception will be thrown.
-- **Required Methods**: `log`, `warn`, `error`
-
-```javascript
-var otherLogger = new OtherLogger();
-var ajv = new Ajv({
- logger: {
- log: console.log.bind(console),
- warn: function warn() {
- otherLogger.logWarn.apply(otherLogger, arguments);
- },
- error: function error() {
- otherLogger.logError.apply(otherLogger, arguments);
- console.error.apply(console, arguments);
- }
- }
-});
-```
-
-
-## Plugins
-
-Ajv can be extended with plugins that add custom keywords, formats or functions to process generated code. When such plugin is published as npm package it is recommended that it follows these conventions:
-
-- it exports a function
-- this function accepts ajv instance as the first parameter and returns the same instance to allow chaining
-- this function can accept an optional configuration as the second parameter
-
-If you have published a useful plugin please submit a PR to add it to the next section.
-
-
-## Related packages
-
-- [ajv-async](https://github.com/ajv-validator/ajv-async) - plugin to configure async validation mode
-- [ajv-bsontype](https://github.com/BoLaMN/ajv-bsontype) - plugin to validate mongodb's bsonType formats
-- [ajv-cli](https://github.com/jessedc/ajv-cli) - command line interface
-- [ajv-errors](https://github.com/ajv-validator/ajv-errors) - plugin for custom error messages
-- [ajv-i18n](https://github.com/ajv-validator/ajv-i18n) - internationalised error messages
-- [ajv-istanbul](https://github.com/ajv-validator/ajv-istanbul) - plugin to instrument generated validation code to measure test coverage of your schemas
-- [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) - plugin with custom validation keywords (select, typeof, etc.)
-- [ajv-merge-patch](https://github.com/ajv-validator/ajv-merge-patch) - plugin with keywords $merge and $patch
-- [ajv-pack](https://github.com/ajv-validator/ajv-pack) - produces a compact module exporting validation functions
-- [ajv-formats-draft2019](https://github.com/luzlab/ajv-formats-draft2019) - format validators for draft2019 that aren't already included in ajv (ie. `idn-hostname`, `idn-email`, `iri`, `iri-reference` and `duration`).
-
-## Some packages using Ajv
-
-- [webpack](https://github.com/webpack/webpack) - a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser
-- [jsonscript-js](https://github.com/JSONScript/jsonscript-js) - the interpreter for [JSONScript](http://www.jsonscript.org) - scripted processing of existing endpoints and services
-- [osprey-method-handler](https://github.com/mulesoft-labs/osprey-method-handler) - Express middleware for validating requests and responses based on a RAML method object, used in [osprey](https://github.com/mulesoft/osprey) - validating API proxy generated from a RAML definition
-- [har-validator](https://github.com/ahmadnassri/har-validator) - HTTP Archive (HAR) validator
-- [jsoneditor](https://github.com/josdejong/jsoneditor) - a web-based tool to view, edit, format, and validate JSON http://jsoneditoronline.org
-- [JSON Schema Lint](https://github.com/nickcmaynard/jsonschemalint) - a web tool to validate JSON/YAML document against a single JSON Schema http://jsonschemalint.com
-- [objection](https://github.com/vincit/objection.js) - SQL-friendly ORM for Node.js
-- [table](https://github.com/gajus/table) - formats data into a string table
-- [ripple-lib](https://github.com/ripple/ripple-lib) - a JavaScript API for interacting with [Ripple](https://ripple.com) in Node.js and the browser
-- [restbase](https://github.com/wikimedia/restbase) - distributed storage with REST API & dispatcher for backend services built to provide a low-latency & high-throughput API for Wikipedia / Wikimedia content
-- [hippie-swagger](https://github.com/CacheControl/hippie-swagger) - [Hippie](https://github.com/vesln/hippie) wrapper that provides end to end API testing with swagger validation
-- [react-form-controlled](https://github.com/seeden/react-form-controlled) - React controlled form components with validation
-- [rabbitmq-schema](https://github.com/tjmehta/rabbitmq-schema) - a schema definition module for RabbitMQ graphs and messages
-- [@query/schema](https://www.npmjs.com/package/@query/schema) - stream filtering with a URI-safe query syntax parsing to JSON Schema
-- [chai-ajv-json-schema](https://github.com/peon374/chai-ajv-json-schema) - chai plugin to us JSON Schema with expect in mocha tests
-- [grunt-jsonschema-ajv](https://github.com/SignpostMarv/grunt-jsonschema-ajv) - Grunt plugin for validating files against JSON Schema
-- [extract-text-webpack-plugin](https://github.com/webpack-contrib/extract-text-webpack-plugin) - extract text from bundle into a file
-- [electron-builder](https://github.com/electron-userland/electron-builder) - a solution to package and build a ready for distribution Electron app
-- [addons-linter](https://github.com/mozilla/addons-linter) - Mozilla Add-ons Linter
-- [gh-pages-generator](https://github.com/epoberezkin/gh-pages-generator) - multi-page site generator converting markdown files to GitHub pages
-- [ESLint](https://github.com/eslint/eslint) - the pluggable linting utility for JavaScript and JSX
-
-
-## Tests
-
-```
-npm install
-git submodule update --init
-npm test
-```
-
-## Contributing
-
-All validation functions are generated using doT templates in [dot](https://github.com/ajv-validator/ajv/tree/master/lib/dot) folder. Templates are precompiled so doT is not a run-time dependency.
-
-`npm run build` - compiles templates to [dotjs](https://github.com/ajv-validator/ajv/tree/master/lib/dotjs) folder.
-
-`npm run watch` - automatically compiles templates when files in dot folder change
-
-Please see [Contributing guidelines](https://github.com/ajv-validator/ajv/blob/master/CONTRIBUTING.md)
-
-
-## Changes history
-
-See https://github.com/ajv-validator/ajv/releases
-
-__Please note__: [Changes in version 7.0.0-beta](https://github.com/ajv-validator/ajv/releases/tag/v7.0.0-beta.0)
-
-[Version 6.0.0](https://github.com/ajv-validator/ajv/releases/tag/v6.0.0).
-
-## Code of conduct
-
-Please review and follow the [Code of conduct](https://github.com/ajv-validator/ajv/blob/master/CODE_OF_CONDUCT.md).
-
-Please report any unacceptable behaviour to ajv.validator@gmail.com - it will be reviewed by the project team.
-
-
-## Open-source software support
-
-Ajv is a part of [Tidelift subscription](https://tidelift.com/subscription/pkg/npm-ajv?utm_source=npm-ajv&utm_medium=referral&utm_campaign=readme) - it provides a centralised support to open-source software users, in addition to the support provided by software maintainers.
-
-
-## License
-
-[MIT](https://github.com/ajv-validator/ajv/blob/master/LICENSE)
diff --git a/node_modules/ajv/lib/ajv.d.ts b/node_modules/ajv/lib/ajv.d.ts
deleted file mode 100644
index 078364d..0000000
--- a/node_modules/ajv/lib/ajv.d.ts
+++ /dev/null
@@ -1,397 +0,0 @@
-declare var ajv: {
- (options?: ajv.Options): ajv.Ajv;
- new(options?: ajv.Options): ajv.Ajv;
- ValidationError: typeof AjvErrors.ValidationError;
- MissingRefError: typeof AjvErrors.MissingRefError;
- $dataMetaSchema: object;
-}
-
-declare namespace AjvErrors {
- class ValidationError extends Error {
- constructor(errors: Array);
-
- message: string;
- errors: Array;
- ajv: true;
- validation: true;
- }
-
- class MissingRefError extends Error {
- constructor(baseId: string, ref: string, message?: string);
- static message: (baseId: string, ref: string) => string;
-
- message: string;
- missingRef: string;
- missingSchema: string;
- }
-}
-
-declare namespace ajv {
- type ValidationError = AjvErrors.ValidationError;
-
- type MissingRefError = AjvErrors.MissingRefError;
-
- interface Ajv {
- /**
- * Validate data using schema
- * Schema will be compiled and cached (using serialized JSON as key, [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize by default).
- * @param {string|object|Boolean} schemaKeyRef key, ref or schema object
- * @param {Any} data to be validated
- * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).
- */
- validate(schemaKeyRef: object | string | boolean, data: any): boolean | PromiseLike;
- /**
- * Create validating function for passed schema.
- * @param {object|Boolean} schema schema object
- * @return {Function} validating function
- */
- compile(schema: object | boolean): ValidateFunction;
- /**
- * Creates validating function for passed schema with asynchronous loading of missing schemas.
- * `loadSchema` option should be a function that accepts schema uri and node-style callback.
- * @this Ajv
- * @param {object|Boolean} schema schema object
- * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped
- * @param {Function} callback optional node-style callback, it is always called with 2 parameters: error (or null) and validating function.
- * @return {PromiseLike} validating function
- */
- compileAsync(schema: object | boolean, meta?: Boolean, callback?: (err: Error, validate: ValidateFunction) => any): PromiseLike;
- /**
- * Adds schema to the instance.
- * @param {object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.
- * @param {string} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.
- * @return {Ajv} this for method chaining
- */
- addSchema(schema: Array