- Participate in the Auth0 Special Track at Status Code 0 and create a
+ Participate in the Auth0 Special Track at Status Code 1 and create a
product using Auth0 for a chance to win $20 Amazon Gift Cards for
all members of your team.
-
+ -->
$
-
+
-
+
- SILVER
+ GOLD
@@ -1813,7 +1260,7 @@
-

+
@@ -1886,7 +1333,7 @@
- The Status Code 0 hackathon will be conducted in complete
+ The Status Code 1 hackathon will be conducted in complete
offline/in person mode.
@@ -1992,7 +1439,7 @@
@@ -2014,7 +1461,7 @@
>
[+]
- What is the venue for Status Code 0?
+ What is the venue for Status Code 1?
@@ -2170,14 +1617,14 @@
>

@@ -2227,7 +1674,7 @@
>
@@ -2239,7 +1686,7 @@
>
-
© 2023 IIIT Kalyani
+ © 2024 IIIT Kalyani
@@ -2362,8 +1809,8 @@
© 2023 IIIT Kalyani
nomodule
src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"
>
-
-
-
+
+
+
diff --git a/node_modules/.bin/atob b/node_modules/.bin/atob
deleted file mode 120000
index a68344a..0000000
--- a/node_modules/.bin/atob
+++ /dev/null
@@ -1 +0,0 @@
-../atob/bin/atob.js
\ No newline at end of file
diff --git a/node_modules/.bin/live-server b/node_modules/.bin/live-server
deleted file mode 120000
index 23665a1..0000000
--- a/node_modules/.bin/live-server
+++ /dev/null
@@ -1 +0,0 @@
-../live-server/live-server.js
\ No newline at end of file
diff --git a/node_modules/.bin/mime b/node_modules/.bin/mime
deleted file mode 120000
index fbb7ee0..0000000
--- a/node_modules/.bin/mime
+++ /dev/null
@@ -1 +0,0 @@
-../mime/cli.js
\ 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 6f2ec03..0000000
--- a/node_modules/.package-lock.json
+++ /dev/null
@@ -1,2076 +0,0 @@
-{
- "name": "Hackathon-website-2023",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dependencies": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "node_modules/anymatch/node_modules/normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/apache-crypt": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.6.tgz",
- "integrity": "sha512-072WetlM4blL8PREJVeY+WHiUh1R5VNt2HfceGS8aKqttPHcmqE5pkKuXPz/ULmJOFkc8Hw3kfKl6vy7Qka6DA==",
- "dependencies": {
- "unix-crypt-td-js": "^1.1.4"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/apache-md5": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.8.tgz",
- "integrity": "sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/async-each": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz",
- "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ]
- },
- "node_modules/atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "bin": {
- "atob": "bin/atob.js"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dependencies": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/basic-auth": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
- "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
- "dependencies": {
- "safe-buffer": "5.1.2"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/batch": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
- "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw=="
- },
- "node_modules/bcryptjs": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
- "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
- },
- "node_modules/binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dependencies": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
- "dependencies": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- },
- "optionalDependencies": {
- "fsevents": "^1.2.7"
- }
- },
- "node_modules/class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dependencies": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
- "dependencies": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
- "engines": {
- "node": ">=0.1.90"
- }
- },
- "node_modules/component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
- },
- "node_modules/connect": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
- "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
- "dependencies": {
- "debug": "2.6.9",
- "finalhandler": "1.1.2",
- "parseurl": "~1.3.3",
- "utils-merge": "1.0.1"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
- },
- "node_modules/cors": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
- "dependencies": {
- "object-assign": "^4",
- "vary": "^1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/decode-uri-component": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
- "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dependencies": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/duplexer": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
- "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/event-stream": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
- "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==",
- "dependencies": {
- "duplexer": "~0.1.1",
- "from": "~0",
- "map-stream": "~0.1.0",
- "pause-stream": "0.0.11",
- "split": "0.3",
- "stream-combiner": "~0.0.4",
- "through": "~2.3.1"
- }
- },
- "node_modules/expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
- "dependencies": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dependencies": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/faye-websocket": {
- "version": "0.11.4",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
- "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
- "dependencies": {
- "websocket-driver": ">=0.5.1"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
- "dependencies": {
- "map-cache": "^0.2.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/from": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
- "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g=="
- },
- "node_modules/get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dependencies": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "node_modules/glob-parent/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dependencies": {
- "is-extglob": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
- },
- "node_modules/has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
- "dependencies": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
- "dependencies": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/http-auth": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.1.3.tgz",
- "integrity": "sha512-Jbx0+ejo2IOx+cRUYAGS1z6RGc6JfYUNkysZM4u4Sfk1uLlGv814F7/PIjQQAuThLdAWxb74JMGd5J8zex1VQg==",
- "dependencies": {
- "apache-crypt": "^1.1.2",
- "apache-md5": "^1.0.6",
- "bcryptjs": "^2.3.0",
- "uuid": "^3.0.0"
- },
- "engines": {
- "node": ">=4.6.1"
- }
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/http-errors/node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/http-parser-js": {
- "version": "0.5.8",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
- "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
- "dependencies": {
- "binary-extensions": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
- },
- "node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
- },
- "node_modules/isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/live-server": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/live-server/-/live-server-1.2.2.tgz",
- "integrity": "sha512-t28HXLjITRGoMSrCOv4eZ88viHaBVIjKjdI5PO92Vxlu+twbk6aE0t7dVIaz6ZWkjPilYFV6OSdMYl9ybN2B4w==",
- "dependencies": {
- "chokidar": "^2.0.4",
- "colors": "1.4.0",
- "connect": "^3.6.6",
- "cors": "latest",
- "event-stream": "3.3.4",
- "faye-websocket": "0.11.x",
- "http-auth": "3.1.x",
- "morgan": "^1.9.1",
- "object-assign": "latest",
- "opn": "latest",
- "proxy-middleware": "latest",
- "send": "latest",
- "serve-index": "^1.9.1"
- },
- "bin": {
- "live-server": "live-server.js"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-stream": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
- "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g=="
- },
- "node_modules/map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
- "dependencies": {
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "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/mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dependencies": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mixin-deep/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/morgan": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
- "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
- "dependencies": {
- "basic-auth": "~2.0.1",
- "debug": "2.6.9",
- "depd": "~2.0.0",
- "on-finished": "~2.3.0",
- "on-headers": "~1.0.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nanomatch/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nanomatch/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nanomatch/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
- "dependencies": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
- "dependencies": {
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/opn": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/opn/-/opn-6.0.0.tgz",
- "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==",
- "deprecated": "The package has been renamed to `open`",
- "dependencies": {
- "is-wsl": "^1.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q=="
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pause-stream": {
- "version": "0.0.11",
- "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
- "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==",
- "dependencies": {
- "through": "~2.3"
- }
- },
- "node_modules/posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "node_modules/proxy-middleware": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz",
- "integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
- "dependencies": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dependencies": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/regex-not/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/regex-not/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw=="
- },
- "node_modules/repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
- "deprecated": "https://github.com/lydell/resolve-url#deprecated"
- },
- "node_modules/ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
- "dependencies": {
- "ret": "~0.1.10"
- }
- },
- "node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "node_modules/send/node_modules/on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/send/node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/serve-index": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
- "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
- "dependencies": {
- "accepts": "~1.3.4",
- "batch": "0.6.1",
- "debug": "2.6.9",
- "escape-html": "~1.0.3",
- "http-errors": "~1.6.2",
- "mime-types": "~2.1.17",
- "parseurl": "~1.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/serve-index/node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/serve-index/node_modules/http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/serve-index/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
- },
- "node_modules/serve-index/node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
- },
- "node_modules/set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "node_modules/snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dependencies": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dependencies": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dependencies": {
- "kind-of": "^3.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
- "dependencies": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "node_modules/source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "deprecated": "See https://github.com/lydell/source-map-url#deprecated"
- },
- "node_modules/split": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
- "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==",
- "dependencies": {
- "through": "2"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split-string/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split-string/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
- "dependencies": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/stream-combiner": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
- "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==",
- "dependencies": {
- "duplexer": "~0.1.1"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
- },
- "node_modules/to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dependencies": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dependencies": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unix-crypt-td-js": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz",
- "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw=="
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
- "dependencies": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
- "dependencies": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
- "dependencies": {
- "isarray": "1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/upath": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "engines": {
- "node": ">=4",
- "yarn": "*"
- }
- },
- "node_modules/urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
- "deprecated": "Please see https://github.com/lydell/urix#deprecated"
- },
- "node_modules/use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "engines": {
- "node": ">= 0.4.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/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/websocket-driver": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
- "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
- "dependencies": {
- "http-parser-js": ">=0.5.1",
- "safe-buffer": ">=5.1.0",
- "websocket-extensions": ">=0.1.1"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/websocket-extensions": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
- "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
- "engines": {
- "node": ">=0.8.0"
- }
- }
- }
-}
diff --git a/node_modules/accepts/HISTORY.md b/node_modules/accepts/HISTORY.md
deleted file mode 100644
index cb5990c..0000000
--- a/node_modules/accepts/HISTORY.md
+++ /dev/null
@@ -1,243 +0,0 @@
-1.3.8 / 2022-02-02
-==================
-
- * deps: mime-types@~2.1.34
- - deps: mime-db@~1.51.0
- * deps: negotiator@0.6.3
-
-1.3.7 / 2019-04-29
-==================
-
- * deps: negotiator@0.6.2
- - Fix sorting charset, encoding, and language with extra parameters
-
-1.3.6 / 2019-04-28
-==================
-
- * deps: mime-types@~2.1.24
- - deps: mime-db@~1.40.0
-
-1.3.5 / 2018-02-28
-==================
-
- * deps: mime-types@~2.1.18
- - deps: mime-db@~1.33.0
-
-1.3.4 / 2017-08-22
-==================
-
- * deps: mime-types@~2.1.16
- - deps: mime-db@~1.29.0
-
-1.3.3 / 2016-05-02
-==================
-
- * deps: mime-types@~2.1.11
- - deps: mime-db@~1.23.0
- * deps: negotiator@0.6.1
- - perf: improve `Accept` parsing speed
- - perf: improve `Accept-Charset` parsing speed
- - perf: improve `Accept-Encoding` parsing speed
- - perf: improve `Accept-Language` parsing speed
-
-1.3.2 / 2016-03-08
-==================
-
- * deps: mime-types@~2.1.10
- - Fix extension of `application/dash+xml`
- - Update primary extension for `audio/mp4`
- - deps: mime-db@~1.22.0
-
-1.3.1 / 2016-01-19
-==================
-
- * deps: mime-types@~2.1.9
- - deps: mime-db@~1.21.0
-
-1.3.0 / 2015-09-29
-==================
-
- * deps: mime-types@~2.1.7
- - deps: mime-db@~1.19.0
- * deps: negotiator@0.6.0
- - Fix including type extensions in parameters in `Accept` parsing
- - Fix parsing `Accept` parameters with quoted equals
- - Fix parsing `Accept` parameters with quoted semicolons
- - Lazy-load modules from main entry point
- - perf: delay type concatenation until needed
- - perf: enable strict mode
- - perf: hoist regular expressions
- - perf: remove closures getting spec properties
- - perf: remove a closure from media type parsing
- - perf: remove property delete from media type parsing
-
-1.2.13 / 2015-09-06
-===================
-
- * deps: mime-types@~2.1.6
- - deps: mime-db@~1.18.0
-
-1.2.12 / 2015-07-30
-===================
-
- * deps: mime-types@~2.1.4
- - deps: mime-db@~1.16.0
-
-1.2.11 / 2015-07-16
-===================
-
- * deps: mime-types@~2.1.3
- - deps: mime-db@~1.15.0
-
-1.2.10 / 2015-07-01
-===================
-
- * deps: mime-types@~2.1.2
- - deps: mime-db@~1.14.0
-
-1.2.9 / 2015-06-08
-==================
-
- * deps: mime-types@~2.1.1
- - perf: fix deopt during mapping
-
-1.2.8 / 2015-06-07
-==================
-
- * deps: mime-types@~2.1.0
- - deps: mime-db@~1.13.0
- * perf: avoid argument reassignment & argument slice
- * perf: avoid negotiator recursive construction
- * perf: enable strict mode
- * perf: remove unnecessary bitwise operator
-
-1.2.7 / 2015-05-10
-==================
-
- * deps: negotiator@0.5.3
- - Fix media type parameter matching to be case-insensitive
-
-1.2.6 / 2015-05-07
-==================
-
- * deps: mime-types@~2.0.11
- - deps: mime-db@~1.9.1
- * deps: negotiator@0.5.2
- - Fix comparing media types with quoted values
- - Fix splitting media types with quoted commas
-
-1.2.5 / 2015-03-13
-==================
-
- * deps: mime-types@~2.0.10
- - deps: mime-db@~1.8.0
-
-1.2.4 / 2015-02-14
-==================
-
- * Support Node.js 0.6
- * deps: mime-types@~2.0.9
- - deps: mime-db@~1.7.0
- * deps: negotiator@0.5.1
- - Fix preference sorting to be stable for long acceptable lists
-
-1.2.3 / 2015-01-31
-==================
-
- * deps: mime-types@~2.0.8
- - deps: mime-db@~1.6.0
-
-1.2.2 / 2014-12-30
-==================
-
- * deps: mime-types@~2.0.7
- - deps: mime-db@~1.5.0
-
-1.2.1 / 2014-12-30
-==================
-
- * deps: mime-types@~2.0.5
- - deps: mime-db@~1.3.1
-
-1.2.0 / 2014-12-19
-==================
-
- * deps: negotiator@0.5.0
- - Fix list return order when large accepted list
- - Fix missing identity encoding when q=0 exists
- - Remove dynamic building of Negotiator class
-
-1.1.4 / 2014-12-10
-==================
-
- * deps: mime-types@~2.0.4
- - deps: mime-db@~1.3.0
-
-1.1.3 / 2014-11-09
-==================
-
- * deps: mime-types@~2.0.3
- - deps: mime-db@~1.2.0
-
-1.1.2 / 2014-10-14
-==================
-
- * deps: negotiator@0.4.9
- - Fix error when media type has invalid parameter
-
-1.1.1 / 2014-09-28
-==================
-
- * deps: mime-types@~2.0.2
- - deps: mime-db@~1.1.0
- * deps: negotiator@0.4.8
- - Fix all negotiations to be case-insensitive
- - Stable sort preferences of same quality according to client order
-
-1.1.0 / 2014-09-02
-==================
-
- * update `mime-types`
-
-1.0.7 / 2014-07-04
-==================
-
- * Fix wrong type returned from `type` when match after unknown extension
-
-1.0.6 / 2014-06-24
-==================
-
- * deps: negotiator@0.4.7
-
-1.0.5 / 2014-06-20
-==================
-
- * fix crash when unknown extension given
-
-1.0.4 / 2014-06-19
-==================
-
- * use `mime-types`
-
-1.0.3 / 2014-06-11
-==================
-
- * deps: negotiator@0.4.6
- - Order by specificity when quality is the same
-
-1.0.2 / 2014-05-29
-==================
-
- * Fix interpretation when header not in request
- * deps: pin negotiator@0.4.5
-
-1.0.1 / 2014-01-18
-==================
-
- * Identity encoding isn't always acceptable
- * deps: negotiator@~0.4.0
-
-1.0.0 / 2013-12-27
-==================
-
- * Genesis
diff --git a/node_modules/accepts/LICENSE b/node_modules/accepts/LICENSE
deleted file mode 100644
index 0616607..0000000
--- a/node_modules/accepts/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 Jonathan Ong
-Copyright (c) 2015 Douglas Christopher Wilson
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/accepts/README.md b/node_modules/accepts/README.md
deleted file mode 100644
index 82680c5..0000000
--- a/node_modules/accepts/README.md
+++ /dev/null
@@ -1,140 +0,0 @@
-# accepts
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][github-actions-ci-image]][github-actions-ci-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator).
-Extracted from [koa](https://www.npmjs.com/package/koa) for general use.
-
-In addition to negotiator, it allows:
-
-- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])`
- as well as `('text/html', 'application/json')`.
-- Allows type shorthands such as `json`.
-- Returns `false` when no types match
-- Treats non-existent headers as `*`
-
-## Installation
-
-This is a [Node.js](https://nodejs.org/en/) module available through the
-[npm registry](https://www.npmjs.com/). Installation is done using the
-[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
-
-```sh
-$ npm install accepts
-```
-
-## API
-
-```js
-var accepts = require('accepts')
-```
-
-### accepts(req)
-
-Create a new `Accepts` object for the given `req`.
-
-#### .charset(charsets)
-
-Return the first accepted charset. If nothing in `charsets` is accepted,
-then `false` is returned.
-
-#### .charsets()
-
-Return the charsets that the request accepts, in the order of the client's
-preference (most preferred first).
-
-#### .encoding(encodings)
-
-Return the first accepted encoding. If nothing in `encodings` is accepted,
-then `false` is returned.
-
-#### .encodings()
-
-Return the encodings that the request accepts, in the order of the client's
-preference (most preferred first).
-
-#### .language(languages)
-
-Return the first accepted language. If nothing in `languages` is accepted,
-then `false` is returned.
-
-#### .languages()
-
-Return the languages that the request accepts, in the order of the client's
-preference (most preferred first).
-
-#### .type(types)
-
-Return the first accepted type (and it is returned as the same text as what
-appears in the `types` array). If nothing in `types` is accepted, then `false`
-is returned.
-
-The `types` array can contain full MIME types or file extensions. Any value
-that is not a full MIME types is passed to `require('mime-types').lookup`.
-
-#### .types()
-
-Return the types that the request accepts, in the order of the client's
-preference (most preferred first).
-
-## Examples
-
-### Simple type negotiation
-
-This simple example shows how to use `accepts` to return a different typed
-respond body based on what the client wants to accept. The server lists it's
-preferences in order and will get back the best match between the client and
-server.
-
-```js
-var accepts = require('accepts')
-var http = require('http')
-
-function app (req, res) {
- var accept = accepts(req)
-
- // the order of this list is significant; should be server preferred order
- switch (accept.type(['json', 'html'])) {
- case 'json':
- res.setHeader('Content-Type', 'application/json')
- res.write('{"hello":"world!"}')
- break
- case 'html':
- res.setHeader('Content-Type', 'text/html')
- res.write('hello, world!')
- break
- default:
- // the fallback is text/plain, so no need to specify it above
- res.setHeader('Content-Type', 'text/plain')
- res.write('hello, world!')
- break
- }
-
- res.end()
-}
-
-http.createServer(app).listen(3000)
-```
-
-You can test this out with the cURL program:
-```sh
-curl -I -H'Accept: text/html' http://localhost:3000/
-```
-
-## License
-
-[MIT](LICENSE)
-
-[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master
-[coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master
-[github-actions-ci-image]: https://badgen.net/github/checks/jshttp/accepts/master?label=ci
-[github-actions-ci-url]: https://github.com/jshttp/accepts/actions/workflows/ci.yml
-[node-version-image]: https://badgen.net/npm/node/accepts
-[node-version-url]: https://nodejs.org/en/download
-[npm-downloads-image]: https://badgen.net/npm/dm/accepts
-[npm-url]: https://npmjs.org/package/accepts
-[npm-version-image]: https://badgen.net/npm/v/accepts
diff --git a/node_modules/accepts/index.js b/node_modules/accepts/index.js
deleted file mode 100644
index e9b2f63..0000000
--- a/node_modules/accepts/index.js
+++ /dev/null
@@ -1,238 +0,0 @@
-/*!
- * accepts
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module dependencies.
- * @private
- */
-
-var Negotiator = require('negotiator')
-var mime = require('mime-types')
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = Accepts
-
-/**
- * Create a new Accepts object for the given req.
- *
- * @param {object} req
- * @public
- */
-
-function Accepts (req) {
- if (!(this instanceof Accepts)) {
- return new Accepts(req)
- }
-
- this.headers = req.headers
- this.negotiator = new Negotiator(req)
-}
-
-/**
- * Check if the given `type(s)` is acceptable, returning
- * the best match when true, otherwise `undefined`, in which
- * case you should respond with 406 "Not Acceptable".
- *
- * The `type` value may be a single mime type string
- * such as "application/json", the extension name
- * such as "json" or an array `["json", "html", "text/plain"]`. When a list
- * or array is given the _best_ match, if any is returned.
- *
- * Examples:
- *
- * // Accept: text/html
- * this.types('html');
- * // => "html"
- *
- * // Accept: text/*, application/json
- * this.types('html');
- * // => "html"
- * this.types('text/html');
- * // => "text/html"
- * this.types('json', 'text');
- * // => "json"
- * this.types('application/json');
- * // => "application/json"
- *
- * // Accept: text/*, application/json
- * this.types('image/png');
- * this.types('png');
- * // => undefined
- *
- * // Accept: text/*;q=.5, application/json
- * this.types(['html', 'json']);
- * this.types('html', 'json');
- * // => "json"
- *
- * @param {String|Array} types...
- * @return {String|Array|Boolean}
- * @public
- */
-
-Accepts.prototype.type =
-Accepts.prototype.types = function (types_) {
- var types = types_
-
- // support flattened arguments
- if (types && !Array.isArray(types)) {
- types = new Array(arguments.length)
- for (var i = 0; i < types.length; i++) {
- types[i] = arguments[i]
- }
- }
-
- // no types, return all requested types
- if (!types || types.length === 0) {
- return this.negotiator.mediaTypes()
- }
-
- // no accept header, return first given type
- if (!this.headers.accept) {
- return types[0]
- }
-
- var mimes = types.map(extToMime)
- var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))
- var first = accepts[0]
-
- return first
- ? types[mimes.indexOf(first)]
- : false
-}
-
-/**
- * Return accepted encodings or best fit based on `encodings`.
- *
- * Given `Accept-Encoding: gzip, deflate`
- * an array sorted by quality is returned:
- *
- * ['gzip', 'deflate']
- *
- * @param {String|Array} encodings...
- * @return {String|Array}
- * @public
- */
-
-Accepts.prototype.encoding =
-Accepts.prototype.encodings = function (encodings_) {
- var encodings = encodings_
-
- // support flattened arguments
- if (encodings && !Array.isArray(encodings)) {
- encodings = new Array(arguments.length)
- for (var i = 0; i < encodings.length; i++) {
- encodings[i] = arguments[i]
- }
- }
-
- // no encodings, return all requested encodings
- if (!encodings || encodings.length === 0) {
- return this.negotiator.encodings()
- }
-
- return this.negotiator.encodings(encodings)[0] || false
-}
-
-/**
- * Return accepted charsets or best fit based on `charsets`.
- *
- * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
- * an array sorted by quality is returned:
- *
- * ['utf-8', 'utf-7', 'iso-8859-1']
- *
- * @param {String|Array} charsets...
- * @return {String|Array}
- * @public
- */
-
-Accepts.prototype.charset =
-Accepts.prototype.charsets = function (charsets_) {
- var charsets = charsets_
-
- // support flattened arguments
- if (charsets && !Array.isArray(charsets)) {
- charsets = new Array(arguments.length)
- for (var i = 0; i < charsets.length; i++) {
- charsets[i] = arguments[i]
- }
- }
-
- // no charsets, return all requested charsets
- if (!charsets || charsets.length === 0) {
- return this.negotiator.charsets()
- }
-
- return this.negotiator.charsets(charsets)[0] || false
-}
-
-/**
- * Return accepted languages or best fit based on `langs`.
- *
- * Given `Accept-Language: en;q=0.8, es, pt`
- * an array sorted by quality is returned:
- *
- * ['es', 'pt', 'en']
- *
- * @param {String|Array} langs...
- * @return {Array|String}
- * @public
- */
-
-Accepts.prototype.lang =
-Accepts.prototype.langs =
-Accepts.prototype.language =
-Accepts.prototype.languages = function (languages_) {
- var languages = languages_
-
- // support flattened arguments
- if (languages && !Array.isArray(languages)) {
- languages = new Array(arguments.length)
- for (var i = 0; i < languages.length; i++) {
- languages[i] = arguments[i]
- }
- }
-
- // no languages, return all requested languages
- if (!languages || languages.length === 0) {
- return this.negotiator.languages()
- }
-
- return this.negotiator.languages(languages)[0] || false
-}
-
-/**
- * Convert extnames to mime.
- *
- * @param {String} type
- * @return {String}
- * @private
- */
-
-function extToMime (type) {
- return type.indexOf('/') === -1
- ? mime.lookup(type)
- : type
-}
-
-/**
- * Check if mime is valid.
- *
- * @param {String} type
- * @return {String}
- * @private
- */
-
-function validMime (type) {
- return typeof type === 'string'
-}
diff --git a/node_modules/accepts/package.json b/node_modules/accepts/package.json
deleted file mode 100644
index 0f2d15d..0000000
--- a/node_modules/accepts/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "accepts",
- "description": "Higher-level content negotiation",
- "version": "1.3.8",
- "contributors": [
- "Douglas Christopher Wilson ",
- "Jonathan Ong (http://jongleberry.com)"
- ],
- "license": "MIT",
- "repository": "jshttp/accepts",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "devDependencies": {
- "deep-equal": "1.0.1",
- "eslint": "7.32.0",
- "eslint-config-standard": "14.1.1",
- "eslint-plugin-import": "2.25.4",
- "eslint-plugin-markdown": "2.2.1",
- "eslint-plugin-node": "11.1.0",
- "eslint-plugin-promise": "4.3.1",
- "eslint-plugin-standard": "4.1.0",
- "mocha": "9.2.0",
- "nyc": "15.1.0"
- },
- "files": [
- "LICENSE",
- "HISTORY.md",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "lint": "eslint .",
- "test": "mocha --reporter spec --check-leaks --bail test/",
- "test-ci": "nyc --reporter=lcov --reporter=text npm test",
- "test-cov": "nyc --reporter=html --reporter=text npm test"
- },
- "keywords": [
- "content",
- "negotiation",
- "accept",
- "accepts"
- ]
-}
diff --git a/node_modules/anymatch/LICENSE b/node_modules/anymatch/LICENSE
deleted file mode 100644
index bc42470..0000000
--- a/node_modules/anymatch/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) 2014 Elan Shanker
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/anymatch/README.md b/node_modules/anymatch/README.md
deleted file mode 100644
index f674f40..0000000
--- a/node_modules/anymatch/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-anymatch [](https://travis-ci.org/micromatch/anymatch) [](https://coveralls.io/r/micromatch/anymatch?branch=master)
-======
-Javascript module to match a string against a regular expression, glob, string,
-or function that takes the string as an argument and returns a truthy or falsy
-value. The matcher can also be an array of any or all of these. Useful for
-allowing a very flexible user-defined config to define things like file paths.
-
-__Note: This module has Bash-parity, please be aware that Windows-style backslashes are not supported as separators. See https://github.com/micromatch/micromatch#backslashes for more information.__
-
-[](https://nodei.co/npm/anymatch/)
-[](https://nodei.co/npm-dl/anymatch/)
-
-Usage
------
-```sh
-npm install anymatch --save
-```
-
-#### anymatch (matchers, testString, [returnIndex], [startIndex], [endIndex])
-* __matchers__: (_Array|String|RegExp|Function_)
-String to be directly matched, string with glob patterns, regular expression
-test, function that takes the testString as an argument and returns a truthy
-value if it should be matched, or an array of any number and mix of these types.
-* __testString__: (_String|Array_) The string to test against the matchers. If
-passed as an array, the first element of the array will be used as the
-`testString` for non-function matchers, while the entire array will be applied
-as the arguments for function matchers.
-* __returnIndex__: (_Boolean [optional]_) If true, return the array index of
-the first matcher that that testString matched, or -1 if no match, instead of a
-boolean result.
-* __startIndex, endIndex__: (_Integer [optional]_) Can be used to define a
-subset out of the array of provided matchers to test against. Can be useful
-with bound matcher functions (see below). When used with `returnIndex = true`
-preserves original indexing. Behaves the same as `Array.prototype.slice` (i.e.
-includes array members up to, but not including endIndex).
-
-```js
-var anymatch = require('anymatch');
-
-var matchers = [
- 'path/to/file.js',
- 'path/anyjs/**/*.js',
- /foo\.js$/,
- function (string) {
- return string.indexOf('bar') !== -1 && string.length > 10
- }
-];
-
-anymatch(matchers, 'path/to/file.js'); // true
-anymatch(matchers, 'path/anyjs/baz.js'); // true
-anymatch(matchers, 'path/to/foo.js'); // true
-anymatch(matchers, 'path/to/bar.js'); // true
-anymatch(matchers, 'bar.js'); // false
-
-// returnIndex = true
-anymatch(matchers, 'foo.js', true); // 2
-anymatch(matchers, 'path/anyjs/foo.js', true); // 1
-
-// skip matchers
-anymatch(matchers, 'path/to/file.js', false, 1); // false
-anymatch(matchers, 'path/anyjs/foo.js', true, 2, 3); // 2
-anymatch(matchers, 'path/to/bar.js', true, 0, 3); // -1
-
-// using globs to match directories and their children
-anymatch('node_modules', 'node_modules'); // true
-anymatch('node_modules', 'node_modules/somelib/index.js'); // false
-anymatch('node_modules/**', 'node_modules/somelib/index.js'); // true
-anymatch('node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // false
-anymatch('**/node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // true
-```
-
-#### anymatch (matchers)
-You can also pass in only your matcher(s) to get a curried function that has
-already been bound to the provided matching criteria. This can be used as an
-`Array.prototype.filter` callback.
-
-```js
-var matcher = anymatch(matchers);
-
-matcher('path/to/file.js'); // true
-matcher('path/anyjs/baz.js', true); // 1
-matcher('path/anyjs/baz.js', true, 2); // -1
-
-['foo.js', 'bar.js'].filter(matcher); // ['foo.js']
-```
-
-Change Log
-----------
-[See release notes page on GitHub](https://github.com/micromatch/anymatch/releases)
-
-NOTE: As of v2.0.0, [micromatch](https://github.com/jonschlinkert/micromatch) moves away from minimatch-parity and inline with Bash. This includes handling backslashes differently (see https://github.com/micromatch/micromatch#backslashes for more information).
-
-NOTE: As of v1.2.0, anymatch uses [micromatch](https://github.com/jonschlinkert/micromatch)
-for glob pattern matching. Issues with glob pattern matching should be
-reported directly to the [micromatch issue tracker](https://github.com/jonschlinkert/micromatch/issues).
-
-License
--------
-[ISC](https://raw.github.com/micromatch/anymatch/master/LICENSE)
diff --git a/node_modules/anymatch/index.js b/node_modules/anymatch/index.js
deleted file mode 100644
index e411618..0000000
--- a/node_modules/anymatch/index.js
+++ /dev/null
@@ -1,67 +0,0 @@
-'use strict';
-
-var micromatch = require('micromatch');
-var normalize = require('normalize-path');
-var path = require('path'); // required for tests.
-var arrify = function(a) { return a == null ? [] : (Array.isArray(a) ? a : [a]); };
-
-var anymatch = function(criteria, value, returnIndex, startIndex, endIndex) {
- criteria = arrify(criteria);
- value = arrify(value);
- if (arguments.length === 1) {
- return anymatch.bind(null, criteria.map(function(criterion) {
- return typeof criterion === 'string' && criterion[0] !== '!' ?
- micromatch.matcher(criterion) : criterion;
- }));
- }
- startIndex = startIndex || 0;
- var string = value[0];
- var altString, altValue;
- var matched = false;
- var matchIndex = -1;
- function testCriteria(criterion, index) {
- var result;
- switch (Object.prototype.toString.call(criterion)) {
- case '[object String]':
- result = string === criterion || altString && altString === criterion;
- result = result || micromatch.isMatch(string, criterion);
- break;
- case '[object RegExp]':
- result = criterion.test(string) || altString && criterion.test(altString);
- break;
- case '[object Function]':
- result = criterion.apply(null, value);
- result = result || altValue && criterion.apply(null, altValue);
- break;
- default:
- result = false;
- }
- if (result) {
- matchIndex = index + startIndex;
- }
- return result;
- }
- var crit = criteria;
- var negGlobs = crit.reduce(function(arr, criterion, index) {
- if (typeof criterion === 'string' && criterion[0] === '!') {
- if (crit === criteria) {
- // make a copy before modifying
- crit = crit.slice();
- }
- crit[index] = null;
- arr.push(criterion.substr(1));
- }
- return arr;
- }, []);
- if (!negGlobs.length || !micromatch.any(string, negGlobs)) {
- if (path.sep === '\\' && typeof string === 'string') {
- altString = normalize(string);
- altString = altString === string ? null : altString;
- if (altString) altValue = [altString].concat(value.slice(1));
- }
- matched = crit.slice(startIndex, endIndex).some(testCriteria);
- }
- return returnIndex === true ? matchIndex : matched;
-};
-
-module.exports = anymatch;
diff --git a/node_modules/anymatch/node_modules/normalize-path/LICENSE b/node_modules/anymatch/node_modules/normalize-path/LICENSE
deleted file mode 100644
index d734237..0000000
--- a/node_modules/anymatch/node_modules/normalize-path/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/anymatch/node_modules/normalize-path/README.md b/node_modules/anymatch/node_modules/normalize-path/README.md
deleted file mode 100644
index daa0edd..0000000
--- a/node_modules/anymatch/node_modules/normalize-path/README.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# normalize-path [](https://www.npmjs.com/package/normalize-path) [](https://npmjs.org/package/normalize-path) [](https://npmjs.org/package/normalize-path) [](https://travis-ci.org/jonschlinkert/normalize-path)
-
-> Normalize file path slashes to be unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes unless disabled.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save normalize-path
-```
-
-## Usage
-
-```js
-var normalize = require('normalize-path');
-
-normalize('\\foo\\bar\\baz\\');
-//=> '/foo/bar/baz'
-
-normalize('./foo/bar/baz/');
-//=> './foo/bar/baz'
-```
-
-Pass `false` as the last argument to **keep** trailing slashes:
-
-```js
-normalize('./foo/bar/baz/', false);
-//=> './foo/bar/baz/'
-
-normalize('foo\\bar\\baz\\', false);
-//=> 'foo/bar/baz/'
-```
-
-## About
-
-### Related projects
-
-* [contains-path](https://www.npmjs.com/package/contains-path): Return true if a file path contains the given path. | [homepage](https://github.com/jonschlinkert/contains-path "Return true if a file path contains the given path.")
-* [ends-with](https://www.npmjs.com/package/ends-with): Returns `true` if the given `string` or `array` ends with `suffix` using strict equality for… [more](https://github.com/jonschlinkert/ends-with) | [homepage](https://github.com/jonschlinkert/ends-with "Returns `true` if the given `string` or `array` ends with `suffix` using strict equality for comparisons.")
-* [is-absolute](https://www.npmjs.com/package/is-absolute): Polyfill for node.js `path.isAbolute`. Returns true if a file path is absolute. | [homepage](https://github.com/jonschlinkert/is-absolute "Polyfill for node.js `path.isAbolute`. Returns true if a file path is absolute.")
-* [is-relative](https://www.npmjs.com/package/is-relative): Returns `true` if the path appears to be relative. | [homepage](https://github.com/jonschlinkert/is-relative "Returns `true` if the path appears to be relative.")
-* [parse-filepath](https://www.npmjs.com/package/parse-filepath): Pollyfill for node.js `path.parse`, parses a filepath into an object. | [homepage](https://github.com/jonschlinkert/parse-filepath "Pollyfill for node.js `path.parse`, parses a filepath into an object.")
-* [path-ends-with](https://www.npmjs.com/package/path-ends-with): Return `true` if a file path ends with the given string/suffix. | [homepage](https://github.com/jonschlinkert/path-ends-with "Return `true` if a file path ends with the given string/suffix.")
-* [path-segments](https://www.npmjs.com/package/path-segments): Get n specific segments of a file path, e.g. first 2, last 3, etc. | [homepage](https://github.com/jonschlinkert/path-segments "Get n specific segments of a file path, e.g. first 2, last 3, etc.")
-* [rewrite-ext](https://www.npmjs.com/package/rewrite-ext): Automatically re-write the destination extension of a filepath based on the source extension. e.g… [more](https://github.com/jonschlinkert/rewrite-ext) | [homepage](https://github.com/jonschlinkert/rewrite-ext "Automatically re-write the destination extension of a filepath based on the source extension. e.g `.coffee` => `.js`. This will only rename the ext, no other path parts are modified.")
-* [unixify](https://www.npmjs.com/package/unixify): Convert Windows file paths to unix paths. | [homepage](https://github.com/jonschlinkert/unixify "Convert Windows file paths to unix paths.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 31 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [phated](https://github.com/phated) |
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.4.3, on March 29, 2017._
\ No newline at end of file
diff --git a/node_modules/anymatch/node_modules/normalize-path/index.js b/node_modules/anymatch/node_modules/normalize-path/index.js
deleted file mode 100644
index 4a4f8cc..0000000
--- a/node_modules/anymatch/node_modules/normalize-path/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*!
- * normalize-path
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-var removeTrailingSeparator = require('remove-trailing-separator');
-
-module.exports = function normalizePath(str, stripTrailing) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string');
- }
- str = str.replace(/[\\\/]+/g, '/');
- if (stripTrailing !== false) {
- str = removeTrailingSeparator(str);
- }
- return str;
-};
diff --git a/node_modules/anymatch/node_modules/normalize-path/package.json b/node_modules/anymatch/node_modules/normalize-path/package.json
deleted file mode 100644
index c16ef9d..0000000
--- a/node_modules/anymatch/node_modules/normalize-path/package.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "name": "normalize-path",
- "description": "Normalize file path slashes to be unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes unless disabled.",
- "version": "2.1.1",
- "homepage": "https://github.com/jonschlinkert/normalize-path",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Blaine Bublitz (https://twitter.com/BlaineBublitz)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)"
- ],
- "repository": "jonschlinkert/normalize-path",
- "bugs": {
- "url": "https://github.com/jonschlinkert/normalize-path/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "devDependencies": {
- "benchmarked": "^0.1.1",
- "gulp-format-md": "^0.1.11",
- "minimist": "^1.2.0",
- "mocha": "*"
- },
- "keywords": [
- "backslash",
- "file",
- "filepath",
- "fix",
- "forward",
- "fp",
- "fs",
- "normalize",
- "path",
- "slash",
- "slashes",
- "trailing",
- "unix",
- "urix"
- ],
- "verb": {
- "related": {
- "list": [
- "contains-path",
- "ends-with",
- "is-absolute",
- "is-relative",
- "parse-filepath",
- "path-ends-with",
- "path-segments",
- "rewrite-ext",
- "unixify"
- ],
- "description": "Other useful libraries for working with paths in node.js:"
- },
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/anymatch/package.json b/node_modules/anymatch/package.json
deleted file mode 100644
index fdbafd7..0000000
--- a/node_modules/anymatch/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "anymatch",
- "version": "2.0.0",
- "description": "Matches strings against configurable strings, globs, regular expressions, and/or functions",
- "files": [
- "index.js"
- ],
- "author": {
- "name": "Elan Shanker",
- "url": "http://github.com/es128"
- },
- "license": "ISC",
- "homepage": "https://github.com/micromatch/anymatch",
- "repository": {
- "type": "git",
- "url": "https://github.com/micromatch/anymatch"
- },
- "bugs": {
- "url": "https://github.com/micromatch/anymatch/issues"
- },
- "keywords": [
- "match",
- "any",
- "string",
- "file",
- "fs",
- "list",
- "glob",
- "regex",
- "regexp",
- "regular",
- "expression",
- "function"
- ],
- "scripts": {
- "test": "istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"
- },
- "dependencies": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- },
- "devDependencies": {
- "coveralls": "^2.7.0",
- "istanbul": "^0.4.5",
- "mocha": "^3.0.0"
- }
-}
diff --git a/node_modules/apache-crypt/LICENSE b/node_modules/apache-crypt/LICENSE
deleted file mode 100644
index 8a6cf57..0000000
--- a/node_modules/apache-crypt/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Gevorg Harutyunyan
-
-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/apache-crypt/README.md b/node_modules/apache-crypt/README.md
deleted file mode 100644
index 680c027..0000000
--- a/node_modules/apache-crypt/README.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# apache-crypt
-[Node.js](http://nodejs.org/) package for Apache style password encryption using crypt(3).
-
-[](https://github.com/gevorg/apache-crypt/actions/workflows/build.yml)
-
-## Installation
-
-Via git (or downloaded tarball):
-
-```bash
-$ git clone git://github.com/gevorg/apache-crypt.git
-```
-Via [npm](http://npmjs.org/):
-
-```bash
-$ npm install apache-crypt
-```
-
-## Usage
-
-```javascript
-const crypt = require("apache-crypt");
-
-// Encrypting password using auto-generated 2 char salt.
-const encryptedPassword = crypt("mypass");
-
-// Should print true.
-console.log(crypt("mypass", encryptedPassword) == encryptedPassword);
-// Should print false.
-console.log(crypt("notmypass", encryptedPassword) == encryptedPassword);
-```
-
-## Running tests
-
-It uses [mocha](https://mochajs.org/), so just run following command in package directory:
-
-```bash
-$ npm test
-```
-
-## License
-
-The MIT License (MIT)
\ No newline at end of file
diff --git a/node_modules/apache-crypt/package.json b/node_modules/apache-crypt/package.json
deleted file mode 100644
index 699e695..0000000
--- a/node_modules/apache-crypt/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "apache-crypt",
- "description": "Node.js module for Apache style password encryption using crypt(3).",
- "version": "1.2.6",
- "author": "Gevorg Harutyunyan (http://github.com/gevorg)",
- "maintainers": [
- {
- "name": "gevorg",
- "email": "gevorg.ha@gmail.com"
- }
- ],
- "homepage": "http://github.com/gevorg/apache-crypt",
- "repository": {
- "type": "git",
- "url": "http://github.com/gevorg/apache-crypt.git"
- },
- "main": "./src/index.js",
- "licenses": [
- {
- "type": "MIT",
- "url": "http://github.com/gevorg/apache-crypt/blob/master/LICENSE"
- }
- ],
- "license": "MIT",
- "bugs": {
- "url": "http://github.com/gevorg/apache-crypt/issues"
- },
- "dependencies": {
- "unix-crypt-td-js": "^1.1.4"
- },
- "devDependencies": {
- "chai": "^4.2.0",
- "eslint": "^6.8.0",
- "eslint-config-prettier": "^6.10.0",
- "eslint-plugin-node": "^11.0.0",
- "eslint-plugin-prettier": "^3.1.2",
- "mocha": "^7.0.1",
- "prettier": "^1.19.1"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "mocha",
- "pretest": "eslint --ignore-path .gitignore ."
- },
- "keywords": [
- "apache",
- "crypt",
- "password",
- "htpasswd"
- ]
-}
diff --git a/node_modules/apache-crypt/src/index.js b/node_modules/apache-crypt/src/index.js
deleted file mode 100644
index 342c647..0000000
--- a/node_modules/apache-crypt/src/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-"use strict";
-
-// Des module.
-const des = require("unix-crypt-td-js");
-
-// Hash generation string.
-const itoa64 =
- "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-
-// Salt generation method.
-function getSalt() {
- return (
- itoa64[parseInt(Math.random() * 64)] + itoa64[parseInt(Math.random() * 64)]
- );
-}
-
-// Exporting old style.
-module.exports = (password, salt) => {
- return salt ? des(password, salt) : des(password, getSalt());
-};
diff --git a/node_modules/apache-md5/LICENSE b/node_modules/apache-md5/LICENSE
deleted file mode 100644
index 8a6cf57..0000000
--- a/node_modules/apache-md5/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Gevorg Harutyunyan
-
-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/apache-md5/README.md b/node_modules/apache-md5/README.md
deleted file mode 100644
index e28077b..0000000
--- a/node_modules/apache-md5/README.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# apache-md5
-[Node.js](http://nodejs.org/) package for Apache style password encryption using md5.
-
-[](https://github.com/gevorg/apache-md5/actions/workflows/build.yml)
-
-## Installation
-
-Via git (or downloaded tarball):
-
-```bash
-$ git clone git://github.com/gevorg/apache-md5.git
-```
-Via [npm](http://npmjs.org/):
-
-```bash
-$ npm install apache-md5
-```
-
-## Usage
-
-```javascript
-const md5 = require("apache-md5");
-
-// Encrypting password using apache's md5 algorithm.
-const encryptedPassword = md5("mypass");
-
-// Should print true.
-console.log(md5("mypass", encryptedPassword) == encryptedPassword);
-// Should print false.
-console.log(md5("notmypass", encryptedPassword) == encryptedPassword);
-```
-
-## Running tests
-
-It uses [mocha](https://mochajs.org/), so just run following command in package directory:
-
-```bash
-$ npm test
-```
-
-## License
-
-The MIT License (MIT)
\ No newline at end of file
diff --git a/node_modules/apache-md5/package.json b/node_modules/apache-md5/package.json
deleted file mode 100644
index f2a9421..0000000
--- a/node_modules/apache-md5/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "apache-md5",
- "description": "Node.js module for Apache style password encryption using md5.",
- "version": "1.1.8",
- "author": "Gevorg Harutyunyan (http://github.com/gevorg)",
- "maintainers": [
- {
- "name": "gevorg",
- "email": "gevorg.ha@gmail.com"
- }
- ],
- "homepage": "http://github.com/gevorg/apache-md5",
- "repository": {
- "type": "git",
- "url": "http://github.com/gevorg/apache-md5.git"
- },
- "main": "./src/index.js",
- "typings": "./src/apache-md5.d.ts",
- "licenses": [
- {
- "type": "MIT",
- "url": "http://github.com/gevorg/apache-md5/blob/master/LICENSE"
- }
- ],
- "license": "MIT",
- "bugs": {
- "url": "http://github.com/gevorg/apache-md5/issues"
- },
- "devDependencies": {
- "chai": "^4.2.0",
- "eslint": "^6.8.0",
- "eslint-config-prettier": "^6.10.0",
- "eslint-plugin-node": "^11.0.0",
- "eslint-plugin-prettier": "^3.1.2",
- "mocha": "^7.0.1",
- "prettier": "^1.19.1"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "mocha",
- "pretest": "eslint --ignore-path .gitignore ."
- },
- "keywords": [
- "apache",
- "md5",
- "password",
- "htpasswd"
- ]
-}
diff --git a/node_modules/apache-md5/src/apache-md5.d.ts b/node_modules/apache-md5/src/apache-md5.d.ts
deleted file mode 100644
index 64b6cc9..0000000
--- a/node_modules/apache-md5/src/apache-md5.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-declare function aprMd5(password: string, salt?: string): string;
-
-export default aprMd5;
-
diff --git a/node_modules/apache-md5/src/index.js b/node_modules/apache-md5/src/index.js
deleted file mode 100644
index 1c79b65..0000000
--- a/node_modules/apache-md5/src/index.js
+++ /dev/null
@@ -1,148 +0,0 @@
-"use strict";
-
-// Crypto module import.
-const crypto = require("crypto");
-
-// Hash generation string.
-const itoa64 =
- "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-
-// To 64 bit version.
-function to64(index, count) {
- let result = "";
-
- while (--count >= 0) {
- // Result char count.
- result += itoa64[index & 63]; // Get corresponding char.
- index = index >> 6; // Move to next one.
- }
-
- return result;
-}
-
-// Returns salt.
-function getSalt(inputSalt) {
- let salt = "";
-
- if (inputSalt) {
- // Remove $apr1$ token and extract salt.
- salt = inputSalt.split("$")[2];
- } else {
- while (salt.length < 8) {
- // Random 8 chars.
- let rchIndex = Math.floor(Math.random() * 64);
- salt += itoa64[rchIndex];
- }
- }
-
- return salt;
-}
-
-// Returns password.
-function getPassword(final) {
- // Encrypted pass.
- let epass = "";
-
- epass += to64(
- (final.charCodeAt(0) << 16) |
- (final.charCodeAt(6) << 8) |
- final.charCodeAt(12),
- 4
- );
- epass += to64(
- (final.charCodeAt(1) << 16) |
- (final.charCodeAt(7) << 8) |
- final.charCodeAt(13),
- 4
- );
- epass += to64(
- (final.charCodeAt(2) << 16) |
- (final.charCodeAt(8) << 8) |
- final.charCodeAt(14),
- 4
- );
- epass += to64(
- (final.charCodeAt(3) << 16) |
- (final.charCodeAt(9) << 8) |
- final.charCodeAt(15),
- 4
- );
- epass += to64(
- (final.charCodeAt(4) << 16) |
- (final.charCodeAt(10) << 8) |
- final.charCodeAt(5),
- 4
- );
- epass += to64(final.charCodeAt(11), 2);
-
- return epass;
-}
-
-// Exporting old style.
-module.exports = (password, salt) => {
- let magic = "";
- if (salt && salt.split("$")[1] === "1") {
- magic = "$1$";
- } else {
- magic = "$apr1$";
- }
-
- salt = getSalt(salt);
-
- let ctx = password + magic + salt;
- let final = crypto
- .createHash("md5")
- .update(password + salt + password, "ascii")
- .digest("binary");
-
- for (let pl = password.length; pl > 0; pl -= 16) {
- ctx += final.substr(0, pl > 16 ? 16 : pl);
- }
-
- for (let i = password.length; i; i >>= 1) {
- if (i % 2) {
- ctx += String.fromCharCode(0);
- } else {
- ctx += password.charAt(0);
- }
- }
-
- final = crypto
- .createHash("md5")
- .update(ctx, "ascii")
- .digest("binary");
-
- // 1000 loop.
- for (let i = 0; i < 1000; ++i) {
- // Weird stuff.
- let ctxl = "";
-
- if (i % 2) {
- ctxl += password;
- } else {
- ctxl += final.substr(0, 16);
- }
-
- if (i % 3) {
- ctxl += salt;
- }
-
- if (i % 7) {
- ctxl += password;
- }
-
- if (i % 2) {
- ctxl += final.substr(0, 16);
- } else {
- ctxl += password;
- }
-
- // Final assignment after each loop.
- final = crypto
- .createHash("md5")
- .update(ctxl, "ascii")
- .digest("binary");
- }
-
- return magic + salt + "$" + getPassword(final);
-};
diff --git a/node_modules/arr-diff/LICENSE b/node_modules/arr-diff/LICENSE
deleted file mode 100755
index d734237..0000000
--- a/node_modules/arr-diff/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/arr-diff/README.md b/node_modules/arr-diff/README.md
deleted file mode 100644
index 961f5c3..0000000
--- a/node_modules/arr-diff/README.md
+++ /dev/null
@@ -1,130 +0,0 @@
-# arr-diff [](https://www.npmjs.com/package/arr-diff) [](https://npmjs.org/package/arr-diff) [](https://travis-ci.org/jonschlinkert/arr-diff)
-
-> Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save arr-diff
-```
-
-Install with [yarn](https://yarnpkg.com):
-
-```sh
-$ yarn add arr-diff
-```
-
-Install with [bower](https://bower.io/)
-
-```sh
-$ bower install arr-diff --save
-```
-
-## Usage
-
-Returns the difference between the first array and additional arrays.
-
-```js
-var diff = require('arr-diff');
-
-var a = ['a', 'b', 'c', 'd'];
-var b = ['b', 'c'];
-
-console.log(diff(a, b))
-//=> ['a', 'd']
-```
-
-## Benchmarks
-
-This library versus [array-differ](https://github.com/sindresorhus/array-differ), on April 14, 2017:
-
-```
-Benchmarking: (4 of 4)
- · long-dupes
- · long
- · med
- · short
-
-# benchmark/fixtures/long-dupes.js (100804 bytes)
- arr-diff-3.0.0 x 822 ops/sec ±0.67% (86 runs sampled)
- arr-diff-4.0.0 x 2,141 ops/sec ±0.42% (89 runs sampled)
- array-differ x 708 ops/sec ±0.70% (89 runs sampled)
-
- fastest is arr-diff-4.0.0
-
-# benchmark/fixtures/long.js (94529 bytes)
- arr-diff-3.0.0 x 882 ops/sec ±0.60% (87 runs sampled)
- arr-diff-4.0.0 x 2,329 ops/sec ±0.97% (83 runs sampled)
- array-differ x 769 ops/sec ±0.61% (90 runs sampled)
-
- fastest is arr-diff-4.0.0
-
-# benchmark/fixtures/med.js (708 bytes)
- arr-diff-3.0.0 x 856,150 ops/sec ±0.42% (89 runs sampled)
- arr-diff-4.0.0 x 4,665,249 ops/sec ±1.06% (89 runs sampled)
- array-differ x 653,888 ops/sec ±1.02% (86 runs sampled)
-
- fastest is arr-diff-4.0.0
-
-# benchmark/fixtures/short.js (60 bytes)
- arr-diff-3.0.0 x 3,078,467 ops/sec ±0.77% (93 runs sampled)
- arr-diff-4.0.0 x 9,213,296 ops/sec ±0.65% (89 runs sampled)
- array-differ x 1,337,051 ops/sec ±0.91% (92 runs sampled)
-
- fastest is arr-diff-4.0.0
-```
-
-## About
-
-### Related projects
-
-* [arr-flatten](https://www.npmjs.com/package/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten. | [homepage](https://github.com/jonschlinkert/arr-flatten "Recursively flatten an array or arrays. This is the fastest implementation of array flatten.")
-* [array-filter](https://www.npmjs.com/package/array-filter): Array#filter for older browsers. | [homepage](https://github.com/juliangruber/array-filter "Array#filter for older browsers.")
-* [array-intersection](https://www.npmjs.com/package/array-intersection): Return an array with the unique values present in _all_ given arrays using strict equality… [more](https://github.com/jonschlinkert/array-intersection) | [homepage](https://github.com/jonschlinkert/array-intersection "Return an array with the unique values present in _all_ given arrays using strict equality for comparisons.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 33 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 2 | [paulmillr](https://github.com/paulmillr) |
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 14, 2017._
\ No newline at end of file
diff --git a/node_modules/arr-diff/index.js b/node_modules/arr-diff/index.js
deleted file mode 100644
index 90f2807..0000000
--- a/node_modules/arr-diff/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/*!
- * arr-diff
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-module.exports = function diff(arr/*, arrays*/) {
- var len = arguments.length;
- var idx = 0;
- while (++idx < len) {
- arr = diffArray(arr, arguments[idx]);
- }
- return arr;
-};
-
-function diffArray(one, two) {
- if (!Array.isArray(two)) {
- return one.slice();
- }
-
- var tlen = two.length
- var olen = one.length;
- var idx = -1;
- var arr = [];
-
- while (++idx < olen) {
- var ele = one[idx];
-
- var hasEle = false;
- for (var i = 0; i < tlen; i++) {
- var val = two[i];
-
- if (ele === val) {
- hasEle = true;
- break;
- }
- }
-
- if (hasEle === false) {
- arr.push(ele);
- }
- }
- return arr;
-}
diff --git a/node_modules/arr-diff/package.json b/node_modules/arr-diff/package.json
deleted file mode 100644
index c106813..0000000
--- a/node_modules/arr-diff/package.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "name": "arr-diff",
- "description": "Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.",
- "version": "4.0.0",
- "homepage": "https://github.com/jonschlinkert/arr-diff",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Paul Miller (paulmillr.com)"
- ],
- "repository": "jonschlinkert/arr-diff",
- "bugs": {
- "url": "https://github.com/jonschlinkert/arr-diff/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {},
- "devDependencies": {
- "ansi-bold": "^0.1.1",
- "arr-flatten": "^1.0.1",
- "array-differ": "^1.0.0",
- "benchmarked": "^0.2.4",
- "gulp-format-md": "^0.1.9",
- "minimist": "^1.2.0",
- "mocha": "^2.4.5"
- },
- "keywords": [
- "arr",
- "array",
- "array differ",
- "array-differ",
- "diff",
- "differ",
- "difference"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "arr-flatten",
- "array-filter",
- "array-intersection"
- ]
- },
- "reflinks": [
- "array-differ",
- "verb"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/arr-flatten/LICENSE b/node_modules/arr-flatten/LICENSE
deleted file mode 100755
index 3f2eca1..0000000
--- a/node_modules/arr-flatten/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/arr-flatten/README.md b/node_modules/arr-flatten/README.md
deleted file mode 100755
index 7dc7a97..0000000
--- a/node_modules/arr-flatten/README.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# arr-flatten [](https://www.npmjs.com/package/arr-flatten) [](https://npmjs.org/package/arr-flatten) [](https://npmjs.org/package/arr-flatten) [](https://travis-ci.org/jonschlinkert/arr-flatten) [](https://ci.appveyor.com/project/jonschlinkert/arr-flatten)
-
-> Recursively flatten an array or arrays.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save arr-flatten
-```
-
-## Install
-
-Install with [bower](https://bower.io/)
-
-```sh
-$ bower install arr-flatten --save
-```
-
-## Usage
-
-```js
-var flatten = require('arr-flatten');
-
-flatten(['a', ['b', ['c']], 'd', ['e']]);
-//=> ['a', 'b', 'c', 'd', 'e']
-```
-
-## Why another flatten utility?
-
-I wanted the fastest implementation I could find, with implementation choices that should work for 95% of use cases, but no cruft to cover the other 5%.
-
-## About
-
-### Related projects
-
-* [arr-filter](https://www.npmjs.com/package/arr-filter): Faster alternative to javascript's native filter method. | [homepage](https://github.com/jonschlinkert/arr-filter "Faster alternative to javascript's native filter method.")
-* [arr-union](https://www.npmjs.com/package/arr-union): Combines a list of arrays, returning a single array with unique values, using strict equality… [more](https://github.com/jonschlinkert/arr-union) | [homepage](https://github.com/jonschlinkert/arr-union "Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.")
-* [array-each](https://www.npmjs.com/package/array-each): Loop over each item in an array and call the given function on every element. | [homepage](https://github.com/jonschlinkert/array-each "Loop over each item in an array and call the given function on every element.")
-* [array-unique](https://www.npmjs.com/package/array-unique): Remove duplicate values from an array. Fastest ES5 implementation. | [homepage](https://github.com/jonschlinkert/array-unique "Remove duplicate values from an array. Fastest ES5 implementation.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 20 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [lukeed](https://github.com/lukeed) |
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 05, 2017._
\ No newline at end of file
diff --git a/node_modules/arr-flatten/index.js b/node_modules/arr-flatten/index.js
deleted file mode 100644
index 0cb4ea4..0000000
--- a/node_modules/arr-flatten/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*!
- * arr-flatten
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-module.exports = function (arr) {
- return flat(arr, []);
-};
-
-function flat(arr, res) {
- var i = 0, cur;
- var len = arr.length;
- for (; i < len; i++) {
- cur = arr[i];
- Array.isArray(cur) ? flat(cur, res) : res.push(cur);
- }
- return res;
-}
diff --git a/node_modules/arr-flatten/package.json b/node_modules/arr-flatten/package.json
deleted file mode 100644
index d2d33e9..0000000
--- a/node_modules/arr-flatten/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "name": "arr-flatten",
- "description": "Recursively flatten an array or arrays.",
- "version": "1.1.0",
- "homepage": "https://github.com/jonschlinkert/arr-flatten",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Luke Edwards (https://lukeed.com)"
- ],
- "repository": "jonschlinkert/arr-flatten",
- "bugs": {
- "url": "https://github.com/jonschlinkert/arr-flatten/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "ansi-bold": "^0.1.1",
- "array-flatten": "^2.1.1",
- "array-slice": "^1.0.0",
- "benchmarked": "^1.0.0",
- "compute-flatten": "^1.0.0",
- "flatit": "^1.1.1",
- "flatten": "^1.0.2",
- "flatten-array": "^1.0.0",
- "glob": "^7.1.1",
- "gulp-format-md": "^0.1.12",
- "just-flatten-it": "^1.1.23",
- "lodash.flattendeep": "^4.4.0",
- "m_flattened": "^1.0.1",
- "mocha": "^3.2.0",
- "utils-flatten": "^1.0.0",
- "write": "^0.3.3"
- },
- "keywords": [
- "arr",
- "array",
- "elements",
- "flat",
- "flatten",
- "nested",
- "recurse",
- "recursive",
- "recursively"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "arr-filter",
- "arr-union",
- "array-each",
- "array-unique"
- ]
- },
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/arr-union/LICENSE b/node_modules/arr-union/LICENSE
deleted file mode 100644
index 39245ac..0000000
--- a/node_modules/arr-union/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2016, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/arr-union/README.md b/node_modules/arr-union/README.md
deleted file mode 100644
index b3cd4f4..0000000
--- a/node_modules/arr-union/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# arr-union [](https://www.npmjs.com/package/arr-union) [](https://travis-ci.org/jonschlinkert/arr-union)
-
-> Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm i arr-union --save
-```
-
-## Benchmarks
-
-This library is **10-20 times faster** and more performant than [array-union](https://github.com/sindresorhus/array-union).
-
-See the [benchmarks](./benchmark).
-
-```sh
-#1: five-arrays
- array-union x 511,121 ops/sec ±0.80% (96 runs sampled)
- arr-union x 5,716,039 ops/sec ±0.86% (93 runs sampled)
-
-#2: ten-arrays
- array-union x 245,196 ops/sec ±0.69% (94 runs sampled)
- arr-union x 1,850,786 ops/sec ±0.84% (97 runs sampled)
-
-#3: two-arrays
- array-union x 563,869 ops/sec ±0.97% (94 runs sampled)
- arr-union x 9,602,852 ops/sec ±0.87% (92 runs sampled)
-```
-
-## Usage
-
-```js
-var union = require('arr-union');
-
-union(['a'], ['b', 'c'], ['d', 'e', 'f']);
-//=> ['a', 'b', 'c', 'd', 'e', 'f']
-```
-
-Returns only unique elements:
-
-```js
-union(['a', 'a'], ['b', 'c']);
-//=> ['a', 'b', 'c']
-```
-
-## Related projects
-
-* [arr-diff](https://www.npmjs.com/package/arr-diff): Returns an array with only the unique values from the first array, by excluding all… [more](https://www.npmjs.com/package/arr-diff) | [homepage](https://github.com/jonschlinkert/arr-diff)
-* [arr-filter](https://www.npmjs.com/package/arr-filter): Faster alternative to javascript's native filter method. | [homepage](https://github.com/jonschlinkert/arr-filter)
-* [arr-flatten](https://www.npmjs.com/package/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten. | [homepage](https://github.com/jonschlinkert/arr-flatten)
-* [arr-map](https://www.npmjs.com/package/arr-map): Faster, node.js focused alternative to JavaScript's native array map. | [homepage](https://github.com/jonschlinkert/arr-map)
-* [arr-pluck](https://www.npmjs.com/package/arr-pluck): Retrieves the value of a specified property from all elements in the collection. | [homepage](https://github.com/jonschlinkert/arr-pluck)
-* [arr-reduce](https://www.npmjs.com/package/arr-reduce): Fast array reduce that also loops over sparse elements. | [homepage](https://github.com/jonschlinkert/arr-reduce)
-* [array-unique](https://www.npmjs.com/package/array-unique): Return an array free of duplicate values. Fastest ES5 implementation. | [homepage](https://github.com/jonschlinkert/array-unique)
-
-## Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/arr-union/issues/new).
-
-## Building docs
-
-Generate readme and API documentation with [verb](https://github.com/verbose/verb):
-
-```sh
-$ npm i verb && npm run docs
-```
-
-Or, if [verb](https://github.com/verbose/verb) is installed globally:
-
-```sh
-$ verb
-```
-
-## Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm i -d && npm test
-```
-
-## Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-## License
-
-Copyright © 2016 [Jon Schlinkert](https://github.com/jonschlinkert)
-Released under the [MIT license](https://github.com/jonschlinkert/arr-union/blob/master/LICENSE).
-
-***
-
-_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on February 23, 2016._
\ No newline at end of file
diff --git a/node_modules/arr-union/index.js b/node_modules/arr-union/index.js
deleted file mode 100644
index 5ae6c4a..0000000
--- a/node_modules/arr-union/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-'use strict';
-
-module.exports = function union(init) {
- if (!Array.isArray(init)) {
- throw new TypeError('arr-union expects the first argument to be an array.');
- }
-
- var len = arguments.length;
- var i = 0;
-
- while (++i < len) {
- var arg = arguments[i];
- if (!arg) continue;
-
- if (!Array.isArray(arg)) {
- arg = [arg];
- }
-
- for (var j = 0; j < arg.length; j++) {
- var ele = arg[j];
-
- if (init.indexOf(ele) >= 0) {
- continue;
- }
- init.push(ele);
- }
- }
- return init;
-};
diff --git a/node_modules/arr-union/package.json b/node_modules/arr-union/package.json
deleted file mode 100644
index 5ee87fd..0000000
--- a/node_modules/arr-union/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "name": "arr-union",
- "description": "Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.",
- "version": "3.1.0",
- "homepage": "https://github.com/jonschlinkert/arr-union",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/arr-union",
- "bugs": {
- "url": "https://github.com/jonschlinkert/arr-union/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "ansi-bold": "^0.1.1",
- "array-union": "^1.0.1",
- "array-unique": "^0.2.1",
- "benchmarked": "^0.1.4",
- "gulp-format-md": "^0.1.7",
- "minimist": "^1.1.1",
- "mocha": "*",
- "should": "*"
- },
- "keywords": [
- "add",
- "append",
- "array",
- "arrays",
- "combine",
- "concat",
- "extend",
- "union",
- "uniq",
- "unique",
- "util",
- "utility",
- "utils"
- ],
- "verb": {
- "run": true,
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "arr-diff",
- "arr-flatten",
- "arr-filter",
- "arr-map",
- "arr-pluck",
- "arr-reduce",
- "array-unique"
- ]
- },
- "reflinks": [
- "verb",
- "array-union"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/array-unique/LICENSE b/node_modules/array-unique/LICENSE
deleted file mode 100755
index 842218c..0000000
--- a/node_modules/array-unique/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2016, Jon Schlinkert
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/array-unique/README.md b/node_modules/array-unique/README.md
deleted file mode 100755
index 41c8c90..0000000
--- a/node_modules/array-unique/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# array-unique [](https://www.npmjs.com/package/array-unique) [](https://npmjs.org/package/array-unique) [](https://travis-ci.org/jonschlinkert/array-unique)
-
-Remove duplicate values from an array. Fastest ES5 implementation.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save array-unique
-```
-
-## Usage
-
-```js
-var unique = require('array-unique');
-
-var arr = ['a', 'b', 'c', 'c'];
-console.log(unique(arr)) //=> ['a', 'b', 'c']
-console.log(arr) //=> ['a', 'b', 'c']
-
-/* The above modifies the input array. To prevent that at a slight performance cost: */
-var unique = require("array-unique").immutable;
-
-var arr = ['a', 'b', 'c', 'c'];
-console.log(unique(arr)) //=> ['a', 'b', 'c']
-console.log(arr) //=> ['a', 'b', 'c', 'c']
-```
-
-## About
-
-### Related projects
-
-* [arr-diff](https://www.npmjs.com/package/arr-diff): Returns an array with only the unique values from the first array, by excluding all… [more](https://github.com/jonschlinkert/arr-diff) | [homepage](https://github.com/jonschlinkert/arr-diff "Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.")
-* [arr-flatten](https://www.npmjs.com/package/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten. | [homepage](https://github.com/jonschlinkert/arr-flatten "Recursively flatten an array or arrays. This is the fastest implementation of array flatten.")
-* [arr-map](https://www.npmjs.com/package/arr-map): Faster, node.js focused alternative to JavaScript's native array map. | [homepage](https://github.com/jonschlinkert/arr-map "Faster, node.js focused alternative to JavaScript's native array map.")
-* [arr-pluck](https://www.npmjs.com/package/arr-pluck): Retrieves the value of a specified property from all elements in the collection. | [homepage](https://github.com/jonschlinkert/arr-pluck "Retrieves the value of a specified property from all elements in the collection.")
-* [arr-reduce](https://www.npmjs.com/package/arr-reduce): Fast array reduce that also loops over sparse elements. | [homepage](https://github.com/jonschlinkert/arr-reduce "Fast array reduce that also loops over sparse elements.")
-* [arr-union](https://www.npmjs.com/package/arr-union): Combines a list of arrays, returning a single array with unique values, using strict equality… [more](https://github.com/jonschlinkert/arr-union) | [homepage](https://github.com/jonschlinkert/arr-union "Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Building docs
-
-_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_
-
-To generate the readme and API documentation with [verb](https://github.com/verbose/verb):
-
-```sh
-$ npm install -g verb verb-generate-readme && verb
-```
-
-### Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm install -d && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT license](https://github.com/jonschlinkert/array-unique/blob/master/LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.1.28, on July 31, 2016._
\ No newline at end of file
diff --git a/node_modules/array-unique/index.js b/node_modules/array-unique/index.js
deleted file mode 100644
index 7e481e0..0000000
--- a/node_modules/array-unique/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*!
- * array-unique
- *
- * Copyright (c) 2014-2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-module.exports = function unique(arr) {
- if (!Array.isArray(arr)) {
- throw new TypeError('array-unique expects an array.');
- }
-
- var len = arr.length;
- var i = -1;
-
- while (i++ < len) {
- var j = i + 1;
-
- for (; j < arr.length; ++j) {
- if (arr[i] === arr[j]) {
- arr.splice(j--, 1);
- }
- }
- }
- return arr;
-};
-
-module.exports.immutable = function uniqueImmutable(arr) {
- if (!Array.isArray(arr)) {
- throw new TypeError('array-unique expects an array.');
- }
-
- var arrLen = arr.length;
- var newArr = new Array(arrLen);
-
- for (var i = 0; i < arrLen; i++) {
- newArr[i] = arr[i];
- }
-
- return module.exports(newArr);
-};
diff --git a/node_modules/array-unique/package.json b/node_modules/array-unique/package.json
deleted file mode 100644
index d87640a..0000000
--- a/node_modules/array-unique/package.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "name": "array-unique",
- "description": "Remove duplicate values from an array. Fastest ES5 implementation.",
- "version": "0.3.2",
- "homepage": "https://github.com/jonschlinkert/array-unique",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/array-unique",
- "bugs": {
- "url": "https://github.com/jonschlinkert/array-unique/issues"
- },
- "license": "MIT",
- "files": [
- "index.js",
- "LICENSE",
- "README.md"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "array-uniq": "^1.0.2",
- "benchmarked": "^0.1.3",
- "gulp-format-md": "^0.1.9",
- "mocha": "^2.5.3",
- "should": "^10.0.0"
- },
- "keywords": [
- "array",
- "unique"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "arr-diff",
- "arr-union",
- "arr-flatten",
- "arr-reduce",
- "arr-map",
- "arr-pluck"
- ]
- },
- "reflinks": [
- "verb",
- "verb-generate-readme"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/assign-symbols/LICENSE b/node_modules/assign-symbols/LICENSE
deleted file mode 100644
index 65f90ac..0000000
--- a/node_modules/assign-symbols/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/assign-symbols/README.md b/node_modules/assign-symbols/README.md
deleted file mode 100644
index 422729d..0000000
--- a/node_modules/assign-symbols/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# assign-symbols [](http://badge.fury.io/js/assign-symbols)
-
-> Assign the enumerable es6 Symbol properties from an object (or objects) to the first object passed on the arguments. Can be used as a supplement to other extend, assign or merge methods as a polyfill for the Symbols part of the es6 Object.assign method.
-
-From the [Mozilla Developer docs for Symbol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol):
-
-> A symbol is a unique and immutable data type and may be used as an identifier for object properties. The symbol object is an implicit object wrapper for the symbol primitive data type.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/)
-
-```sh
-$ npm i assign-symbols --save
-```
-
-## Usage
-
-```js
-var assignSymbols = require('assign-symbols');
-var obj = {};
-
-var one = {};
-var symbolOne = Symbol('aaa');
-one[symbolOne] = 'bbb';
-
-var two = {};
-var symbolTwo = Symbol('ccc');
-two[symbolTwo] = 'ddd';
-
-assignSymbols(obj, one, two);
-
-console.log(obj[symbolOne]);
-//=> 'bbb'
-console.log(obj[symbolTwo]);
-//=> 'ddd'
-```
-
-## Similar projects
-
-* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties of source objects to a destination object. | [homepage](https://github.com/jonschlinkert/assign-deep)
-* [clone-deep](https://www.npmjs.com/package/clone-deep): Recursively (deep) clone JavaScript native types, like Object, Array, RegExp, Date as well as primitives. | [homepage](https://github.com/jonschlinkert/clone-deep)
-* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow)
-* [merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep)
-* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep)
-
-## Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm i -d && npm test
-```
-
-## Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/assign-symbols/issues/new).
-
-## Author
-
-**Jon Schlinkert**
-
-+ [github/jonschlinkert](https://github.com/jonschlinkert)
-+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-## License
-
-Copyright © 2015 Jon Schlinkert
-Released under the MIT license.
-
-***
-
-_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on November 06, 2015._
\ No newline at end of file
diff --git a/node_modules/assign-symbols/index.js b/node_modules/assign-symbols/index.js
deleted file mode 100644
index c08a232..0000000
--- a/node_modules/assign-symbols/index.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*!
- * assign-symbols
- *
- * Copyright (c) 2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-module.exports = function(receiver, objects) {
- if (receiver === null || typeof receiver === 'undefined') {
- throw new TypeError('expected first argument to be an object.');
- }
-
- if (typeof objects === 'undefined' || typeof Symbol === 'undefined') {
- return receiver;
- }
-
- if (typeof Object.getOwnPropertySymbols !== 'function') {
- return receiver;
- }
-
- var isEnumerable = Object.prototype.propertyIsEnumerable;
- var target = Object(receiver);
- var len = arguments.length, i = 0;
-
- while (++i < len) {
- var provider = Object(arguments[i]);
- var names = Object.getOwnPropertySymbols(provider);
-
- for (var j = 0; j < names.length; j++) {
- var key = names[j];
-
- if (isEnumerable.call(provider, key)) {
- target[key] = provider[key];
- }
- }
- }
- return target;
-};
diff --git a/node_modules/assign-symbols/package.json b/node_modules/assign-symbols/package.json
deleted file mode 100644
index 7f77b58..0000000
--- a/node_modules/assign-symbols/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "assign-symbols",
- "description": "Assign the enumerable es6 Symbol properties from an object (or objects) to the first object passed on the arguments. Can be used as a supplement to other extend, assign or merge methods as a polyfill for the Symbols part of the es6 Object.assign method.",
- "version": "1.0.0",
- "homepage": "https://github.com/jonschlinkert/assign-symbols",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/assign-symbols",
- "bugs": {
- "url": "https://github.com/jonschlinkert/assign-symbols/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "mocha": "^3.0.0"
- },
- "keywords": [
- "assign",
- "symbols"
- ],
- "verb": {
- "related": {
- "list": [
- "assign-deep",
- "mixin-deep",
- "merge-deep",
- "extend-shallow",
- "clone-deep"
- ]
- }
- }
-}
diff --git a/node_modules/async-each/LICENSE b/node_modules/async-each/LICENSE
deleted file mode 100644
index b4d4dec..0000000
--- a/node_modules/async-each/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2016 Paul Miller (https://paulmillr.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/node_modules/async-each/README.md b/node_modules/async-each/README.md
deleted file mode 100644
index 6b03be4..0000000
--- a/node_modules/async-each/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# async-each
-
-No-bullshit, ultra-simple, 40-lines-of-code async parallel forEach function for JavaScript.
-
-We don't need junky 30K async libs. Really.
-
-For browsers and node.js.
-
-## Usage
-
-`npm install async-each` if you're using NPM.
-
-For browsers, just include async-each before your scripts and use global variable `asyncEach`
-
-* `each(array, iterator, callback)` — `Array`, `Function`, `(optional) Function`
-* `iterator(item, next)` receives current item and a callback that will mark the item as done. `next` callback receives optional `error, transformedItem` arguments.
-* `callback(error, transformedArray)` optionally receives first error and transformed result `Array`.
-
-```javascript
-var each = require('async-each');
-each(['a.js', 'b.js', 'c.js'], fs.readFile, function(error, contents) {
- if (error) console.error(error);
- console.log('Contents for a, b and c:', contents);
-});
-
-asyncEach(list, fn, callback); // use global var in browser
-```
-
-## License
-
-The MIT License (MIT)
-
-Copyright (c) 2016 Paul Miller [(paulmillr.com)](https://paulmillr.com)
-
-See [LICENSE](https://github.com/paulmillr/async-each/blob/master/LICENSE) file.
diff --git a/node_modules/async-each/index.js b/node_modules/async-each/index.js
deleted file mode 100644
index 8806c5f..0000000
--- a/node_modules/async-each/index.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*! async-each - MIT License (c) 2016 Paul Miller (paulmillr.com) */
-(function (globals) {
- 'use strict';
- var each = function (items, next, callback) {
- if (!Array.isArray(items)) throw new TypeError('each() expects array as first argument');
- if (typeof next !== 'function')
- throw new TypeError('each() expects function as second argument');
- if (typeof callback !== 'function') callback = Function.prototype; // no-op
-
- var total = items.length;
- if (total === 0) return callback(undefined, items);
- var transformed = new Array(total);
- var transformedCount = 0;
- var returned = false;
-
- items.forEach(function (item, index) {
- next(item, function (error, transformedItem) {
- if (returned) return;
- if (error) {
- returned = true;
- return callback(error);
- }
- transformed[index] = transformedItem;
- transformedCount += 1; // can't use index: last item could take more time
- if (transformedCount === total) return callback(undefined, transformed);
- });
- });
- };
-
- if (typeof define !== 'undefined' && define.amd) {
- define([], function () {
- return each;
- }); // RequireJS
- } else if (typeof module !== 'undefined' && module.exports) {
- module.exports = each; // CommonJS
- } else {
- globals.asyncEach = each; //
diff --git a/node_modules/live-server/live-server.js b/node_modules/live-server/live-server.js
deleted file mode 100755
index e5dc756..0000000
--- a/node_modules/live-server/live-server.js
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/usr/bin/env node
-var path = require('path');
-var fs = require('fs');
-var assign = require('object-assign');
-var liveServer = require("./index");
-
-var opts = {
- host: process.env.IP,
- port: process.env.PORT,
- open: true,
- mount: [],
- proxy: [],
- middleware: [],
- logLevel: 2,
-};
-
-var homeDir = process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'];
-var configPath = path.join(homeDir, '.live-server.json');
-if (fs.existsSync(configPath)) {
- var userConfig = fs.readFileSync(configPath, 'utf8');
- assign(opts, JSON.parse(userConfig));
- if (opts.ignorePattern) opts.ignorePattern = new RegExp(opts.ignorePattern);
-}
-
-for (var i = process.argv.length - 1; i >= 2; --i) {
- var arg = process.argv[i];
- if (arg.indexOf("--port=") > -1) {
- var portString = arg.substring(7);
- var portNumber = parseInt(portString, 10);
- if (portNumber === +portString) {
- opts.port = portNumber;
- process.argv.splice(i, 1);
- }
- }
- else if (arg.indexOf("--host=") > -1) {
- opts.host = arg.substring(7);
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--open=") > -1) {
- var open = arg.substring(7);
- if (open.indexOf('/') !== 0) {
- open = '/' + open;
- }
- switch (typeof opts.open) {
- case "boolean":
- opts.open = open;
- break;
- case "string":
- opts.open = [opts.open, open];
- break;
- case "object":
- opts.open.push(open);
- break;
- }
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--watch=") > -1) {
- // Will be modified later when cwd is known
- opts.watch = arg.substring(8).split(",");
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--ignore=") > -1) {
- // Will be modified later when cwd is known
- opts.ignore = arg.substring(9).split(",");
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--ignorePattern=") > -1) {
- opts.ignorePattern = new RegExp(arg.substring(16));
- process.argv.splice(i, 1);
- }
- else if (arg === "--no-css-inject") {
- opts.noCssInject = true;
- process.argv.splice(i, 1);
- }
- else if (arg === "--no-browser") {
- opts.open = false;
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--browser=") > -1) {
- opts.browser = arg.substring(10).split(",");
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--entry-file=") > -1) {
- var file = arg.substring(13);
- if (file.length) {
- opts.file = file;
- process.argv.splice(i, 1);
- }
- }
- else if (arg === "--spa") {
- opts.middleware.push("spa");
- process.argv.splice(i, 1);
- }
- else if (arg === "--quiet" || arg === "-q") {
- opts.logLevel = 0;
- process.argv.splice(i, 1);
- }
- else if (arg === "--verbose" || arg === "-V") {
- opts.logLevel = 3;
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--mount=") > -1) {
- // e.g. "--mount=/components:./node_modules" will be ['/components', '/node_modules']
- // split only on the first ":", as the path may contain ":" as well (e.g. C:\file.txt)
- var match = arg.substring(8).match(/([^:]+):(.+)$/);
- match[2] = path.resolve(process.cwd(), match[2]);
- opts.mount.push([ match[1], match[2] ]);
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--wait=") > -1) {
- var waitString = arg.substring(7);
- var waitNumber = parseInt(waitString, 10);
- if (waitNumber === +waitString) {
- opts.wait = waitNumber;
- process.argv.splice(i, 1);
- }
- }
- else if (arg === "--version" || arg === "-v") {
- var packageJson = require('./package.json');
- console.log(packageJson.name, packageJson.version);
- process.exit();
- }
- else if (arg.indexOf("--htpasswd=") > -1) {
- opts.htpasswd = arg.substring(11);
- process.argv.splice(i, 1);
- }
- else if (arg === "--cors") {
- opts.cors = true;
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--https=") > -1) {
- opts.https = arg.substring(8);
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--https-module=") > -1) {
- opts.httpsModule = arg.substring(15);
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--proxy=") > -1) {
- // split only on the first ":", as the URL will contain ":" as well
- var match = arg.substring(8).match(/([^:]+):(.+)$/);
- opts.proxy.push([ match[1], match[2] ]);
- process.argv.splice(i, 1);
- }
- else if (arg.indexOf("--middleware=") > -1) {
- opts.middleware.push(arg.substring(13));
- process.argv.splice(i, 1);
- }
- else if (arg === "--help" || arg === "-h") {
- console.log('Usage: live-server [-v|--version] [-h|--help] [-q|--quiet] [--port=PORT] [--host=HOST] [--open=PATH] [--no-browser] [--browser=BROWSER] [--ignore=PATH] [--ignorePattern=RGXP] [--no-css-inject] [--entry-file=PATH] [--spa] [--mount=ROUTE:PATH] [--wait=MILLISECONDS] [--htpasswd=PATH] [--cors] [--https=PATH] [--https-module=MODULE_NAME] [--proxy=PATH] [PATH]');
- process.exit();
- }
- else if (arg === "--test") {
- // Hidden param for tests to exit automatically
- setTimeout(liveServer.shutdown, 500);
- process.argv.splice(i, 1);
- }
-}
-
-// Patch paths
-var dir = opts.root = process.argv[2] || "";
-
-if (opts.watch) {
- opts.watch = opts.watch.map(function(relativePath) {
- return path.join(dir, relativePath);
- });
-}
-if (opts.ignore) {
- opts.ignore = opts.ignore.map(function(relativePath) {
- return path.join(dir, relativePath);
- });
-}
-
-liveServer.start(opts);
diff --git a/node_modules/live-server/middleware/example.js b/node_modules/live-server/middleware/example.js
deleted file mode 100644
index 6721c27..0000000
--- a/node_modules/live-server/middleware/example.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = function(req, res, next) {
- res.statusCode = 202;
- next();
-}
-
diff --git a/node_modules/live-server/middleware/spa-ignore-assets.js b/node_modules/live-server/middleware/spa-ignore-assets.js
deleted file mode 100644
index 13f076b..0000000
--- a/node_modules/live-server/middleware/spa-ignore-assets.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// Single Page Apps - redirect to /#/ except when a file extension is given
-var path = require('path');
-module.exports = function(req, res, next) {
- if (req.method !== "GET" && req.method !== "HEAD")
- next();
- if (req.url !== '/' && path.extname(req.url) === '') {
- var route = req.url;
- req.url = '/';
- res.statusCode = 302;
- res.setHeader('Location', req.url + '#' + route);
- res.end();
- }
- else next();
-}
diff --git a/node_modules/live-server/middleware/spa.js b/node_modules/live-server/middleware/spa.js
deleted file mode 100644
index 0292900..0000000
--- a/node_modules/live-server/middleware/spa.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Single Page Apps - redirect to /#/
-module.exports = function(req, res, next) {
- if (req.method !== "GET" && req.method !== "HEAD")
- next();
- if (req.url !== '/') {
- var route = req.url;
- req.url = '/';
- res.statusCode = 302;
- res.setHeader('Location', req.url + '#' + route);
- res.end();
- }
- else next();
-}
diff --git a/node_modules/live-server/package.json b/node_modules/live-server/package.json
deleted file mode 100644
index 2e8664b..0000000
--- a/node_modules/live-server/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "name": "live-server",
- "version": "1.2.2",
- "description": "simple development http server with live reload capability",
- "keywords": [
- "front-end",
- "development",
- "tool",
- "server",
- "http",
- "cli"
- ],
- "author": "Tapio Vierros",
- "dependencies": {
- "chokidar": "^2.0.4",
- "colors": "1.4.0",
- "connect": "^3.6.6",
- "cors": "latest",
- "event-stream": "3.3.4",
- "faye-websocket": "0.11.x",
- "http-auth": "3.1.x",
- "morgan": "^1.9.1",
- "object-assign": "latest",
- "opn": "latest",
- "proxy-middleware": "latest",
- "send": "latest",
- "serve-index": "^1.9.1"
- },
- "devDependencies": {
- "eslint": "^5.9.0",
- "jshint": "^2.9.6",
- "mocha": "^5.2.0",
- "supertest": "^3.3.0"
- },
- "scripts": {
- "lint": "eslint live-server.js index.js",
- "hint": "jshint live-server.js index.js",
- "test": "mocha test --exit && npm run lint"
- },
- "bin": {
- "live-server": "./live-server.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/tapio/live-server.git"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "preferGlobal": true,
- "license": "MIT",
- "eslintConfig": {
- "env": {
- "node": true
- },
- "rules": {
- "quotes": 0,
- "curly": 0,
- "strict": 0,
- "no-process-exit": 0,
- "eqeqeq": 1,
- "no-unused-vars": 1,
- "no-shadow": 1
- }
- }
-}
diff --git a/node_modules/live-server/test/acceptance.js b/node_modules/live-server/test/acceptance.js
deleted file mode 100644
index e364445..0000000
--- a/node_modules/live-server/test/acceptance.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var request = require('supertest');
-var path = require('path');
-var liveServer = require('..').start({
- root: path.join(__dirname, "data"),
- port: 0,
- open: false
-});
-
-describe('basic functional tests', function(){
- it('should respond with index.html', function(done){
- request(liveServer)
- .get('/')
- .expect('Content-Type', 'text/html; charset=UTF-8')
- .expect(/hello world/i)
- .expect(200, done);
- });
- it('should have injected script', function(done){
- request(liveServer)
- .get('/')
- .expect('Content-Type', 'text/html; charset=UTF-8')
- .expect(/
-
-
-
diff --git a/node_modules/live-server/test/htpasswd.js b/node_modules/live-server/test/htpasswd.js
deleted file mode 100644
index 388b100..0000000
--- a/node_modules/live-server/test/htpasswd.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var request = require('supertest');
-var path = require('path');
-var liveServer = require('..').start({
- root: path.join(__dirname, "data"),
- port: 0,
- open: false,
- htpasswd: path.join(__dirname, "data", "htpasswd-test")
-});
-
-describe('htpasswd tests', function() {
- it('should respond with 401 since no password is given', function(done) {
- request(liveServer)
- .get('/')
- .expect(401, done);
- });
- it('should respond with 401 since wrong password is given', function(done) {
- request(liveServer)
- .get('/')
- .auth("test", "not-real-password")
- .expect(401, done);
- });
- it('should respond with 200 since correct password is given', function(done) {
- request(liveServer)
- .get('/')
- .auth("test", "test")
- .expect(200, done);
- });
-});
diff --git a/node_modules/live-server/test/https.js b/node_modules/live-server/test/https.js
deleted file mode 100644
index f0c5e9d..0000000
--- a/node_modules/live-server/test/https.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var request = require('supertest');
-var path = require('path');
-// accept self-signed certificates
-process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
-
-function tests(liveServer) {
- it('should reply with a correct index file', function(done) {
- request(liveServer)
- .get('/index.html')
- .expect('Content-Type', 'text/html; charset=UTF-8')
- .expect(/Hello world/i)
- .expect(200, done);
- });
- it('should support head request', function(done) {
- request(liveServer)
- .head('/index.html')
- .expect('Content-Type', 'text/html; charset=UTF-8')
- .expect(200, done);
- });
-}
-
-describe('https tests with external module', function() {
- var opts = {
- root: path.join(__dirname, 'data'),
- port: 0,
- open: false,
- https: path.join(__dirname, 'conf/https.conf.js')
- };
- var liveServer = require("..").start(opts);
- tests(liveServer);
- after(function () {
- liveServer.close()
- });
-});
-
-describe('https tests with object', function() {
- var opts = {
- root: path.join(__dirname, 'data'),
- port: 0,
- open: false,
- https: require(path.join(__dirname, 'conf/https.conf.js'))
- };
- var liveServer = require("..").start(opts);
- tests(liveServer);
- after(function () {
- liveServer.close()
- });
-});
diff --git a/node_modules/live-server/test/middleware.js b/node_modules/live-server/test/middleware.js
deleted file mode 100644
index 2932e35..0000000
--- a/node_modules/live-server/test/middleware.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var request = require('supertest');
-var path = require('path');
-var liveServer1 = require('..').start({
- root: path.join(__dirname, 'data'),
- port: 0,
- open: false,
- middleware: [
- function setStatus(req, res, next) {
- res.statusCode = 201;
- next();
- }
- ]
-});
-var liveServer2 = require('..').start({
- root: path.join(__dirname, 'data'),
- port: 0,
- open: false,
- middleware: [ "example" ]
-});
-var liveServer3 = require('..').start({
- root: path.join(__dirname, 'data'),
- port: 0,
- open: false,
- middleware: [ path.join(__dirname, 'data', 'middleware.js') ]
-});
-
-describe('middleware tests', function() {
- it("should respond with middleware function's status code", function(done) {
- request(liveServer1)
- .get('/')
- .expect(201, done);
- });
- it("should respond with built-in middleware's status code", function(done) {
- request(liveServer2)
- .get('/')
- .expect(202, done);
- });
- it("should respond with external middleware's status code", function(done) {
- request(liveServer3)
- .get('/')
- .expect(203, done);
- });
-});
diff --git a/node_modules/live-server/test/mount.js b/node_modules/live-server/test/mount.js
deleted file mode 100644
index 3a8add3..0000000
--- a/node_modules/live-server/test/mount.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var request = require('supertest');
-var path = require('path');
-var liveServer = require('..').start({
- root: path.join(__dirname, "data"),
- port: 0,
- open: false,
- mount: [
- [ "/mounted", path.join(__dirname, "data", "sub") ],
- [ "/style", path.join(__dirname, "data", "style.css") ]
- ]
-});
-
-describe('mount tests', function() {
- it('should respond with sub.html', function(done) {
- request(liveServer)
- .get('/mounted/sub.html')
- .expect('Content-Type', 'text/html; charset=UTF-8')
- .expect(/Subdirectory/i)
- .expect(200, done);
- });
- it('should respond with style.css', function(done) {
- request(liveServer)
- .get('/style')
- .expect('Content-Type', 'text/css; charset=UTF-8')
- .expect(/color/i)
- .expect(200, done);
- });
-});
-
-
diff --git a/node_modules/live-server/test/proxy.js b/node_modules/live-server/test/proxy.js
deleted file mode 100644
index d755cd9..0000000
--- a/node_modules/live-server/test/proxy.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var request = require('supertest');
-var path = require('path');
-var port = 40200;
-var server1 = require('..').start({
- root: path.join(__dirname, "data"),
- port: port,
- open: false
-});
-var server2 = require('..').start({
- root: path.join(__dirname, "data"),
- port: 0,
- open: false,
- proxy: [
- ["/server1", "http://localhost:" + port]
- ]
-});
-
-describe('proxy tests', function() {
- it('should respond with proxied content', function(done) {
- request(server2)
- .get('/server1/index.html')
- .expect('Content-Type', 'text/html; charset=UTF-8')
- .expect(/Hello world/i)
- .expect(200, done);
- });
-});
-
-
diff --git a/node_modules/live-server/test/spa.js b/node_modules/live-server/test/spa.js
deleted file mode 100644
index 9afa908..0000000
--- a/node_modules/live-server/test/spa.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var request = require('supertest');
-var path = require('path');
-var liveServerSpa = require('..').start({
- root: path.join(__dirname, "data"),
- port: 0,
- open: false,
- middleware: [ "spa" ]
-});
-var liveServerSpaIgnoreAssets = require('..').start({
- root: path.join(__dirname, "data"),
- port: 0,
- open: false,
- middleware: [ "spa-ignore-assets" ]
-});
-
-describe('spa tests', function(){
- it('spa should redirect', function(done){
- request(liveServerSpa)
- .get('/api')
- .expect('Location', /\/#\//)
- .expect(302, done);
- });
- it('spa should redirect everything', function(done){
- request(liveServerSpa)
- .get('/style.css')
- .expect('Location', /\/#\//)
- .expect(302, done);
- });
- it('spa-ignore-assets should redirect something', function(done){
- request(liveServerSpaIgnoreAssets)
- .get('/api')
- .expect('Location', /\/#\//)
- .expect(302, done);
- });
- it('spa-ignore-assets should not redirect .css', function(done){
- request(liveServerSpaIgnoreAssets)
- .get('/style.css')
- .expect(200, done);
- });
-});
diff --git a/node_modules/map-cache/LICENSE b/node_modules/map-cache/LICENSE
deleted file mode 100644
index 1e49edf..0000000
--- a/node_modules/map-cache/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-2016, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/map-cache/README.md b/node_modules/map-cache/README.md
deleted file mode 100644
index 6260b29..0000000
--- a/node_modules/map-cache/README.md
+++ /dev/null
@@ -1,145 +0,0 @@
-# map-cache [](https://www.npmjs.com/package/map-cache) [](https://npmjs.org/package/map-cache) [](https://travis-ci.org/jonschlinkert/map-cache)
-
-Basic cache object for storing key-value pairs.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install map-cache --save
-```
-
-Based on MapCache in Lo-dash v3.0. [MIT License](https://github.com/lodash/lodash/blob/master/LICENSE.txt)
-
-## Usage
-
-```js
-var MapCache = require('map-cache');
-var mapCache = new MapCache();
-```
-
-## API
-
-### [MapCache](index.js#L28)
-
-Creates a cache object to store key/value pairs.
-
-**Example**
-
-```js
-var cache = new MapCache();
-```
-
-### [.set](index.js#L45)
-
-Adds `value` to `key` on the cache.
-
-**Params**
-
-* `key` **{String}**: The key of the value to cache.
-* `value` **{any}**: The value to cache.
-* `returns` **{Object}**: Returns the `Cache` object for chaining.
-
-**Example**
-
-```js
-cache.set('foo', 'bar');
-```
-
-### [.get](index.js#L65)
-
-Gets the cached value for `key`.
-
-**Params**
-
-* `key` **{String}**: The key of the value to get.
-* `returns` **{any}**: Returns the cached value.
-
-**Example**
-
-```js
-cache.get('foo');
-//=> 'bar'
-```
-
-### [.has](index.js#L82)
-
-Checks if a cached value for `key` exists.
-
-**Params**
-
-* `key` **{String}**: The key of the entry to check.
-* `returns` **{Boolean}**: Returns `true` if an entry for `key` exists, else `false`.
-
-**Example**
-
-```js
-cache.has('foo');
-//=> true
-```
-
-### [.del](index.js#L98)
-
-Removes `key` and its value from the cache.
-
-**Params**
-
-* `key` **{String}**: The key of the value to remove.
-* `returns` **{Boolean}**: Returns `true` if the entry was removed successfully, else `false`.
-
-**Example**
-
-```js
-cache.del('foo');
-```
-
-## Related projects
-
-You might also be interested in these projects:
-
-* [cache-base](https://www.npmjs.com/package/cache-base): Basic object cache with `get`, `set`, `del`, and `has` methods for node.js/javascript projects. | [homepage](https://github.com/jonschlinkert/cache-base)
-* [config-cache](https://www.npmjs.com/package/config-cache): General purpose JavaScript object storage methods. | [homepage](https://github.com/jonschlinkert/config-cache)
-* [option-cache](https://www.npmjs.com/package/option-cache): Simple API for managing options in JavaScript applications. | [homepage](https://github.com/jonschlinkert/option-cache)
-
-## Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/map-cache/issues/new).
-
-## Building docs
-
-Generate readme and API documentation with [verb](https://github.com/verbose/verb):
-
-```sh
-$ npm install verb && npm run docs
-```
-
-Or, if [verb](https://github.com/verbose/verb) is installed globally:
-
-```sh
-$ verb
-```
-
-## Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm install -d && npm test
-```
-
-## Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-## License
-
-Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT license](https://github.com/jonschlinkert/map-cache/blob/master/LICENSE).
-
-***
-
-_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on May 10, 2016._
\ No newline at end of file
diff --git a/node_modules/map-cache/index.js b/node_modules/map-cache/index.js
deleted file mode 100644
index f86842f..0000000
--- a/node_modules/map-cache/index.js
+++ /dev/null
@@ -1,100 +0,0 @@
-/*!
- * map-cache
- *
- * Copyright (c) 2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-var hasOwn = Object.prototype.hasOwnProperty;
-
-/**
- * Expose `MapCache`
- */
-
-module.exports = MapCache;
-
-/**
- * Creates a cache object to store key/value pairs.
- *
- * ```js
- * var cache = new MapCache();
- * ```
- *
- * @api public
- */
-
-function MapCache(data) {
- this.__data__ = data || {};
-}
-
-/**
- * Adds `value` to `key` on the cache.
- *
- * ```js
- * cache.set('foo', 'bar');
- * ```
- *
- * @param {String} `key` The key of the value to cache.
- * @param {*} `value` The value to cache.
- * @returns {Object} Returns the `Cache` object for chaining.
- * @api public
- */
-
-MapCache.prototype.set = function mapSet(key, value) {
- if (key !== '__proto__') {
- this.__data__[key] = value;
- }
- return this;
-};
-
-/**
- * Gets the cached value for `key`.
- *
- * ```js
- * cache.get('foo');
- * //=> 'bar'
- * ```
- *
- * @param {String} `key` The key of the value to get.
- * @returns {*} Returns the cached value.
- * @api public
- */
-
-MapCache.prototype.get = function mapGet(key) {
- return key === '__proto__' ? undefined : this.__data__[key];
-};
-
-/**
- * Checks if a cached value for `key` exists.
- *
- * ```js
- * cache.has('foo');
- * //=> true
- * ```
- *
- * @param {String} `key` The key of the entry to check.
- * @returns {Boolean} Returns `true` if an entry for `key` exists, else `false`.
- * @api public
- */
-
-MapCache.prototype.has = function mapHas(key) {
- return key !== '__proto__' && hasOwn.call(this.__data__, key);
-};
-
-/**
- * Removes `key` and its value from the cache.
- *
- * ```js
- * cache.del('foo');
- * ```
- * @title .del
- * @param {String} `key` The key of the value to remove.
- * @returns {Boolean} Returns `true` if the entry was removed successfully, else `false`.
- * @api public
- */
-
-MapCache.prototype.del = function mapDelete(key) {
- return this.has(key) && delete this.__data__[key];
-};
diff --git a/node_modules/map-cache/package.json b/node_modules/map-cache/package.json
deleted file mode 100644
index 8bf0af2..0000000
--- a/node_modules/map-cache/package.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "name": "map-cache",
- "description": "Basic cache object for storing key-value pairs.",
- "version": "0.2.2",
- "homepage": "https://github.com/jonschlinkert/map-cache",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/map-cache",
- "bugs": {
- "url": "https://github.com/jonschlinkert/map-cache/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "gulp-format-md": "^0.1.9",
- "should": "^8.3.1"
- },
- "keywords": [
- "cache",
- "get",
- "has",
- "object",
- "set",
- "storage",
- "store"
- ],
- "verb": {
- "run": true,
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "config-cache",
- "option-cache",
- "cache-base"
- ]
- },
- "reflinks": [
- "verb"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/map-stream/.npmignore b/node_modules/map-stream/.npmignore
deleted file mode 100644
index 13abef4..0000000
--- a/node_modules/map-stream/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-node_modules/*
-npm_debug.log
diff --git a/node_modules/map-stream/.travis.yml b/node_modules/map-stream/.travis.yml
deleted file mode 100644
index 895dbd3..0000000
--- a/node_modules/map-stream/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - 0.6
- - 0.8
diff --git a/node_modules/map-stream/LICENCE b/node_modules/map-stream/LICENCE
deleted file mode 100644
index 171dd97..0000000
--- a/node_modules/map-stream/LICENCE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2011 Dominic Tarr
-
-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/map-stream/examples/pretty.js b/node_modules/map-stream/examples/pretty.js
deleted file mode 100644
index ab07398..0000000
--- a/node_modules/map-stream/examples/pretty.js
+++ /dev/null
@@ -1,26 +0,0 @@
-
-var inspect = require('util').inspect
-
-if(!module.parent) {
- var map = require('..') //load map-stream
- var es = require('event-stream') //load event-stream
- es.pipe( //pipe joins streams together
- process.openStdin(), //open stdin
- es.split(), //split stream to break on newlines
- map(function (data, callback) { //turn this async function into a stream
- var j
- try {
- j = JSON.parse(data) //try to parse input into json
- } catch (err) {
- return callback(null, data) //if it fails just pass it anyway
- }
- callback(null, inspect(j)) //render it nicely
- }),
- process.stdout // pipe it to stdout !
- )
- }
-
-// run this
-//
-// curl -sS registry.npmjs.org/event-stream | node pretty.js
-//
diff --git a/node_modules/map-stream/index.js b/node_modules/map-stream/index.js
deleted file mode 100644
index 09ae829..0000000
--- a/node_modules/map-stream/index.js
+++ /dev/null
@@ -1,145 +0,0 @@
-//filter will reemit the data if cb(err,pass) pass is truthy
-
-// reduce is more tricky
-// maybe we want to group the reductions or emit progress updates occasionally
-// the most basic reduce just emits one 'data' event after it has recieved 'end'
-
-
-var Stream = require('stream').Stream
-
-
-//create an event stream and apply function to each .write
-//emitting each response as data
-//unless it's an empty callback
-
-module.exports = function (mapper, opts) {
-
- var stream = new Stream()
- , self = this
- , inputs = 0
- , outputs = 0
- , ended = false
- , paused = false
- , destroyed = false
- , lastWritten = 0
- , inNext = false
-
- this.opts = opts || {};
- var errorEventName = this.opts.failures ? 'failure' : 'error';
-
- // Items that are not ready to be written yet (because they would come out of
- // order) get stuck in a queue for later.
- var writeQueue = {}
-
- stream.writable = true
- stream.readable = true
-
- function queueData (data, number) {
- var nextToWrite = lastWritten + 1
-
- if (number === nextToWrite) {
- // If it's next, and its not undefined write it
- if (data !== undefined) {
- stream.emit.apply(stream, ['data', data])
- }
- lastWritten ++
- nextToWrite ++
- } else {
- // Otherwise queue it for later.
- writeQueue[number] = data
- }
-
- // If the next value is in the queue, write it
- if (writeQueue.hasOwnProperty(nextToWrite)) {
- var dataToWrite = writeQueue[nextToWrite]
- delete writeQueue[nextToWrite]
- return queueData(dataToWrite, nextToWrite)
- }
-
- outputs ++
- if(inputs === outputs) {
- if(paused) paused = false, stream.emit('drain') //written all the incoming events
- if(ended) end()
- }
- }
-
- function next (err, data, number) {
- if(destroyed) return
- inNext = true
-
- if (!err || self.opts.failures) {
- queueData(data, number)
- }
-
- if (err) {
- stream.emit.apply(stream, [ errorEventName, err ]);
- }
-
- inNext = false;
- }
-
- // Wrap the mapper function by calling its callback with the order number of
- // the item in the stream.
- function wrappedMapper (input, number, callback) {
- return mapper.call(null, input, function(err, data){
- callback(err, data, number)
- })
- }
-
- stream.write = function (data) {
- if(ended) throw new Error('map stream is not writable')
- inNext = false
- inputs ++
-
- try {
- //catch sync errors and handle them like async errors
- var written = wrappedMapper(data, inputs, next)
- paused = (written === false)
- return !paused
- } catch (err) {
- //if the callback has been called syncronously, and the error
- //has occured in an listener, throw it again.
- if(inNext)
- throw err
- next(err)
- return !paused
- }
- }
-
- function end (data) {
- //if end was called with args, write it,
- ended = true //write will emit 'end' if ended is true
- stream.writable = false
- if(data !== undefined) {
- return queueData(data, inputs)
- } else if (inputs == outputs) { //wait for processing
- stream.readable = false, stream.emit('end'), stream.destroy()
- }
- }
-
- stream.end = function (data) {
- if(ended) return
- end()
- }
-
- stream.destroy = function () {
- ended = destroyed = true
- stream.writable = stream.readable = paused = false
- process.nextTick(function () {
- stream.emit('close')
- })
- }
- stream.pause = function () {
- paused = true
- }
-
- stream.resume = function () {
- paused = false
- }
-
- return stream
-}
-
-
-
-
diff --git a/node_modules/map-stream/package.json b/node_modules/map-stream/package.json
deleted file mode 100644
index cb6b7f3..0000000
--- a/node_modules/map-stream/package.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "map-stream",
- "version": "0.1.0",
- "description": "construct pipes of streams of events",
- "homepage": "http://github.com/dominictarr/map-stream",
- "repository": {
- "type": "git",
- "url": "git://github.com/dominictarr/map-stream.git"
- },
- "dependencies": {
- },
- "devDependencies": {
- "asynct": "*",
- "it-is": "1",
- "ubelt": "~2.9",
- "stream-spec": "~0.2",
- "event-stream": "~2.1",
- "from": "0.0.2"
- },
- "scripts": {
- "test": "asynct test/"
- },
- "author": "Dominic Tarr (http://dominictarr.com)"
-}
diff --git a/node_modules/map-stream/readme.markdown b/node_modules/map-stream/readme.markdown
deleted file mode 100644
index 1897158..0000000
--- a/node_modules/map-stream/readme.markdown
+++ /dev/null
@@ -1,37 +0,0 @@
-# MapStream
-
-Refactored out of [event-stream](https://github.com/dominictarr/event-stream)
-
-##map (asyncFunction[, options])
-
-Create a through stream from an asyncronous function.
-
-``` js
-var map = require('map-stream')
-
-map(function (data, callback) {
- //transform data
- // ...
- callback(null, data)
-})
-
-```
-
-Each map MUST call the callback. It may callback with data, with an error or with no arguments,
-
- * `callback()` drop this data.
- this makes the map work like `filter`,
- note:`callback(null,null)` is not the same, and will emit `null`
-
- * `callback(null, newData)` turn data into newData
-
- * `callback(error)` emit an error for this item.
-
->Note: if a callback is not called, `map` will think that it is still being processed,
->every call must be answered or the stream will not know when to end.
->
->Also, if the callback is called more than once, every call but the first will be ignored.
-
-##Options
-
- * `failures` - `boolean` continue mapping even if error occured. On error `map-stream` will emit `failure` event. (default: `false`)
diff --git a/node_modules/map-stream/test/simple-map.asynct.js b/node_modules/map-stream/test/simple-map.asynct.js
deleted file mode 100644
index 2b9a292..0000000
--- a/node_modules/map-stream/test/simple-map.asynct.js
+++ /dev/null
@@ -1,318 +0,0 @@
-'use strict';
-
-var map = require('../')
- , it = require('it-is')
- , u = require('ubelt')
- , spec = require('stream-spec')
- , from = require('from')
- , Stream = require('stream')
- , es = require('event-stream')
-
-//REFACTOR THIS TEST TO USE es.readArray and es.writeArray
-
-function writeArray(array, stream) {
-
- array.forEach( function (j) {
- stream.write(j)
- })
- stream.end()
-
-}
-
-function readStream(stream, done) {
-
- var array = []
- stream.on('data', function (data) {
- array.push(data)
- })
- stream.on('error', done)
- stream.on('end', function (data) {
- done(null, array)
- })
-
-}
-
-//call sink on each write,
-//and complete when finished.
-
-function pauseStream (prob, delay) {
- var pauseIf = (
- 'number' == typeof prob
- ? function () {
- return Math.random() < prob
- }
- : 'function' == typeof prob
- ? prob
- : 0.1
- )
- var delayer = (
- !delay
- ? process.nextTick
- : 'number' == typeof delay
- ? function (next) { setTimeout(next, delay) }
- : delay
- )
-
- return es.through(function (data) {
- if(!this.paused && pauseIf()) {
- console.log('PAUSE STREAM PAUSING')
- this.pause()
- var self = this
- delayer(function () {
- console.log('PAUSE STREAM RESUMING')
- self.resume()
- })
- }
- console.log("emit ('data', " + data + ')')
- this.emit('data', data)
- })
-}
-
-exports ['simple map applied to a stream'] = function (test) {
-
- var input = [1,2,3,7,5,3,1,9,0,2,4,6]
- //create event stream from
-
- var doubler = map(function (data, cb) {
- cb(null, data * 2)
- })
-
- spec(doubler).through().validateOnExit()
-
- //a map is only a middle man, so it is both readable and writable
-
- it(doubler).has({
- readable: true,
- writable: true,
- })
-
- readStream(doubler, function (err, output) {
- it(output).deepEqual(input.map(function (j) {
- return j * 2
- }))
-// process.nextTick(x.validate)
- test.done()
- })
-
- writeArray(input, doubler)
-
-}
-
-exports ['stream comes back in the correct order'] = function (test) {
- var input = [3, 2, 1]
-
- var delayer = map(function(data, cb){
- setTimeout(function () {
- cb(null, data)
- }, 100 * data)
- })
-
- readStream(delayer, function (err, output) {
- it(output).deepEqual(input)
- test.done()
- })
-
- writeArray(input, delayer)
-}
-
-exports ['continues on error event with failures `true`'] = function (test) {
- var input = [1, 2, 3]
-
- var delayer = map(function(data, cb){
- cb(new Error('Something gone wrong'), data)
- }, { failures: true })
-
- readStream(delayer, function (err, output) {
- it(output).deepEqual(input)
- test.done()
- })
-
- writeArray(input, delayer)
-}
-
-exports['pipe two maps together'] = function (test) {
-
- var input = [1,2,3,7,5,3,1,9,0,2,4,6]
- //create event stream from
- function dd (data, cb) {
- cb(null, data * 2)
- }
- var doubler1 = map(dd), doubler2 = map(dd)
-
- doubler1.pipe(doubler2)
-
- spec(doubler1).through().validateOnExit()
- spec(doubler2).through().validateOnExit()
-
- readStream(doubler2, function (err, output) {
- it(output).deepEqual(input.map(function (j) {
- return j * 4
- }))
- test.done()
- })
-
- writeArray(input, doubler1)
-
-}
-
-//next:
-//
-// test pause, resume and drian.
-//
-
-// then make a pipe joiner:
-//
-// plumber (evStr1, evStr2, evStr3, evStr4, evStr5)
-//
-// will return a single stream that write goes to the first
-
-exports ['map will not call end until the callback'] = function (test) {
-
- var ticker = map(function (data, cb) {
- process.nextTick(function () {
- cb(null, data * 2)
- })
- })
-
- spec(ticker).through().validateOnExit()
-
- ticker.write('x')
- ticker.end()
-
- ticker.on('end', function () {
- test.done()
- })
-}
-
-exports ['emit failures with opts.failures === `ture`'] = function (test) {
-
- var err = new Error('INTENSIONAL ERROR')
- , mapper =
- map(function () {
- throw err
- }, { failures: true })
-
- mapper.on('failure', function (_err) {
- it(_err).equal(err)
- test.done()
- })
-
- mapper.write('hello')
-
-}
-
-exports ['emit error thrown'] = function (test) {
-
- var err = new Error('INTENSIONAL ERROR')
- , mapper =
- map(function () {
- throw err
- })
-
- mapper.on('error', function (_err) {
- it(_err).equal(err)
- test.done()
- })
-
- mapper.write('hello')
-
-}
-
-exports ['emit error calledback'] = function (test) {
-
- var err = new Error('INTENSIONAL ERROR')
- , mapper =
- map(function (data, callback) {
- callback(err)
- })
-
- mapper.on('error', function (_err) {
- it(_err).equal(err)
- test.done()
- })
-
- mapper.write('hello')
-
-}
-
-exports ['do not emit drain if not paused'] = function (test) {
-
- var maps = map(function (data, callback) {
- u.delay(callback)(null, 1)
- return true
- })
-
- spec(maps).through().pausable().validateOnExit()
-
- maps.on('drain', function () {
- it(false).ok('should not emit drain unless the stream is paused')
- })
-
- it(maps.write('hello')).equal(true)
- it(maps.write('hello')).equal(true)
- it(maps.write('hello')).equal(true)
- setTimeout(function () {maps.end()},10)
- maps.on('end', test.done)
-}
-
-exports ['emits drain if paused, when all '] = function (test) {
- var active = 0
- var drained = false
- var maps = map(function (data, callback) {
- active ++
- u.delay(function () {
- active --
- callback(null, 1)
- })()
- console.log('WRITE', false)
- return false
- })
-
- spec(maps).through().validateOnExit()
-
- maps.on('drain', function () {
- drained = true
- it(active).equal(0, 'should emit drain when all maps are done')
- })
-
- it(maps.write('hello')).equal(false)
- it(maps.write('hello')).equal(false)
- it(maps.write('hello')).equal(false)
-
- process.nextTick(function () {maps.end()},10)
-
- maps.on('end', function () {
- console.log('end')
- it(drained).ok('shoud have emitted drain before end')
- test.done()
- })
-
-}
-
-exports ['map applied to a stream with filtering'] = function (test) {
-
- var input = [1,2,3,7,5,3,1,9,0,2,4,6]
-
- var doubler = map(function (data, callback) {
- if (data % 2)
- callback(null, data * 2)
- else
- callback()
- })
-
- readStream(doubler, function (err, output) {
- it(output).deepEqual(input.filter(function (j) {
- return j % 2
- }).map(function (j) {
- return j * 2
- }))
- test.done()
- })
-
- spec(doubler).through().validateOnExit()
-
- writeArray(input, doubler)
-
-}
-
-
diff --git a/node_modules/map-visit/LICENSE b/node_modules/map-visit/LICENSE
deleted file mode 100644
index 83b56e7..0000000
--- a/node_modules/map-visit/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-2017, Jon Schlinkert
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/map-visit/README.md b/node_modules/map-visit/README.md
deleted file mode 100644
index 5ab02d4..0000000
--- a/node_modules/map-visit/README.md
+++ /dev/null
@@ -1,155 +0,0 @@
-# map-visit [](https://www.npmjs.com/package/map-visit) [](https://npmjs.org/package/map-visit) [](https://npmjs.org/package/map-visit) [](https://travis-ci.org/jonschlinkert/map-visit)
-
-> Map `visit` over an array of objects.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save map-visit
-```
-
-## Usage
-
-```js
-var mapVisit = require('map-visit');
-```
-
-## What does this do?
-
-**Assign/Merge/Extend vs. Visit**
-
-Let's say you want to add a `set` method to your application that will:
-
-* set key-value pairs on a `data` object
-* extend objects onto the `data` object
-* extend arrays of objects onto the data object
-
-**Example using `extend`**
-
-Here is one way to accomplish this using Lo-Dash's `extend` (comparable to `Object.assign`):
-
-```js
-var _ = require('lodash');
-
-var obj = {
- data: {},
- set: function (key, value) {
- if (Array.isArray(key)) {
- _.extend.apply(_, [obj.data].concat(key));
- } else if (typeof key === 'object') {
- _.extend(obj.data, key);
- } else {
- obj.data[key] = value;
- }
- }
-};
-
-obj.set('a', 'a');
-obj.set([{b: 'b'}, {c: 'c'}]);
-obj.set({d: {e: 'f'}});
-
-console.log(obj.data);
-//=> {a: 'a', b: 'b', c: 'c', d: { e: 'f' }}
-```
-
-The above approach works fine for most use cases. However, **if you also want to emit an event** each time a property is added to the `data` object, or you want more control over what happens as the object is extended, a better approach would be to use `visit`.
-
-**Example using `visit`**
-
-In this approach:
-
-* when an array is passed to `set`, the `mapVisit` library calls the `set` method on each object in the array.
-* when an object is passed, `visit` calls `set` on each property in the object.
-
-As a result, the `data` event will be emitted every time a property is added to `data` (events are just an example, you can use this approach to perform any necessary logic every time the method is called).
-
-```js
-var mapVisit = require('map-visit');
-var visit = require('object-visit');
-
-var obj = {
- data: {},
- set: function (key, value) {
- if (Array.isArray(key)) {
- mapVisit(obj, 'set', key);
- } else if (typeof key === 'object') {
- visit(obj, 'set', key);
- } else {
- // simulate an event-emitter
- console.log('emit', key, value);
- obj.data[key] = value;
- }
- }
-};
-
-obj.set('a', 'a');
-obj.set([{b: 'b'}, {c: 'c'}]);
-obj.set({d: {e: 'f'}});
-obj.set({g: 'h', i: 'j', k: 'l'});
-
-console.log(obj.data);
-//=> {a: 'a', b: 'b', c: 'c', d: { e: 'f' }, g: 'h', i: 'j', k: 'l'}
-
-// events would look something like:
-// emit a a
-// emit b b
-// emit c c
-// emit d { e: 'f' }
-// emit g h
-// emit i j
-// emit k l
-```
-
-## About
-
-### Related projects
-
-* [collection-visit](https://www.npmjs.com/package/collection-visit): Visit a method over the items in an object, or map visit over the objects… [more](https://github.com/jonschlinkert/collection-visit) | [homepage](https://github.com/jonschlinkert/collection-visit "Visit a method over the items in an object, or map visit over the objects in an array.")
-* [object-visit](https://www.npmjs.com/package/object-visit): Call a specified method on each value in the given object. | [homepage](https://github.com/jonschlinkert/object-visit "Call a specified method on each value in the given object.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 15 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 7 | [doowb](https://github.com/doowb) |
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 09, 2017._
\ No newline at end of file
diff --git a/node_modules/map-visit/index.js b/node_modules/map-visit/index.js
deleted file mode 100644
index bc54ccc..0000000
--- a/node_modules/map-visit/index.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-
-var util = require('util');
-var visit = require('object-visit');
-
-/**
- * Map `visit` over an array of objects.
- *
- * @param {Object} `collection` The context in which to invoke `method`
- * @param {String} `method` Name of the method to call on `collection`
- * @param {Object} `arr` Array of objects.
- */
-
-module.exports = function mapVisit(collection, method, val) {
- if (isObject(val)) {
- return visit.apply(null, arguments);
- }
-
- if (!Array.isArray(val)) {
- throw new TypeError('expected an array: ' + util.inspect(val));
- }
-
- var args = [].slice.call(arguments, 3);
-
- for (var i = 0; i < val.length; i++) {
- var ele = val[i];
- if (isObject(ele)) {
- visit.apply(null, [collection, method, ele].concat(args));
- } else {
- collection[method].apply(collection, [ele].concat(args));
- }
- }
-};
-
-function isObject(val) {
- return val && (typeof val === 'function' || (!Array.isArray(val) && typeof val === 'object'));
-}
diff --git a/node_modules/map-visit/package.json b/node_modules/map-visit/package.json
deleted file mode 100644
index e8d0f41..0000000
--- a/node_modules/map-visit/package.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "name": "map-visit",
- "description": "Map `visit` over an array of objects.",
- "version": "1.0.0",
- "homepage": "https://github.com/jonschlinkert/map-visit",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Brian Woodward (https://twitter.com/doowb)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)"
- ],
- "repository": "jonschlinkert/map-visit",
- "bugs": {
- "url": "https://github.com/jonschlinkert/map-visit/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "object-visit": "^1.0.0"
- },
- "devDependencies": {
- "clone-deep": "^0.2.4",
- "extend-shallow": "^2.0.1",
- "gulp-format-md": "^0.1.12",
- "lodash": "^4.17.4",
- "mocha": "^3.2.0"
- },
- "keywords": [
- "array",
- "arrays",
- "function",
- "helper",
- "invoke",
- "key",
- "map",
- "method",
- "object",
- "objects",
- "value",
- "visit",
- "visitor"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- },
- "related": {
- "list": [
- "collection-visit",
- "object-visit"
- ]
- },
- "reflinks": [
- "verb",
- "verb-generate-readme"
- ]
- }
-}
diff --git a/node_modules/micromatch/CHANGELOG.md b/node_modules/micromatch/CHANGELOG.md
deleted file mode 100644
index 9d8e5ed..0000000
--- a/node_modules/micromatch/CHANGELOG.md
+++ /dev/null
@@ -1,37 +0,0 @@
-## History
-
-### key
-
-Changelog entries are classified using the following labels _(from [keep-a-changelog][]_):
-
-- `added`: for new features
-- `changed`: for changes in existing functionality
-- `deprecated`: for once-stable features removed in upcoming releases
-- `removed`: for deprecated features removed in this release
-- `fixed`: for any bug fixes
-- `bumped`: updated dependencies, only minor or higher will be listed.
-
-### [3.0.0] - 2017-04-11
-
-TODO. There should be no breaking changes. Please report any regressions. I will [reformat these release notes](https://github.com/micromatch/micromatch/pull/76) and add them to the changelog as soon as I have a chance.
-
-### [1.0.1] - 2016-12-12
-
-**Added**
-
-- Support for windows path edge cases where backslashes are used in brackets or other unusual combinations.
-
-### [1.0.0] - 2016-12-12
-
-Stable release.
-
-### [0.1.0] - 2016-10-08
-
-First release.
-
-
-[Unreleased]: https://github.com/jonschlinkert/micromatch/compare/0.1.0...HEAD
-[0.2.0]: https://github.com/jonschlinkert/micromatch/compare/0.1.0...0.2.0
-
-[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog
-
diff --git a/node_modules/micromatch/LICENSE b/node_modules/micromatch/LICENSE
deleted file mode 100755
index d32ab44..0000000
--- a/node_modules/micromatch/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2018, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/micromatch/README.md b/node_modules/micromatch/README.md
deleted file mode 100644
index 5dfa149..0000000
--- a/node_modules/micromatch/README.md
+++ /dev/null
@@ -1,1150 +0,0 @@
-# micromatch [](https://www.npmjs.com/package/micromatch) [](https://npmjs.org/package/micromatch) [](https://npmjs.org/package/micromatch) [](https://travis-ci.org/micromatch/micromatch) [](https://ci.appveyor.com/project/micromatch/micromatch)
-
-> Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Table of Contents
-
-
-Details
-
-- [Install](#install)
-- [Quickstart](#quickstart)
-- [Why use micromatch?](#why-use-micromatch)
- * [Matching features](#matching-features)
-- [Switching to micromatch](#switching-to-micromatch)
- * [From minimatch](#from-minimatch)
- * [From multimatch](#from-multimatch)
-- [API](#api)
-- [Options](#options)
- * [options.basename](#optionsbasename)
- * [options.bash](#optionsbash)
- * [options.cache](#optionscache)
- * [options.dot](#optionsdot)
- * [options.failglob](#optionsfailglob)
- * [options.ignore](#optionsignore)
- * [options.matchBase](#optionsmatchbase)
- * [options.nobrace](#optionsnobrace)
- * [options.nocase](#optionsnocase)
- * [options.nodupes](#optionsnodupes)
- * [options.noext](#optionsnoext)
- * [options.nonegate](#optionsnonegate)
- * [options.noglobstar](#optionsnoglobstar)
- * [options.nonull](#optionsnonull)
- * [options.nullglob](#optionsnullglob)
- * [options.snapdragon](#optionssnapdragon)
- * [options.sourcemap](#optionssourcemap)
- * [options.unescape](#optionsunescape)
- * [options.unixify](#optionsunixify)
-- [Extended globbing](#extended-globbing)
- * [extglobs](#extglobs)
- * [braces](#braces)
- * [regex character classes](#regex-character-classes)
- * [regex groups](#regex-groups)
- * [POSIX bracket expressions](#posix-bracket-expressions)
-- [Notes](#notes)
- * [Bash 4.3 parity](#bash-43-parity)
- * [Backslashes](#backslashes)
-- [Contributing](#contributing)
-- [Benchmarks](#benchmarks)
- * [Running benchmarks](#running-benchmarks)
- * [Latest results](#latest-results)
-- [About](#about)
-
-
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save micromatch
-```
-
-## Quickstart
-
-```js
-var mm = require('micromatch');
-mm(list, patterns[, options]);
-```
-
-The [main export](#micromatch) takes a list of strings and one or more glob patterns:
-
-```js
-console.log(mm(['foo', 'bar', 'qux'], ['f*', 'b*']));
-//=> ['foo', 'bar']
-```
-
-Use [.isMatch()](#ismatch) to get true/false:
-
-```js
-console.log(mm.isMatch('foo', 'f*'));
-//=> true
-```
-
-[Switching](#switching-to-micromatch) from minimatch and multimatch is easy!
-
-## Why use micromatch?
-
-> micromatch is a [drop-in replacement](#switching-to-micromatch) for minimatch and multimatch
-
-* Supports all of the same matching features as [minimatch](https://github.com/isaacs/minimatch) and [multimatch](https://github.com/sindresorhus/multimatch)
-* Micromatch uses [snapdragon](https://github.com/jonschlinkert/snapdragon) for parsing and compiling globs, which provides granular control over the entire conversion process in a way that is easy to understand, reason about, and maintain.
-* More consistently accurate matching [than minimatch](https://github.com/yarnpkg/yarn/pull/3339), with more than 36,000 [test assertions](./test) to prove it.
-* More complete support for the Bash 4.3 specification than minimatch and multimatch. In fact, micromatch passes _all of the spec tests_ from bash, including some that bash still fails.
-* [Faster matching](#benchmarks), from a combination of optimized glob patterns, faster algorithms, and regex caching.
-* [Micromatch is safer](https://github.com/micromatch/braces#braces-is-safe), and is not subject to DoS with brace patterns, like minimatch and multimatch.
-* More reliable windows support than minimatch and multimatch.
-
-### Matching features
-
-* Support for multiple glob patterns (no need for wrappers like multimatch)
-* Wildcards (`**`, `*.js`)
-* Negation (`'!a/*.js'`, `'*!(b).js']`)
-* [extglobs](https://github.com/micromatch/extglob) (`+(x|y)`, `!(a|b)`)
-* [POSIX character classes](https://github.com/micromatch/expand-brackets) (`[[:alpha:][:digit:]]`)
-* [brace expansion](https://github.com/micromatch/braces) (`foo/{1..5}.md`, `bar/{a,b,c}.js`)
-* regex character classes (`foo-[1-5].js`)
-* regex logical "or" (`foo/(abc|xyz).js`)
-
-You can mix and match these features to create whatever patterns you need!
-
-## Switching to micromatch
-
-There is one notable difference between micromatch and minimatch in regards to how backslashes are handled. See [the notes about backslashes](#backslashes) for more information.
-
-### From minimatch
-
-Use [mm.isMatch()](#ismatch) instead of `minimatch()`:
-
-```js
-mm.isMatch('foo', 'b*');
-//=> false
-```
-
-Use [mm.match()](#match) instead of `minimatch.match()`:
-
-```js
-mm.match(['foo', 'bar'], 'b*');
-//=> 'bar'
-```
-
-### From multimatch
-
-Same signature:
-
-```js
-mm(['foo', 'bar', 'baz'], ['f*', '*z']);
-//=> ['foo', 'baz']
-```
-
-## API
-
-### [micromatch](index.js#L41)
-
-The main function takes a list of strings and one or more glob patterns to use for matching.
-
-**Params**
-
-* `list` **{Array}**: A list of strings to match
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Array}**: Returns an array of matches
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm(list, patterns[, options]);
-
-console.log(mm(['a.js', 'a.txt'], ['*.js']));
-//=> [ 'a.js' ]
-```
-
-### [.match](index.js#L93)
-
-Similar to the main function, but `pattern` must be a string.
-
-**Params**
-
-* `list` **{Array}**: Array of strings to match
-* `pattern` **{String}**: Glob pattern to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Array}**: Returns an array of matches
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.match(list, pattern[, options]);
-
-console.log(mm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a'));
-//=> ['a.a', 'a.aa']
-```
-
-### [.isMatch](index.js#L154)
-
-Returns true if the specified `string` matches the given glob `pattern`.
-
-**Params**
-
-* `string` **{String}**: String to match
-* `pattern` **{String}**: Glob pattern to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if the string matches the glob pattern.
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.isMatch(string, pattern[, options]);
-
-console.log(mm.isMatch('a.a', '*.a'));
-//=> true
-console.log(mm.isMatch('a.b', '*.a'));
-//=> false
-```
-
-### [.some](index.js#L192)
-
-Returns true if some of the strings in the given `list` match any of the given glob `patterns`.
-
-**Params**
-
-* `list` **{String|Array}**: The string or array of strings to test. Returns as soon as the first match is found.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.some(list, patterns[, options]);
-
-console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
-// true
-console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));
-// false
-```
-
-### [.every](index.js#L228)
-
-Returns true if every string in the given `list` matches any of the given glob `patterns`.
-
-**Params**
-
-* `list` **{String|Array}**: The string or array of strings to test.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.every(list, patterns[, options]);
-
-console.log(mm.every('foo.js', ['foo.js']));
-// true
-console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));
-// true
-console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
-// false
-console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));
-// false
-```
-
-### [.any](index.js#L260)
-
-Returns true if **any** of the given glob `patterns` match the specified `string`.
-
-**Params**
-
-* `str` **{String|Array}**: The string to test.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.any(string, patterns[, options]);
-
-console.log(mm.any('a.a', ['b.*', '*.a']));
-//=> true
-console.log(mm.any('a.a', 'b.*'));
-//=> false
-```
-
-### [.all](index.js#L308)
-
-Returns true if **all** of the given `patterns` match the specified string.
-
-**Params**
-
-* `str` **{String|Array}**: The string to test.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.all(string, patterns[, options]);
-
-console.log(mm.all('foo.js', ['foo.js']));
-// true
-
-console.log(mm.all('foo.js', ['*.js', '!foo.js']));
-// false
-
-console.log(mm.all('foo.js', ['*.js', 'foo.js']));
-// true
-
-console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));
-// true
-```
-
-### [.not](index.js#L340)
-
-Returns a list of strings that _**do not match any**_ of the given `patterns`.
-
-**Params**
-
-* `list` **{Array}**: Array of strings to match.
-* `patterns` **{String|Array}**: One or more glob pattern to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Array}**: Returns an array of strings that **do not match** the given patterns.
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.not(list, patterns[, options]);
-
-console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));
-//=> ['b.b', 'c.c']
-```
-
-### [.contains](index.js#L376)
-
-Returns true if the given `string` contains the given pattern. Similar to [.isMatch](#isMatch) but the pattern can match any part of the string.
-
-**Params**
-
-* `str` **{String}**: The string to match.
-* `patterns` **{String|Array}**: Glob pattern to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if the patter matches any part of `str`.
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.contains(string, pattern[, options]);
-
-console.log(mm.contains('aa/bb/cc', '*b'));
-//=> true
-console.log(mm.contains('aa/bb/cc', '*d'));
-//=> false
-```
-
-### [.matchKeys](index.js#L432)
-
-Filter the keys of the given object with the given `glob` pattern and `options`. Does not attempt to match nested keys. If you need this feature, use [glob-object](https://github.com/jonschlinkert/glob-object) instead.
-
-**Params**
-
-* `object` **{Object}**: The object with keys to filter.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Object}**: Returns an object with only keys that match the given patterns.
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.matchKeys(object, patterns[, options]);
-
-var obj = { aa: 'a', ab: 'b', ac: 'c' };
-console.log(mm.matchKeys(obj, '*b'));
-//=> { ab: 'b' }
-```
-
-### [.matcher](index.js#L461)
-
-Returns a memoized matcher function from the given glob `pattern` and `options`. The returned function takes a string to match as its only argument and returns true if the string is a match.
-
-**Params**
-
-* `pattern` **{String}**: Glob pattern
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed.
-* `returns` **{Function}**: Returns a matcher function.
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.matcher(pattern[, options]);
-
-var isMatch = mm.matcher('*.!(*a)');
-console.log(isMatch('a.a'));
-//=> false
-console.log(isMatch('a.b'));
-//=> true
-```
-
-### [.capture](index.js#L536)
-
-Returns an array of matches captured by `pattern` in `string, or`null` if the pattern did not match.
-
-**Params**
-
-* `pattern` **{String}**: Glob pattern to use for matching.
-* `string` **{String}**: String to match
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns an array of captures if the string matches the glob pattern, otherwise `null`.
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.capture(pattern, string[, options]);
-
-console.log(mm.capture('test/*.js', 'test/foo.js'));
-//=> ['foo']
-console.log(mm.capture('test/*.js', 'foo/bar.css'));
-//=> null
-```
-
-### [.makeRe](index.js#L571)
-
-Create a regular expression from the given glob `pattern`.
-
-**Params**
-
-* `pattern` **{String}**: A glob pattern to convert to regex.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed.
-* `returns` **{RegExp}**: Returns a regex created from the given pattern.
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.makeRe(pattern[, options]);
-
-console.log(mm.makeRe('*.js'));
-//=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/
-```
-
-### [.braces](index.js#L618)
-
-Expand the given brace `pattern`.
-
-**Params**
-
-* `pattern` **{String}**: String with brace pattern to expand.
-* `options` **{Object}**: Any [options](#options) to change how expansion is performed. See the [braces](https://github.com/micromatch/braces) library for all available options.
-* `returns` **{Array}**
-
-**Example**
-
-```js
-var mm = require('micromatch');
-console.log(mm.braces('foo/{a,b}/bar'));
-//=> ['foo/(a|b)/bar']
-
-console.log(mm.braces('foo/{a,b}/bar', {expand: true}));
-//=> ['foo/(a|b)/bar']
-```
-
-### [.create](index.js#L685)
-
-Parses the given glob `pattern` and returns an array of abstract syntax trees (ASTs), with the compiled `output` and optional source `map` on each AST.
-
-**Params**
-
-* `pattern` **{String}**: Glob pattern to parse and compile.
-* `options` **{Object}**: Any [options](#options) to change how parsing and compiling is performed.
-* `returns` **{Object}**: Returns an object with the parsed AST, compiled string and optional source map.
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.create(pattern[, options]);
-
-console.log(mm.create('abc/*.js'));
-// [{ options: { source: 'string', sourcemap: true },
-// state: {},
-// compilers:
-// { ... },
-// output: '(\\.[\\\\\\/])?abc\\/(?!\\.)(?=.)[^\\/]*?\\.js',
-// ast:
-// { type: 'root',
-// errors: [],
-// nodes:
-// [ ... ],
-// dot: false,
-// input: 'abc/*.js' },
-// parsingErrors: [],
-// map:
-// { version: 3,
-// sources: [ 'string' ],
-// names: [],
-// mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE',
-// sourcesContent: [ 'abc/*.js' ] },
-// position: { line: 1, column: 28 },
-// content: {},
-// files: {},
-// idx: 6 }]
-```
-
-### [.parse](index.js#L732)
-
-Parse the given `str` with the given `options`.
-
-**Params**
-
-* `str` **{String}**
-* `options` **{Object}**
-* `returns` **{Object}**: Returns an AST
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.parse(pattern[, options]);
-
-var ast = mm.parse('a/{b,c}/d');
-console.log(ast);
-// { type: 'root',
-// errors: [],
-// input: 'a/{b,c}/d',
-// nodes:
-// [ { type: 'bos', val: '' },
-// { type: 'text', val: 'a/' },
-// { type: 'brace',
-// nodes:
-// [ { type: 'brace.open', val: '{' },
-// { type: 'text', val: 'b,c' },
-// { type: 'brace.close', val: '}' } ] },
-// { type: 'text', val: '/d' },
-// { type: 'eos', val: '' } ] }
-```
-
-### [.compile](index.js#L780)
-
-Compile the given `ast` or string with the given `options`.
-
-**Params**
-
-* `ast` **{Object|String}**
-* `options` **{Object}**
-* `returns` **{Object}**: Returns an object that has an `output` property with the compiled string.
-
-**Example**
-
-```js
-var mm = require('micromatch');
-mm.compile(ast[, options]);
-
-var ast = mm.parse('a/{b,c}/d');
-console.log(mm.compile(ast));
-// { options: { source: 'string' },
-// state: {},
-// compilers:
-// { eos: [Function],
-// noop: [Function],
-// bos: [Function],
-// brace: [Function],
-// 'brace.open': [Function],
-// text: [Function],
-// 'brace.close': [Function] },
-// output: [ 'a/(b|c)/d' ],
-// ast:
-// { ... },
-// parsingErrors: [] }
-```
-
-### [.clearCache](index.js#L801)
-
-Clear the regex cache.
-
-**Example**
-
-```js
-mm.clearCache();
-```
-
-## Options
-
-* [basename](#optionsbasename)
-* [bash](#optionsbash)
-* [cache](#optionscache)
-* [dot](#optionsdot)
-* [failglob](#optionsfailglob)
-* [ignore](#optionsignore)
-* [matchBase](#optionsmatchBase)
-* [nobrace](#optionsnobrace)
-* [nocase](#optionsnocase)
-* [nodupes](#optionsnodupes)
-* [noext](#optionsnoext)
-* [noglobstar](#optionsnoglobstar)
-* [nonull](#optionsnonull)
-* [nullglob](#optionsnullglob)
-* [snapdragon](#optionssnapdragon)
-* [sourcemap](#optionssourcemap)
-* [unescape](#optionsunescape)
-* [unixify](#optionsunixify)
-
-### options.basename
-
-Allow glob patterns without slashes to match a file path based on its basename. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `matchBase`.
-
-**Type**: `Boolean`
-
-**Default**: `false`
-
-**Example**
-
-```js
-mm(['a/b.js', 'a/c.md'], '*.js');
-//=> []
-
-mm(['a/b.js', 'a/c.md'], '*.js', {matchBase: true});
-//=> ['a/b.js']
-```
-
-### options.bash
-
-Enabled by default, this option enforces bash-like behavior with stars immediately following a bracket expression. Bash bracket expressions are similar to regex character classes, but unlike regex, a star following a bracket expression **does not repeat the bracketed characters**. Instead, the star is treated the same as an other star.
-
-**Type**: `Boolean`
-
-**Default**: `true`
-
-**Example**
-
-```js
-var files = ['abc', 'ajz'];
-console.log(mm(files, '[a-c]*'));
-//=> ['abc', 'ajz']
-
-console.log(mm(files, '[a-c]*', {bash: false}));
-```
-
-### options.cache
-
-Disable regex and function memoization.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-### options.dot
-
-Match dotfiles. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `dot`.
-
-**Type**: `Boolean`
-
-**Default**: `false`
-
-### options.failglob
-
-Similar to the `--failglob` behavior in Bash, throws an error when no matches are found.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-### options.ignore
-
-String or array of glob patterns to match files to ignore.
-
-**Type**: `String|Array`
-
-**Default**: `undefined`
-
-### options.matchBase
-
-Alias for [options.basename](#options-basename).
-
-### options.nobrace
-
-Disable expansion of brace patterns. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `nobrace`.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-See [braces](https://github.com/micromatch/braces) for more information about extended brace expansion.
-
-### options.nocase
-
-Use a case-insensitive regex for matching files. Same behavior as [minimatch](https://github.com/isaacs/minimatch).
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-### options.nodupes
-
-Remove duplicate elements from the result array.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-**Example**
-
-Example of using the `unescape` and `nodupes` options together:
-
-```js
-mm.match(['a/b/c', 'a/b/c'], 'a/b/c');
-//=> ['a/b/c', 'a/b/c']
-
-mm.match(['a/b/c', 'a/b/c'], 'a/b/c', {nodupes: true});
-//=> ['abc']
-```
-
-### options.noext
-
-Disable extglob support, so that extglobs are regarded as literal characters.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-**Examples**
-
-```js
-mm(['a/z', 'a/b', 'a/!(z)'], 'a/!(z)');
-//=> ['a/b', 'a/!(z)']
-
-mm(['a/z', 'a/b', 'a/!(z)'], 'a/!(z)', {noext: true});
-//=> ['a/!(z)'] (matches only as literal characters)
-```
-
-### options.nonegate
-
-Disallow negation (`!`) patterns, and treat leading `!` as a literal character to match.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-### options.noglobstar
-
-Disable matching with globstars (`**`).
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-```js
-mm(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**');
-//=> ['a/b', 'a/b/c', 'a/b/c/d']
-
-mm(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**', {noglobstar: true});
-//=> ['a/b']
-```
-
-### options.nonull
-
-Alias for [options.nullglob](#options-nullglob).
-
-### options.nullglob
-
-If `true`, when no matches are found the actual (arrayified) glob pattern is returned instead of an empty array. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `nonull`.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-### options.snapdragon
-
-Pass your own instance of [snapdragon](https://github.com/jonschlinkert/snapdragon), to customize parsers or compilers.
-
-**Type**: `Object`
-
-**Default**: `undefined`
-
-### options.sourcemap
-
-Generate a source map by enabling the `sourcemap` option with the `.parse`, `.compile`, or `.create` methods.
-
-_(Note that sourcemaps are currently not enabled for brace patterns)_
-
-**Examples**
-
-``` js
-var mm = require('micromatch');
-var pattern = '*(*(of*(a)x)z)';
-
-var res = mm.create('abc/*.js', {sourcemap: true});
-console.log(res.map);
-// { version: 3,
-// sources: [ 'string' ],
-// names: [],
-// mappings: 'AAAA,GAAG,EAAC,iBAAC,EAAC,EAAE',
-// sourcesContent: [ 'abc/*.js' ] }
-
-var ast = mm.parse('abc/**/*.js');
-var res = mm.compile(ast, {sourcemap: true});
-console.log(res.map);
-// { version: 3,
-// sources: [ 'string' ],
-// names: [],
-// mappings: 'AAAA,GAAG,EAAC,2BAAE,EAAC,iBAAC,EAAC,EAAE',
-// sourcesContent: [ 'abc/**/*.js' ] }
-
-var ast = mm.parse(pattern);
-var res = mm.compile(ast, {sourcemap: true});
-console.log(res.map);
-// { version: 3,
-// sources: [ 'string' ],
-// names: [],
-// mappings: 'AAAA,CAAE,CAAE,EAAE,CAAE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC',
-// sourcesContent: [ '*(*(of*(a)x)z)' ] }
-```
-
-### options.unescape
-
-Remove backslashes from returned matches.
-
-**Type**: `Boolean`
-
-**Default**: `undefined`
-
-**Example**
-
-In this example we want to match a literal `*`:
-
-```js
-mm.match(['abc', 'a\\*c'], 'a\\*c');
-//=> ['a\\*c']
-
-mm.match(['abc', 'a\\*c'], 'a\\*c', {unescape: true});
-//=> ['a*c']
-```
-
-### options.unixify
-
-Convert path separators on returned files to posix/unix-style forward slashes.
-
-**Type**: `Boolean`
-
-**Default**: `true` on windows, `false` everywhere else
-
-**Example**
-
-```js
-mm.match(['a\\b\\c'], 'a/**');
-//=> ['a/b/c']
-
-mm.match(['a\\b\\c'], {unixify: false});
-//=> ['a\\b\\c']
-```
-
-## Extended globbing
-
-Micromatch also supports extended globbing features.
-
-### extglobs
-
-Extended globbing, as described by the bash man page:
-
-| **pattern** | **regex equivalent** | **description** |
-| --- | --- | --- |
-| `?(pattern)` | `(pattern)?` | Matches zero or one occurrence of the given patterns |
-| `*(pattern)` | `(pattern)*` | Matches zero or more occurrences of the given patterns |
-| `+(pattern)` | `(pattern)+` | Matches one or more occurrences of the given patterns |
-| `@(pattern)` | `(pattern)` * | Matches one of the given patterns |
-| `!(pattern)` | N/A (equivalent regex is much more complicated) | Matches anything except one of the given patterns |
-
-* Note that `@` isn't a RegEx character.
-
-Powered by [extglob](https://github.com/micromatch/extglob). Visit that library for the full range of options or to report extglob related issues.
-
-### braces
-
-Brace patterns can be used to match specific ranges or sets of characters. For example, the pattern `*/{1..3}/*` would match any of following strings:
-
-```
-foo/1/bar
-foo/2/bar
-foo/3/bar
-baz/1/qux
-baz/2/qux
-baz/3/qux
-```
-
-Visit [braces](https://github.com/micromatch/braces) to see the full range of features and options related to brace expansion, or to create brace matching or expansion related issues.
-
-### regex character classes
-
-Given the list: `['a.js', 'b.js', 'c.js', 'd.js', 'E.js']`:
-
-* `[ac].js`: matches both `a` and `c`, returning `['a.js', 'c.js']`
-* `[b-d].js`: matches from `b` to `d`, returning `['b.js', 'c.js', 'd.js']`
-* `[b-d].js`: matches from `b` to `d`, returning `['b.js', 'c.js', 'd.js']`
-* `a/[A-Z].js`: matches and uppercase letter, returning `['a/E.md']`
-
-Learn about [regex character classes](http://www.regular-expressions.info/charclass.html).
-
-### regex groups
-
-Given `['a.js', 'b.js', 'c.js', 'd.js', 'E.js']`:
-
-* `(a|c).js`: would match either `a` or `c`, returning `['a.js', 'c.js']`
-* `(b|d).js`: would match either `b` or `d`, returning `['b.js', 'd.js']`
-* `(b|[A-Z]).js`: would match either `b` or an uppercase letter, returning `['b.js', 'E.js']`
-
-As with regex, parens can be nested, so patterns like `((a|b)|c)/b` will work. Although brace expansion might be friendlier to use, depending on preference.
-
-### POSIX bracket expressions
-
-POSIX brackets are intended to be more user-friendly than regex character classes. This of course is in the eye of the beholder.
-
-**Example**
-
-```js
-mm.isMatch('a1', '[[:alpha:][:digit:]]');
-//=> true
-
-mm.isMatch('a1', '[[:alpha:][:alpha:]]');
-//=> false
-```
-
-See [expand-brackets](https://github.com/jonschlinkert/expand-brackets) for more information about bracket expressions.
-
-***
-
-## Notes
-
-### Bash 4.3 parity
-
-Whenever possible matching behavior is based on behavior Bash 4.3, which is mostly consistent with minimatch.
-
-However, it's suprising how many edge cases and rabbit holes there are with glob matching, and since there is no real glob specification, and micromatch is more accurate than both Bash and minimatch, there are cases where best-guesses were made for behavior. In a few cases where Bash had no answers, we used wildmatch (used by git) as a fallback.
-
-### Backslashes
-
-There is an important, notable difference between minimatch and micromatch _in regards to how backslashes are handled_ in glob patterns.
-
-* Micromatch exclusively and explicitly reserves backslashes for escaping characters in a glob pattern, even on windows. This is consistent with bash behavior.
-* Minimatch converts all backslashes to forward slashes, which means you can't use backslashes to escape any characters in your glob patterns.
-
-We made this decision for micromatch for a couple of reasons:
-
-* consistency with bash conventions.
-* glob patterns are not filepaths. They are a type of [regular language](https://en.wikipedia.org/wiki/Regular_language) that is converted to a JavaScript regular expression. Thus, when forward slashes are defined in a glob pattern, the resulting regular expression will match windows or POSIX path separators just fine.
-
-**A note about joining paths to globs**
-
-Note that when you pass something like `path.join('foo', '*')` to micromatch, you are creating a filepath and expecting it to still work as a glob pattern. This causes problems on windows, since the `path.sep` is `\\`.
-
-In other words, since `\\` is reserved as an escape character in globs, on windows `path.join('foo', '*')` would result in `foo\\*`, which tells micromatch to match `*` as a literal character. This is the same behavior as bash.
-
-## Contributing
-
-All contributions are welcome! Please read [the contributing guide](.github/contributing.md) to get started.
-
-**Bug reports**
-
-Please create an issue if you encounter a bug or matching behavior that doesn't seem correct. If you find a matching-related issue, please:
-
-* [research existing issues first](../../issues) (open and closed)
-* visit the [GNU Bash documentation](https://www.gnu.org/software/bash/manual/) to see how Bash deals with the pattern
-* visit the [minimatch](https://github.com/isaacs/minimatch) documentation to cross-check expected behavior in node.js
-* if all else fails, since there is no real specification for globs we will probably need to discuss expected behavior and decide how to resolve it. which means any detail you can provide to help with this discussion would be greatly appreciated.
-
-**Platform issues**
-
-It's important to us that micromatch work consistently on all platforms. If you encounter any platform-specific matching or path related issues, please let us know (pull requests are also greatly appreciated).
-
-## Benchmarks
-
-### Running benchmarks
-
-Install dev dependencies:
-
-```bash
-npm i -d && npm run benchmark
-```
-
-### Latest results
-
-As of February 18, 2018 (longer bars are better):
-
-```sh
-# braces-globstar-large-list (485691 bytes)
- micromatch ██████████████████████████████████████████████████ (517 ops/sec ±0.49%)
- minimatch █ (18.92 ops/sec ±0.54%)
- multimatch █ (18.94 ops/sec ±0.62%)
-
- micromatch is faster by an avg. of 2,733%
-
-# braces-multiple (3362 bytes)
- micromatch ██████████████████████████████████████████████████ (33,625 ops/sec ±0.45%)
- minimatch (2.92 ops/sec ±3.26%)
- multimatch (2.90 ops/sec ±2.76%)
-
- micromatch is faster by an avg. of 1,156,935%
-
-# braces-range (727 bytes)
- micromatch █████████████████████████████████████████████████ (155,220 ops/sec ±0.56%)
- minimatch ██████ (20,186 ops/sec ±1.27%)
- multimatch ██████ (19,809 ops/sec ±0.60%)
-
- micromatch is faster by an avg. of 776%
-
-# braces-set (2858 bytes)
- micromatch █████████████████████████████████████████████████ (24,354 ops/sec ±0.92%)
- minimatch █████ (2,566 ops/sec ±0.56%)
- multimatch ████ (2,431 ops/sec ±1.25%)
-
- micromatch is faster by an avg. of 975%
-
-# globstar-large-list (485686 bytes)
- micromatch █████████████████████████████████████████████████ (504 ops/sec ±0.45%)
- minimatch ███ (33.36 ops/sec ±1.08%)
- multimatch ███ (33.19 ops/sec ±1.35%)
-
- micromatch is faster by an avg. of 1,514%
-
-# globstar-long-list (90647 bytes)
- micromatch ██████████████████████████████████████████████████ (2,694 ops/sec ±1.08%)
- minimatch ████████████████ (870 ops/sec ±1.09%)
- multimatch ████████████████ (862 ops/sec ±0.84%)
-
- micromatch is faster by an avg. of 311%
-
-# globstar-short-list (182 bytes)
- micromatch ██████████████████████████████████████████████████ (328,921 ops/sec ±1.06%)
- minimatch █████████ (64,808 ops/sec ±1.42%)
- multimatch ████████ (57,991 ops/sec ±2.11%)
-
- micromatch is faster by an avg. of 536%
-
-# no-glob (701 bytes)
- micromatch █████████████████████████████████████████████████ (415,935 ops/sec ±0.36%)
- minimatch ███████████ (92,730 ops/sec ±1.44%)
- multimatch █████████ (81,958 ops/sec ±2.13%)
-
- micromatch is faster by an avg. of 476%
-
-# star-basename-long (12339 bytes)
- micromatch █████████████████████████████████████████████████ (7,963 ops/sec ±0.36%)
- minimatch ███████████████████████████████ (5,072 ops/sec ±0.83%)
- multimatch ███████████████████████████████ (5,028 ops/sec ±0.40%)
-
- micromatch is faster by an avg. of 158%
-
-# star-basename-short (349 bytes)
- micromatch ██████████████████████████████████████████████████ (269,552 ops/sec ±0.70%)
- minimatch ██████████████████████ (122,457 ops/sec ±1.39%)
- multimatch ████████████████████ (110,788 ops/sec ±1.99%)
-
- micromatch is faster by an avg. of 231%
-
-# star-folder-long (19207 bytes)
- micromatch █████████████████████████████████████████████████ (3,806 ops/sec ±0.38%)
- minimatch ████████████████████████████ (2,204 ops/sec ±0.32%)
- multimatch ██████████████████████████ (2,020 ops/sec ±1.07%)
-
- micromatch is faster by an avg. of 180%
-
-# star-folder-short (551 bytes)
- micromatch ██████████████████████████████████████████████████ (249,077 ops/sec ±0.40%)
- minimatch ███████████ (59,431 ops/sec ±1.67%)
- multimatch ███████████ (55,569 ops/sec ±1.43%)
-
- micromatch is faster by an avg. of 433%
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards.
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [braces](https://www.npmjs.com/package/braces): Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support… [more](https://github.com/micromatch/braces) | [homepage](https://github.com/micromatch/braces "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.")
-* [expand-brackets](https://www.npmjs.com/package/expand-brackets): Expand POSIX bracket expressions (character classes) in glob patterns. | [homepage](https://github.com/jonschlinkert/expand-brackets "Expand POSIX bracket expressions (character classes) in glob patterns.")
-* [extglob](https://www.npmjs.com/package/extglob): Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob… [more](https://github.com/micromatch/extglob) | [homepage](https://github.com/micromatch/extglob "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.")
-* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`")
-* [nanomatch](https://www.npmjs.com/package/nanomatch): Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash… [more](https://github.com/micromatch/nanomatch) | [homepage](https://github.com/micromatch/nanomatch "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 457 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 12 | [es128](https://github.com/es128) |
-| 8 | [doowb](https://github.com/doowb) |
-| 3 | [paulmillr](https://github.com/paulmillr) |
-| 2 | [TrySound](https://github.com/TrySound) |
-| 2 | [MartinKolarik](https://github.com/MartinKolarik) |
-| 2 | [charlike-old](https://github.com/charlike-old) |
-| 1 | [amilajack](https://github.com/amilajack) |
-| 1 | [mrmlnc](https://github.com/mrmlnc) |
-| 1 | [devongovett](https://github.com/devongovett) |
-| 1 | [DianeLooney](https://github.com/DianeLooney) |
-| 1 | [UltCombo](https://github.com/UltCombo) |
-| 1 | [tomByrer](https://github.com/tomByrer) |
-| 1 | [fidian](https://github.com/fidian) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert)
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on February 18, 2018._
\ No newline at end of file
diff --git a/node_modules/micromatch/index.js b/node_modules/micromatch/index.js
deleted file mode 100644
index fe02f2c..0000000
--- a/node_modules/micromatch/index.js
+++ /dev/null
@@ -1,877 +0,0 @@
-'use strict';
-
-/**
- * Module dependencies
- */
-
-var util = require('util');
-var braces = require('braces');
-var toRegex = require('to-regex');
-var extend = require('extend-shallow');
-
-/**
- * Local dependencies
- */
-
-var compilers = require('./lib/compilers');
-var parsers = require('./lib/parsers');
-var cache = require('./lib/cache');
-var utils = require('./lib/utils');
-var MAX_LENGTH = 1024 * 64;
-
-/**
- * The main function takes a list of strings and one or more
- * glob patterns to use for matching.
- *
- * ```js
- * var mm = require('micromatch');
- * mm(list, patterns[, options]);
- *
- * console.log(mm(['a.js', 'a.txt'], ['*.js']));
- * //=> [ 'a.js' ]
- * ```
- * @param {Array} `list` A list of strings to match
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Array} Returns an array of matches
- * @summary false
- * @api public
- */
-
-function micromatch(list, patterns, options) {
- patterns = utils.arrayify(patterns);
- list = utils.arrayify(list);
-
- var len = patterns.length;
- if (list.length === 0 || len === 0) {
- return [];
- }
-
- if (len === 1) {
- return micromatch.match(list, patterns[0], options);
- }
-
- var omit = [];
- var keep = [];
- var idx = -1;
-
- while (++idx < len) {
- var pattern = patterns[idx];
-
- if (typeof pattern === 'string' && pattern.charCodeAt(0) === 33 /* ! */) {
- omit.push.apply(omit, micromatch.match(list, pattern.slice(1), options));
- } else {
- keep.push.apply(keep, micromatch.match(list, pattern, options));
- }
- }
-
- var matches = utils.diff(keep, omit);
- if (!options || options.nodupes !== false) {
- return utils.unique(matches);
- }
-
- return matches;
-}
-
-/**
- * Similar to the main function, but `pattern` must be a string.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.match(list, pattern[, options]);
- *
- * console.log(mm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a'));
- * //=> ['a.a', 'a.aa']
- * ```
- * @param {Array} `list` Array of strings to match
- * @param {String} `pattern` Glob pattern to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Array} Returns an array of matches
- * @api public
- */
-
-micromatch.match = function(list, pattern, options) {
- if (Array.isArray(pattern)) {
- throw new TypeError('expected pattern to be a string');
- }
-
- var unixify = utils.unixify(options);
- var isMatch = memoize('match', pattern, options, micromatch.matcher);
- var matches = [];
-
- list = utils.arrayify(list);
- var len = list.length;
- var idx = -1;
-
- while (++idx < len) {
- var ele = list[idx];
- if (ele === pattern || isMatch(ele)) {
- matches.push(utils.value(ele, unixify, options));
- }
- }
-
- // if no options were passed, uniquify results and return
- if (typeof options === 'undefined') {
- return utils.unique(matches);
- }
-
- if (matches.length === 0) {
- if (options.failglob === true) {
- throw new Error('no matches found for "' + pattern + '"');
- }
- if (options.nonull === true || options.nullglob === true) {
- return [options.unescape ? utils.unescape(pattern) : pattern];
- }
- }
-
- // if `opts.ignore` was defined, diff ignored list
- if (options.ignore) {
- matches = micromatch.not(matches, options.ignore, options);
- }
-
- return options.nodupes !== false ? utils.unique(matches) : matches;
-};
-
-/**
- * Returns true if the specified `string` matches the given glob `pattern`.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.isMatch(string, pattern[, options]);
- *
- * console.log(mm.isMatch('a.a', '*.a'));
- * //=> true
- * console.log(mm.isMatch('a.b', '*.a'));
- * //=> false
- * ```
- * @param {String} `string` String to match
- * @param {String} `pattern` Glob pattern to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if the string matches the glob pattern.
- * @api public
- */
-
-micromatch.isMatch = function(str, pattern, options) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string: "' + util.inspect(str) + '"');
- }
-
- if (isEmptyString(str) || isEmptyString(pattern)) {
- return false;
- }
-
- var equals = utils.equalsPattern(options);
- if (equals(str)) {
- return true;
- }
-
- var isMatch = memoize('isMatch', pattern, options, micromatch.matcher);
- return isMatch(str);
-};
-
-/**
- * Returns true if some of the strings in the given `list` match any of the
- * given glob `patterns`.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.some(list, patterns[, options]);
- *
- * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
- * // true
- * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));
- * // false
- * ```
- * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-micromatch.some = function(list, patterns, options) {
- if (typeof list === 'string') {
- list = [list];
- }
- for (var i = 0; i < list.length; i++) {
- if (micromatch(list[i], patterns, options).length === 1) {
- return true;
- }
- }
- return false;
-};
-
-/**
- * Returns true if every string in the given `list` matches
- * any of the given glob `patterns`.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.every(list, patterns[, options]);
- *
- * console.log(mm.every('foo.js', ['foo.js']));
- * // true
- * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));
- * // true
- * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
- * // false
- * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));
- * // false
- * ```
- * @param {String|Array} `list` The string or array of strings to test.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-micromatch.every = function(list, patterns, options) {
- if (typeof list === 'string') {
- list = [list];
- }
- for (var i = 0; i < list.length; i++) {
- if (micromatch(list[i], patterns, options).length !== 1) {
- return false;
- }
- }
- return true;
-};
-
-/**
- * Returns true if **any** of the given glob `patterns`
- * match the specified `string`.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.any(string, patterns[, options]);
- *
- * console.log(mm.any('a.a', ['b.*', '*.a']));
- * //=> true
- * console.log(mm.any('a.a', 'b.*'));
- * //=> false
- * ```
- * @param {String|Array} `str` The string to test.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-micromatch.any = function(str, patterns, options) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string: "' + util.inspect(str) + '"');
- }
-
- if (isEmptyString(str) || isEmptyString(patterns)) {
- return false;
- }
-
- if (typeof patterns === 'string') {
- patterns = [patterns];
- }
-
- for (var i = 0; i < patterns.length; i++) {
- if (micromatch.isMatch(str, patterns[i], options)) {
- return true;
- }
- }
- return false;
-};
-
-/**
- * Returns true if **all** of the given `patterns` match
- * the specified string.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.all(string, patterns[, options]);
- *
- * console.log(mm.all('foo.js', ['foo.js']));
- * // true
- *
- * console.log(mm.all('foo.js', ['*.js', '!foo.js']));
- * // false
- *
- * console.log(mm.all('foo.js', ['*.js', 'foo.js']));
- * // true
- *
- * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));
- * // true
- * ```
- * @param {String|Array} `str` The string to test.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-micromatch.all = function(str, patterns, options) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string: "' + util.inspect(str) + '"');
- }
- if (typeof patterns === 'string') {
- patterns = [patterns];
- }
- for (var i = 0; i < patterns.length; i++) {
- if (!micromatch.isMatch(str, patterns[i], options)) {
- return false;
- }
- }
- return true;
-};
-
-/**
- * Returns a list of strings that _**do not match any**_ of the given `patterns`.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.not(list, patterns[, options]);
- *
- * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));
- * //=> ['b.b', 'c.c']
- * ```
- * @param {Array} `list` Array of strings to match.
- * @param {String|Array} `patterns` One or more glob pattern to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Array} Returns an array of strings that **do not match** the given patterns.
- * @api public
- */
-
-micromatch.not = function(list, patterns, options) {
- var opts = extend({}, options);
- var ignore = opts.ignore;
- delete opts.ignore;
-
- var unixify = utils.unixify(opts);
- list = utils.arrayify(list).map(unixify);
-
- var matches = utils.diff(list, micromatch(list, patterns, opts));
- if (ignore) {
- matches = utils.diff(matches, micromatch(list, ignore));
- }
-
- return opts.nodupes !== false ? utils.unique(matches) : matches;
-};
-
-/**
- * Returns true if the given `string` contains the given pattern. Similar
- * to [.isMatch](#isMatch) but the pattern can match any part of the string.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.contains(string, pattern[, options]);
- *
- * console.log(mm.contains('aa/bb/cc', '*b'));
- * //=> true
- * console.log(mm.contains('aa/bb/cc', '*d'));
- * //=> false
- * ```
- * @param {String} `str` The string to match.
- * @param {String|Array} `patterns` Glob pattern to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if the patter matches any part of `str`.
- * @api public
- */
-
-micromatch.contains = function(str, patterns, options) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string: "' + util.inspect(str) + '"');
- }
-
- if (typeof patterns === 'string') {
- if (isEmptyString(str) || isEmptyString(patterns)) {
- return false;
- }
-
- var equals = utils.equalsPattern(patterns, options);
- if (equals(str)) {
- return true;
- }
- var contains = utils.containsPattern(patterns, options);
- if (contains(str)) {
- return true;
- }
- }
-
- var opts = extend({}, options, {contains: true});
- return micromatch.any(str, patterns, opts);
-};
-
-/**
- * Returns true if the given pattern and options should enable
- * the `matchBase` option.
- * @return {Boolean}
- * @api private
- */
-
-micromatch.matchBase = function(pattern, options) {
- if (pattern && pattern.indexOf('/') !== -1 || !options) return false;
- return options.basename === true || options.matchBase === true;
-};
-
-/**
- * Filter the keys of the given object with the given `glob` pattern
- * and `options`. Does not attempt to match nested keys. If you need this feature,
- * use [glob-object][] instead.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.matchKeys(object, patterns[, options]);
- *
- * var obj = { aa: 'a', ab: 'b', ac: 'c' };
- * console.log(mm.matchKeys(obj, '*b'));
- * //=> { ab: 'b' }
- * ```
- * @param {Object} `object` The object with keys to filter.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Object} Returns an object with only keys that match the given patterns.
- * @api public
- */
-
-micromatch.matchKeys = function(obj, patterns, options) {
- if (!utils.isObject(obj)) {
- throw new TypeError('expected the first argument to be an object');
- }
- var keys = micromatch(Object.keys(obj), patterns, options);
- return utils.pick(obj, keys);
-};
-
-/**
- * Returns a memoized matcher function from the given glob `pattern` and `options`.
- * The returned function takes a string to match as its only argument and returns
- * true if the string is a match.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.matcher(pattern[, options]);
- *
- * var isMatch = mm.matcher('*.!(*a)');
- * console.log(isMatch('a.a'));
- * //=> false
- * console.log(isMatch('a.b'));
- * //=> true
- * ```
- * @param {String} `pattern` Glob pattern
- * @param {Object} `options` See available [options](#options) for changing how matches are performed.
- * @return {Function} Returns a matcher function.
- * @api public
- */
-
-micromatch.matcher = function matcher(pattern, options) {
- if (Array.isArray(pattern)) {
- return compose(pattern, options, matcher);
- }
-
- // if pattern is a regex
- if (pattern instanceof RegExp) {
- return test(pattern);
- }
-
- // if pattern is invalid
- if (!utils.isString(pattern)) {
- throw new TypeError('expected pattern to be an array, string or regex');
- }
-
- // if pattern is a non-glob string
- if (!utils.hasSpecialChars(pattern)) {
- if (options && options.nocase === true) {
- pattern = pattern.toLowerCase();
- }
- return utils.matchPath(pattern, options);
- }
-
- // if pattern is a glob string
- var re = micromatch.makeRe(pattern, options);
-
- // if `options.matchBase` or `options.basename` is defined
- if (micromatch.matchBase(pattern, options)) {
- return utils.matchBasename(re, options);
- }
-
- function test(regex) {
- var equals = utils.equalsPattern(options);
- var unixify = utils.unixify(options);
-
- return function(str) {
- if (equals(str)) {
- return true;
- }
-
- if (regex.test(unixify(str))) {
- return true;
- }
- return false;
- };
- }
-
- var fn = test(re);
- Object.defineProperty(fn, 'result', {
- configurable: true,
- enumerable: false,
- value: re.result
- });
- return fn;
-};
-
-/**
- * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.capture(pattern, string[, options]);
- *
- * console.log(mm.capture('test/*.js', 'test/foo.js'));
- * //=> ['foo']
- * console.log(mm.capture('test/*.js', 'foo/bar.css'));
- * //=> null
- * ```
- * @param {String} `pattern` Glob pattern to use for matching.
- * @param {String} `string` String to match
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`.
- * @api public
- */
-
-micromatch.capture = function(pattern, str, options) {
- var re = micromatch.makeRe(pattern, extend({capture: true}, options));
- var unixify = utils.unixify(options);
-
- function match() {
- return function(string) {
- var match = re.exec(unixify(string));
- if (!match) {
- return null;
- }
-
- return match.slice(1);
- };
- }
-
- var capture = memoize('capture', pattern, options, match);
- return capture(str);
-};
-
-/**
- * Create a regular expression from the given glob `pattern`.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.makeRe(pattern[, options]);
- *
- * console.log(mm.makeRe('*.js'));
- * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/
- * ```
- * @param {String} `pattern` A glob pattern to convert to regex.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed.
- * @return {RegExp} Returns a regex created from the given pattern.
- * @api public
- */
-
-micromatch.makeRe = function(pattern, options) {
- if (typeof pattern !== 'string') {
- throw new TypeError('expected pattern to be a string');
- }
-
- if (pattern.length > MAX_LENGTH) {
- throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters');
- }
-
- function makeRe() {
- var result = micromatch.create(pattern, options);
- var ast_array = [];
- var output = result.map(function(obj) {
- obj.ast.state = obj.state;
- ast_array.push(obj.ast);
- return obj.output;
- });
-
- var regex = toRegex(output.join('|'), options);
- Object.defineProperty(regex, 'result', {
- configurable: true,
- enumerable: false,
- value: ast_array
- });
- return regex;
- }
-
- return memoize('makeRe', pattern, options, makeRe);
-};
-
-/**
- * Expand the given brace `pattern`.
- *
- * ```js
- * var mm = require('micromatch');
- * console.log(mm.braces('foo/{a,b}/bar'));
- * //=> ['foo/(a|b)/bar']
- *
- * console.log(mm.braces('foo/{a,b}/bar', {expand: true}));
- * //=> ['foo/(a|b)/bar']
- * ```
- * @param {String} `pattern` String with brace pattern to expand.
- * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.
- * @return {Array}
- * @api public
- */
-
-micromatch.braces = function(pattern, options) {
- if (typeof pattern !== 'string' && !Array.isArray(pattern)) {
- throw new TypeError('expected pattern to be an array or string');
- }
-
- function expand() {
- if (options && options.nobrace === true || !/\{.*\}/.test(pattern)) {
- return utils.arrayify(pattern);
- }
- return braces(pattern, options);
- }
-
- return memoize('braces', pattern, options, expand);
-};
-
-/**
- * Proxy to the [micromatch.braces](#method), for parity with
- * minimatch.
- */
-
-micromatch.braceExpand = function(pattern, options) {
- var opts = extend({}, options, {expand: true});
- return micromatch.braces(pattern, opts);
-};
-
-/**
- * Parses the given glob `pattern` and returns an array of abstract syntax
- * trees (ASTs), with the compiled `output` and optional source `map` on
- * each AST.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.create(pattern[, options]);
- *
- * console.log(mm.create('abc/*.js'));
- * // [{ options: { source: 'string', sourcemap: true },
- * // state: {},
- * // compilers:
- * // { ... },
- * // output: '(\\.[\\\\\\/])?abc\\/(?!\\.)(?=.)[^\\/]*?\\.js',
- * // ast:
- * // { type: 'root',
- * // errors: [],
- * // nodes:
- * // [ ... ],
- * // dot: false,
- * // input: 'abc/*.js' },
- * // parsingErrors: [],
- * // map:
- * // { version: 3,
- * // sources: [ 'string' ],
- * // names: [],
- * // mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE',
- * // sourcesContent: [ 'abc/*.js' ] },
- * // position: { line: 1, column: 28 },
- * // content: {},
- * // files: {},
- * // idx: 6 }]
- * ```
- * @param {String} `pattern` Glob pattern to parse and compile.
- * @param {Object} `options` Any [options](#options) to change how parsing and compiling is performed.
- * @return {Object} Returns an object with the parsed AST, compiled string and optional source map.
- * @api public
- */
-
-micromatch.create = function(pattern, options) {
- return memoize('create', pattern, options, function() {
- function create(str, opts) {
- return micromatch.compile(micromatch.parse(str, opts), opts);
- }
-
- pattern = micromatch.braces(pattern, options);
- var len = pattern.length;
- var idx = -1;
- var res = [];
-
- while (++idx < len) {
- res.push(create(pattern[idx], options));
- }
- return res;
- });
-};
-
-/**
- * Parse the given `str` with the given `options`.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.parse(pattern[, options]);
- *
- * var ast = mm.parse('a/{b,c}/d');
- * console.log(ast);
- * // { type: 'root',
- * // errors: [],
- * // input: 'a/{b,c}/d',
- * // nodes:
- * // [ { type: 'bos', val: '' },
- * // { type: 'text', val: 'a/' },
- * // { type: 'brace',
- * // nodes:
- * // [ { type: 'brace.open', val: '{' },
- * // { type: 'text', val: 'b,c' },
- * // { type: 'brace.close', val: '}' } ] },
- * // { type: 'text', val: '/d' },
- * // { type: 'eos', val: '' } ] }
- * ```
- * @param {String} `str`
- * @param {Object} `options`
- * @return {Object} Returns an AST
- * @api public
- */
-
-micromatch.parse = function(pattern, options) {
- if (typeof pattern !== 'string') {
- throw new TypeError('expected a string');
- }
-
- function parse() {
- var snapdragon = utils.instantiate(null, options);
- parsers(snapdragon, options);
-
- var ast = snapdragon.parse(pattern, options);
- utils.define(ast, 'snapdragon', snapdragon);
- ast.input = pattern;
- return ast;
- }
-
- return memoize('parse', pattern, options, parse);
-};
-
-/**
- * Compile the given `ast` or string with the given `options`.
- *
- * ```js
- * var mm = require('micromatch');
- * mm.compile(ast[, options]);
- *
- * var ast = mm.parse('a/{b,c}/d');
- * console.log(mm.compile(ast));
- * // { options: { source: 'string' },
- * // state: {},
- * // compilers:
- * // { eos: [Function],
- * // noop: [Function],
- * // bos: [Function],
- * // brace: [Function],
- * // 'brace.open': [Function],
- * // text: [Function],
- * // 'brace.close': [Function] },
- * // output: [ 'a/(b|c)/d' ],
- * // ast:
- * // { ... },
- * // parsingErrors: [] }
- * ```
- * @param {Object|String} `ast`
- * @param {Object} `options`
- * @return {Object} Returns an object that has an `output` property with the compiled string.
- * @api public
- */
-
-micromatch.compile = function(ast, options) {
- if (typeof ast === 'string') {
- ast = micromatch.parse(ast, options);
- }
-
- return memoize('compile', ast.input, options, function() {
- var snapdragon = utils.instantiate(ast, options);
- compilers(snapdragon, options);
- return snapdragon.compile(ast, options);
- });
-};
-
-/**
- * Clear the regex cache.
- *
- * ```js
- * mm.clearCache();
- * ```
- * @api public
- */
-
-micromatch.clearCache = function() {
- micromatch.cache.caches = {};
-};
-
-/**
- * Returns true if the given value is effectively an empty string
- */
-
-function isEmptyString(val) {
- return String(val) === '' || String(val) === './';
-}
-
-/**
- * Compose a matcher function with the given patterns.
- * This allows matcher functions to be compiled once and
- * called multiple times.
- */
-
-function compose(patterns, options, matcher) {
- var matchers;
-
- return memoize('compose', String(patterns), options, function() {
- return function(file) {
- // delay composition until it's invoked the first time,
- // after that it won't be called again
- if (!matchers) {
- matchers = [];
- for (var i = 0; i < patterns.length; i++) {
- matchers.push(matcher(patterns[i], options));
- }
- }
-
- var len = matchers.length;
- while (len--) {
- if (matchers[len](file) === true) {
- return true;
- }
- }
- return false;
- };
- });
-}
-
-/**
- * Memoize a generated regex or function. A unique key is generated
- * from the `type` (usually method name), the `pattern`, and
- * user-defined options.
- */
-
-function memoize(type, pattern, options, fn) {
- var key = utils.createKey(type + '=' + pattern, options);
-
- if (options && options.cache === false) {
- return fn(pattern, options);
- }
-
- if (cache.has(type, key)) {
- return cache.get(type, key);
- }
-
- var val = fn(pattern, options);
- cache.set(type, key, val);
- return val;
-}
-
-/**
- * Expose compiler, parser and cache on `micromatch`
- */
-
-micromatch.compilers = compilers;
-micromatch.parsers = parsers;
-micromatch.caches = cache.caches;
-
-/**
- * Expose `micromatch`
- * @type {Function}
- */
-
-module.exports = micromatch;
diff --git a/node_modules/micromatch/lib/.DS_Store b/node_modules/micromatch/lib/.DS_Store
deleted file mode 100644
index 5008ddf..0000000
Binary files a/node_modules/micromatch/lib/.DS_Store and /dev/null differ
diff --git a/node_modules/micromatch/lib/cache.js b/node_modules/micromatch/lib/cache.js
deleted file mode 100644
index fffc4c1..0000000
--- a/node_modules/micromatch/lib/cache.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = new (require('fragment-cache'))();
diff --git a/node_modules/micromatch/lib/compilers.js b/node_modules/micromatch/lib/compilers.js
deleted file mode 100644
index 85cda4f..0000000
--- a/node_modules/micromatch/lib/compilers.js
+++ /dev/null
@@ -1,77 +0,0 @@
-'use strict';
-
-var nanomatch = require('nanomatch');
-var extglob = require('extglob');
-
-module.exports = function(snapdragon) {
- var compilers = snapdragon.compiler.compilers;
- var opts = snapdragon.options;
-
- // register nanomatch compilers
- snapdragon.use(nanomatch.compilers);
-
- // get references to some specific nanomatch compilers before they
- // are overridden by the extglob and/or custom compilers
- var escape = compilers.escape;
- var qmark = compilers.qmark;
- var slash = compilers.slash;
- var star = compilers.star;
- var text = compilers.text;
- var plus = compilers.plus;
- var dot = compilers.dot;
-
- // register extglob compilers or escape exglobs if disabled
- if (opts.extglob === false || opts.noext === true) {
- snapdragon.compiler.use(escapeExtglobs);
- } else {
- snapdragon.use(extglob.compilers);
- }
-
- snapdragon.use(function() {
- this.options.star = this.options.star || function(/*node*/) {
- return '[^\\\\/]*?';
- };
- });
-
- // custom micromatch compilers
- snapdragon.compiler
-
- // reset referenced compiler
- .set('dot', dot)
- .set('escape', escape)
- .set('plus', plus)
- .set('slash', slash)
- .set('qmark', qmark)
- .set('star', star)
- .set('text', text);
-};
-
-function escapeExtglobs(compiler) {
- compiler.set('paren', function(node) {
- var val = '';
- visit(node, function(tok) {
- if (tok.val) val += (/^\W/.test(tok.val) ? '\\' : '') + tok.val;
- });
- return this.emit(val, node);
- });
-
- /**
- * Visit `node` with the given `fn`
- */
-
- function visit(node, fn) {
- return node.nodes ? mapVisit(node.nodes, fn) : fn(node);
- }
-
- /**
- * Map visit over array of `nodes`.
- */
-
- function mapVisit(nodes, fn) {
- var len = nodes.length;
- var idx = -1;
- while (++idx < len) {
- visit(nodes[idx], fn);
- }
- }
-}
diff --git a/node_modules/micromatch/lib/parsers.js b/node_modules/micromatch/lib/parsers.js
deleted file mode 100644
index f80498c..0000000
--- a/node_modules/micromatch/lib/parsers.js
+++ /dev/null
@@ -1,83 +0,0 @@
-'use strict';
-
-var extglob = require('extglob');
-var nanomatch = require('nanomatch');
-var regexNot = require('regex-not');
-var toRegex = require('to-regex');
-var not;
-
-/**
- * Characters to use in negation regex (we want to "not" match
- * characters that are matched by other parsers)
- */
-
-var TEXT = '([!@*?+]?\\(|\\)|\\[:?(?=.*?:?\\])|:?\\]|[*+?!^$.\\\\/])+';
-var createNotRegex = function(opts) {
- return not || (not = textRegex(TEXT));
-};
-
-/**
- * Parsers
- */
-
-module.exports = function(snapdragon) {
- var parsers = snapdragon.parser.parsers;
-
- // register nanomatch parsers
- snapdragon.use(nanomatch.parsers);
-
- // get references to some specific nanomatch parsers before they
- // are overridden by the extglob and/or parsers
- var escape = parsers.escape;
- var slash = parsers.slash;
- var qmark = parsers.qmark;
- var plus = parsers.plus;
- var star = parsers.star;
- var dot = parsers.dot;
-
- // register extglob parsers
- snapdragon.use(extglob.parsers);
-
- // custom micromatch parsers
- snapdragon.parser
- .use(function() {
- // override "notRegex" created in nanomatch parser
- this.notRegex = /^\!+(?!\()/;
- })
- // reset the referenced parsers
- .capture('escape', escape)
- .capture('slash', slash)
- .capture('qmark', qmark)
- .capture('star', star)
- .capture('plus', plus)
- .capture('dot', dot)
-
- /**
- * Override `text` parser
- */
-
- .capture('text', function() {
- if (this.isInside('bracket')) return;
- var pos = this.position();
- var m = this.match(createNotRegex(this.options));
- if (!m || !m[0]) return;
-
- // escape regex boundary characters and simple brackets
- var val = m[0].replace(/([[\]^$])/g, '\\$1');
-
- return pos({
- type: 'text',
- val: val
- });
- });
-};
-
-/**
- * Create text regex
- */
-
-function textRegex(pattern) {
- var notStr = regexNot.create(pattern, {contains: true, strictClose: false});
- var prefix = '(?:[\\^]|\\\\|';
- return toRegex(prefix + notStr + ')', {strictClose: false});
-}
diff --git a/node_modules/micromatch/lib/utils.js b/node_modules/micromatch/lib/utils.js
deleted file mode 100644
index f0ba917..0000000
--- a/node_modules/micromatch/lib/utils.js
+++ /dev/null
@@ -1,309 +0,0 @@
-'use strict';
-
-var utils = module.exports;
-var path = require('path');
-
-/**
- * Module dependencies
- */
-
-var Snapdragon = require('snapdragon');
-utils.define = require('define-property');
-utils.diff = require('arr-diff');
-utils.extend = require('extend-shallow');
-utils.pick = require('object.pick');
-utils.typeOf = require('kind-of');
-utils.unique = require('array-unique');
-
-/**
- * Returns true if the platform is windows, or `path.sep` is `\\`.
- * This is defined as a function to allow `path.sep` to be set in unit tests,
- * or by the user, if there is a reason to do so.
- * @return {Boolean}
- */
-
-utils.isWindows = function() {
- return path.sep === '\\' || process.platform === 'win32';
-};
-
-/**
- * Get the `Snapdragon` instance to use
- */
-
-utils.instantiate = function(ast, options) {
- var snapdragon;
- // if an instance was created by `.parse`, use that instance
- if (utils.typeOf(ast) === 'object' && ast.snapdragon) {
- snapdragon = ast.snapdragon;
- // if the user supplies an instance on options, use that instance
- } else if (utils.typeOf(options) === 'object' && options.snapdragon) {
- snapdragon = options.snapdragon;
- // create a new instance
- } else {
- snapdragon = new Snapdragon(options);
- }
-
- utils.define(snapdragon, 'parse', function(str, options) {
- var parsed = Snapdragon.prototype.parse.apply(this, arguments);
- parsed.input = str;
-
- // escape unmatched brace/bracket/parens
- var last = this.parser.stack.pop();
- if (last && this.options.strictErrors !== true) {
- var open = last.nodes[0];
- var inner = last.nodes[1];
- if (last.type === 'bracket') {
- if (inner.val.charAt(0) === '[') {
- inner.val = '\\' + inner.val;
- }
-
- } else {
- open.val = '\\' + open.val;
- var sibling = open.parent.nodes[1];
- if (sibling.type === 'star') {
- sibling.loose = true;
- }
- }
- }
-
- // add non-enumerable parser reference
- utils.define(parsed, 'parser', this.parser);
- return parsed;
- });
-
- return snapdragon;
-};
-
-/**
- * Create the key to use for memoization. The key is generated
- * by iterating over the options and concatenating key-value pairs
- * to the pattern string.
- */
-
-utils.createKey = function(pattern, options) {
- if (utils.typeOf(options) !== 'object') {
- return pattern;
- }
- var val = pattern;
- var keys = Object.keys(options);
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- val += ';' + key + '=' + String(options[key]);
- }
- return val;
-};
-
-/**
- * Cast `val` to an array
- * @return {Array}
- */
-
-utils.arrayify = function(val) {
- if (typeof val === 'string') return [val];
- return val ? (Array.isArray(val) ? val : [val]) : [];
-};
-
-/**
- * Return true if `val` is a non-empty string
- */
-
-utils.isString = function(val) {
- return typeof val === 'string';
-};
-
-/**
- * Return true if `val` is a non-empty string
- */
-
-utils.isObject = function(val) {
- return utils.typeOf(val) === 'object';
-};
-
-/**
- * Returns true if the given `str` has special characters
- */
-
-utils.hasSpecialChars = function(str) {
- return /(?:(?:(^|\/)[!.])|[*?+()|\[\]{}]|[+@]\()/.test(str);
-};
-
-/**
- * Escape regex characters in the given string
- */
-
-utils.escapeRegex = function(str) {
- return str.replace(/[-[\]{}()^$|*+?.\\\/\s]/g, '\\$&');
-};
-
-/**
- * Normalize slashes in the given filepath.
- *
- * @param {String} `filepath`
- * @return {String}
- */
-
-utils.toPosixPath = function(str) {
- return str.replace(/\\+/g, '/');
-};
-
-/**
- * Strip backslashes before special characters in a string.
- *
- * @param {String} `str`
- * @return {String}
- */
-
-utils.unescape = function(str) {
- return utils.toPosixPath(str.replace(/\\(?=[*+?!.])/g, ''));
-};
-
-/**
- * Strip the prefix from a filepath
- * @param {String} `fp`
- * @return {String}
- */
-
-utils.stripPrefix = function(str) {
- if (str.charAt(0) !== '.') {
- return str;
- }
- var ch = str.charAt(1);
- if (utils.isSlash(ch)) {
- return str.slice(2);
- }
- return str;
-};
-
-/**
- * Returns true if the given str is an escaped or
- * unescaped path character
- */
-
-utils.isSlash = function(str) {
- return str === '/' || str === '\\/' || str === '\\' || str === '\\\\';
-};
-
-/**
- * Returns a function that returns true if the given
- * pattern matches or contains a `filepath`
- *
- * @param {String} `pattern`
- * @return {Function}
- */
-
-utils.matchPath = function(pattern, options) {
- return (options && options.contains)
- ? utils.containsPattern(pattern, options)
- : utils.equalsPattern(pattern, options);
-};
-
-/**
- * Returns true if the given (original) filepath or unixified path are equal
- * to the given pattern.
- */
-
-utils._equals = function(filepath, unixPath, pattern) {
- return pattern === filepath || pattern === unixPath;
-};
-
-/**
- * Returns true if the given (original) filepath or unixified path contain
- * the given pattern.
- */
-
-utils._contains = function(filepath, unixPath, pattern) {
- return filepath.indexOf(pattern) !== -1 || unixPath.indexOf(pattern) !== -1;
-};
-
-/**
- * Returns a function that returns true if the given
- * pattern is the same as a given `filepath`
- *
- * @param {String} `pattern`
- * @return {Function}
- */
-
-utils.equalsPattern = function(pattern, options) {
- var unixify = utils.unixify(options);
- options = options || {};
-
- return function fn(filepath) {
- var equal = utils._equals(filepath, unixify(filepath), pattern);
- if (equal === true || options.nocase !== true) {
- return equal;
- }
- var lower = filepath.toLowerCase();
- return utils._equals(lower, unixify(lower), pattern);
- };
-};
-
-/**
- * Returns a function that returns true if the given
- * pattern contains a `filepath`
- *
- * @param {String} `pattern`
- * @return {Function}
- */
-
-utils.containsPattern = function(pattern, options) {
- var unixify = utils.unixify(options);
- options = options || {};
-
- return function(filepath) {
- var contains = utils._contains(filepath, unixify(filepath), pattern);
- if (contains === true || options.nocase !== true) {
- return contains;
- }
- var lower = filepath.toLowerCase();
- return utils._contains(lower, unixify(lower), pattern);
- };
-};
-
-/**
- * Returns a function that returns true if the given
- * regex matches the `filename` of a file path.
- *
- * @param {RegExp} `re` Matching regex
- * @return {Function}
- */
-
-utils.matchBasename = function(re) {
- return function(filepath) {
- return re.test(path.basename(filepath));
- };
-};
-
-/**
- * Determines the filepath to return based on the provided options.
- * @return {any}
- */
-
-utils.value = function(str, unixify, options) {
- if (options && options.unixify === false) {
- return str;
- }
- return unixify(str);
-};
-
-/**
- * Returns a function that normalizes slashes in a string to forward
- * slashes, strips `./` from beginning of paths, and optionally unescapes
- * special characters.
- * @return {Function}
- */
-
-utils.unixify = function(options) {
- options = options || {};
- return function(filepath) {
- if (utils.isWindows() || options.unixify === true) {
- filepath = utils.toPosixPath(filepath);
- }
- if (options.stripPrefix !== false) {
- filepath = utils.stripPrefix(filepath);
- }
- if (options.unescape === true) {
- filepath = utils.unescape(filepath);
- }
- return filepath;
- };
-};
diff --git a/node_modules/micromatch/node_modules/extend-shallow/LICENSE b/node_modules/micromatch/node_modules/extend-shallow/LICENSE
deleted file mode 100644
index 99c9369..0000000
--- a/node_modules/micromatch/node_modules/extend-shallow/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2015, 2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/micromatch/node_modules/extend-shallow/README.md b/node_modules/micromatch/node_modules/extend-shallow/README.md
deleted file mode 100644
index dee226f..0000000
--- a/node_modules/micromatch/node_modules/extend-shallow/README.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# extend-shallow [](https://www.npmjs.com/package/extend-shallow) [](https://npmjs.org/package/extend-shallow) [](https://npmjs.org/package/extend-shallow) [](https://travis-ci.org/jonschlinkert/extend-shallow)
-
-> Extend an object with the properties of additional objects. node.js/javascript util.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save extend-shallow
-```
-
-## Usage
-
-```js
-var extend = require('extend-shallow');
-
-extend({a: 'b'}, {c: 'd'})
-//=> {a: 'b', c: 'd'}
-```
-
-Pass an empty object to shallow clone:
-
-```js
-var obj = {};
-extend(obj, {a: 'b'}, {c: 'd'})
-//=> {a: 'b', c: 'd'}
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.")
-* [for-in](https://www.npmjs.com/package/for-in): Iterate over the own and inherited enumerable properties of an object, and return an object… [more](https://github.com/jonschlinkert/for-in) | [homepage](https://github.com/jonschlinkert/for-in "Iterate over the own and inherited enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js")
-* [for-own](https://www.npmjs.com/package/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) | [homepage](https://github.com/jonschlinkert/for-own "Iterate over the own enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js.")
-* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
-* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 33 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [pdehaan](https://github.com/pdehaan) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 19, 2017._
\ No newline at end of file
diff --git a/node_modules/micromatch/node_modules/extend-shallow/index.js b/node_modules/micromatch/node_modules/extend-shallow/index.js
deleted file mode 100644
index c9582f8..0000000
--- a/node_modules/micromatch/node_modules/extend-shallow/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-var isExtendable = require('is-extendable');
-var assignSymbols = require('assign-symbols');
-
-module.exports = Object.assign || function(obj/*, objects*/) {
- if (obj === null || typeof obj === 'undefined') {
- throw new TypeError('Cannot convert undefined or null to object');
- }
- if (!isObject(obj)) {
- obj = {};
- }
- for (var i = 1; i < arguments.length; i++) {
- var val = arguments[i];
- if (isString(val)) {
- val = toObject(val);
- }
- if (isObject(val)) {
- assign(obj, val);
- assignSymbols(obj, val);
- }
- }
- return obj;
-};
-
-function assign(a, b) {
- for (var key in b) {
- if (hasOwn(b, key)) {
- a[key] = b[key];
- }
- }
-}
-
-function isString(val) {
- return (val && typeof val === 'string');
-}
-
-function toObject(str) {
- var obj = {};
- for (var i in str) {
- obj[i] = str[i];
- }
- return obj;
-}
-
-function isObject(val) {
- return (val && typeof val === 'object') || isExtendable(val);
-}
-
-/**
- * Returns true if the given `key` is an own property of `obj`.
- */
-
-function hasOwn(obj, key) {
- return Object.prototype.hasOwnProperty.call(obj, key);
-}
-
-function isEnum(obj, key) {
- return Object.prototype.propertyIsEnumerable.call(obj, key);
-}
diff --git a/node_modules/micromatch/node_modules/extend-shallow/package.json b/node_modules/micromatch/node_modules/extend-shallow/package.json
deleted file mode 100644
index e5e9105..0000000
--- a/node_modules/micromatch/node_modules/extend-shallow/package.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "name": "extend-shallow",
- "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
- "version": "3.0.2",
- "homepage": "https://github.com/jonschlinkert/extend-shallow",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Peter deHaan (http://about.me/peterdehaan)"
- ],
- "repository": "jonschlinkert/extend-shallow",
- "bugs": {
- "url": "https://github.com/jonschlinkert/extend-shallow/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "devDependencies": {
- "array-slice": "^1.0.0",
- "benchmarked": "^2.0.0",
- "for-own": "^1.0.0",
- "gulp-format-md": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.1",
- "minimist": "^1.2.0",
- "mocha": "^3.5.3",
- "object-assign": "^4.1.1"
- },
- "keywords": [
- "assign",
- "clone",
- "extend",
- "merge",
- "obj",
- "object",
- "object-assign",
- "object.assign",
- "prop",
- "properties",
- "property",
- "props",
- "shallow",
- "util",
- "utility",
- "utils",
- "value"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "related": {
- "list": [
- "extend-shallow",
- "for-in",
- "for-own",
- "is-plain-object",
- "isobject",
- "kind-of"
- ]
- },
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/micromatch/node_modules/is-extendable/LICENSE b/node_modules/micromatch/node_modules/is-extendable/LICENSE
deleted file mode 100644
index c0d7f13..0000000
--- a/node_modules/micromatch/node_modules/is-extendable/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/micromatch/node_modules/is-extendable/README.md b/node_modules/micromatch/node_modules/is-extendable/README.md
deleted file mode 100644
index 875b56a..0000000
--- a/node_modules/micromatch/node_modules/is-extendable/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# is-extendable [](https://www.npmjs.com/package/is-extendable) [](https://npmjs.org/package/is-extendable) [](https://npmjs.org/package/is-extendable) [](https://travis-ci.org/jonschlinkert/is-extendable)
-
-> Returns true if a value is a plain object, array or function.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save is-extendable
-```
-
-## Usage
-
-```js
-var isExtendable = require('is-extendable');
-```
-
-Returns true if the value is any of the following:
-
-* array
-* plain object
-* function
-
-## Notes
-
-All objects in JavaScript can have keys, but it's a pain to check for this, since we ether need to verify that the value is not `null` or `undefined` and:
-
-* the value is not a primitive, or
-* that the object is a plain object, function or array
-
-Also note that an `extendable` object is not the same as an [extensible object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible), which is one that (in es6) is not sealed, frozen, or marked as non-extensible using `preventExtensions`.
-
-## Release history
-
-### v1.0.0 - 2017/07/20
-
-**Breaking changes**
-
-* No longer considers date, regex or error objects to be extendable
-
-## About
-
-### Related projects
-
-* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target… [more](https://github.com/jonschlinkert/assign-deep) | [homepage](https://github.com/jonschlinkert/assign-deep "Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target (first) object.")
-* [is-equal-shallow](https://www.npmjs.com/package/is-equal-shallow): Does a shallow comparison of two objects, returning false if the keys or values differ. | [homepage](https://github.com/jonschlinkert/is-equal-shallow "Does a shallow comparison of two objects, returning false if the keys or values differ.")
-* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
-* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 20, 2017._
\ No newline at end of file
diff --git a/node_modules/micromatch/node_modules/is-extendable/index.d.ts b/node_modules/micromatch/node_modules/is-extendable/index.d.ts
deleted file mode 100644
index b96d507..0000000
--- a/node_modules/micromatch/node_modules/is-extendable/index.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export = isExtendable;
-
-declare function isExtendable(val: any): boolean;
-
-declare namespace isExtendable {}
diff --git a/node_modules/micromatch/node_modules/is-extendable/index.js b/node_modules/micromatch/node_modules/is-extendable/index.js
deleted file mode 100644
index a8b26ad..0000000
--- a/node_modules/micromatch/node_modules/is-extendable/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*!
- * is-extendable
- *
- * Copyright (c) 2015-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-var isPlainObject = require('is-plain-object');
-
-module.exports = function isExtendable(val) {
- return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);
-};
diff --git a/node_modules/micromatch/node_modules/is-extendable/package.json b/node_modules/micromatch/node_modules/is-extendable/package.json
deleted file mode 100644
index 2aaab65..0000000
--- a/node_modules/micromatch/node_modules/is-extendable/package.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "name": "is-extendable",
- "description": "Returns true if a value is a plain object, array or function.",
- "version": "1.0.1",
- "homepage": "https://github.com/jonschlinkert/is-extendable",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/is-extendable",
- "bugs": {
- "url": "https://github.com/jonschlinkert/is-extendable/issues"
- },
- "license": "MIT",
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "main": "index.js",
- "types": "index.d.ts",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "devDependencies": {
- "gulp-format-md": "^1.0.0",
- "mocha": "^3.4.2"
- },
- "keywords": [
- "array",
- "assign",
- "check",
- "date",
- "extend",
- "extendable",
- "extensible",
- "function",
- "is",
- "object",
- "regex",
- "test"
- ],
- "verb": {
- "related": {
- "list": [
- "assign-deep",
- "is-equal-shallow",
- "is-plain-object",
- "isobject",
- "kind-of"
- ]
- },
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/micromatch/node_modules/kind-of/CHANGELOG.md b/node_modules/micromatch/node_modules/kind-of/CHANGELOG.md
deleted file mode 100644
index 01687d5..0000000
--- a/node_modules/micromatch/node_modules/kind-of/CHANGELOG.md
+++ /dev/null
@@ -1,160 +0,0 @@
-# Release history
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
-
-
- Guiding Principles
-
-- Changelogs are for humans, not machines.
-- There should be an entry for every single version.
-- The same types of changes should be grouped.
-- Versions and sections should be linkable.
-- The latest version comes first.
-- The release date of each versions is displayed.
-- Mention whether you follow Semantic Versioning.
-
-
-
-
- Types of changes
-
-Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_):
-
-- `Added` for new features.
-- `Changed` for changes in existing functionality.
-- `Deprecated` for soon-to-be removed features.
-- `Removed` for now removed features.
-- `Fixed` for any bug fixes.
-- `Security` in case of vulnerabilities.
-
-
-
-## [6.0.3] - 2020-01-16
-
-- Merge pull request #31 for issue #30
-
-## [6.0.0] - 2017-10-13
-
-- refactor code to be more performant
-- refactor benchmarks
-
-## [5.1.0] - 2017-10-13
-
-**Added**
-
-- Merge pull request #15 from aretecode/patch-1
-- adds support and tests for string & array iterators
-
-**Changed**
-
-- updates benchmarks
-
-## [5.0.2] - 2017-08-02
-
-- Merge pull request #14 from struct78/master
-- Added `undefined` check
-
-## [5.0.0] - 2017-06-21
-
-- Merge pull request #12 from aretecode/iterator
-- Set Iterator + Map Iterator
-- streamline `isbuffer`, minor edits
-
-## [4.0.0] - 2017-05-19
-
-- Merge pull request #8 from tunnckoCore/master
-- update deps
-
-## [3.2.2] - 2017-05-16
-
-- fix version
-
-## [3.2.1] - 2017-05-16
-
-- add browserify
-
-## [3.2.0] - 2017-04-25
-
-- Merge pull request #10 from ksheedlo/unrequire-buffer
-- add `promise` support and tests
-- Remove unnecessary `Buffer` check
-
-## [3.1.0] - 2016-12-07
-
-- Merge pull request #7 from laggingreflex/err
-- add support for `error` and tests
-- run update
-
-## [3.0.4] - 2016-07-29
-
-- move tests
-- run update
-
-## [3.0.3] - 2016-05-03
-
-- fix prepublish script
-- remove unused dep
-
-## [3.0.0] - 2015-11-17
-
-- add typed array support
-- Merge pull request #5 from miguelmota/typed-arrays
-- adds new tests
-
-## [2.0.1] - 2015-08-21
-
-- use `is-buffer` module
-
-## [2.0.0] - 2015-05-31
-
-- Create fallback for `Array.isArray` if used as a browser package
-- Merge pull request #2 from dtothefp/patch-1
-- Merge pull request #3 from pdehaan/patch-1
-- Merge branch 'master' of https://github.com/chorks/kind-of into chorks-master
-- optimizations, mostly date and regex
-
-## [1.1.0] - 2015-02-09
-
-- adds `buffer` support
-- adds tests for `buffer`
-
-## [1.0.0] - 2015-01-19
-
-- update benchmarks
-- optimizations based on benchmarks
-
-## [0.1.2] - 2014-10-26
-
-- return `typeof` value if it's not an object. very slight speed improvement
-- use `.slice`
-- adds benchmarks
-
-## [0.1.0] - 2014-9-26
-
-- first commit
-
-[6.0.0]: https://github.com/jonschlinkert/kind-of/compare/5.1.0...6.0.0
-[5.1.0]: https://github.com/jonschlinkert/kind-of/compare/5.0.2...5.1.0
-[5.0.2]: https://github.com/jonschlinkert/kind-of/compare/5.0.1...5.0.2
-[5.0.1]: https://github.com/jonschlinkert/kind-of/compare/5.0.0...5.0.1
-[5.0.0]: https://github.com/jonschlinkert/kind-of/compare/4.0.0...5.0.0
-[4.0.0]: https://github.com/jonschlinkert/kind-of/compare/3.2.2...4.0.0
-[3.2.2]: https://github.com/jonschlinkert/kind-of/compare/3.2.1...3.2.2
-[3.2.1]: https://github.com/jonschlinkert/kind-of/compare/3.2.0...3.2.1
-[3.2.0]: https://github.com/jonschlinkert/kind-of/compare/3.1.0...3.2.0
-[3.1.0]: https://github.com/jonschlinkert/kind-of/compare/3.0.4...3.1.0
-[3.0.4]: https://github.com/jonschlinkert/kind-of/compare/3.0.3...3.0.4
-[3.0.3]: https://github.com/jonschlinkert/kind-of/compare/3.0.0...3.0.3
-[3.0.0]: https://github.com/jonschlinkert/kind-of/compare/2.0.1...3.0.0
-[2.0.1]: https://github.com/jonschlinkert/kind-of/compare/2.0.0...2.0.1
-[2.0.0]: https://github.com/jonschlinkert/kind-of/compare/1.1.0...2.0.0
-[1.1.0]: https://github.com/jonschlinkert/kind-of/compare/1.0.0...1.1.0
-[1.0.0]: https://github.com/jonschlinkert/kind-of/compare/0.1.2...1.0.0
-[0.1.2]: https://github.com/jonschlinkert/kind-of/compare/0.1.0...0.1.2
-[0.1.0]: https://github.com/jonschlinkert/kind-of/commit/2fae09b0b19b1aadb558e9be39f0c3ef6034eb87
-
-[Unreleased]: https://github.com/jonschlinkert/kind-of/compare/0.1.2...HEAD
-[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog
\ No newline at end of file
diff --git a/node_modules/micromatch/node_modules/kind-of/LICENSE b/node_modules/micromatch/node_modules/kind-of/LICENSE
deleted file mode 100644
index 3f2eca1..0000000
--- a/node_modules/micromatch/node_modules/kind-of/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/micromatch/node_modules/kind-of/README.md b/node_modules/micromatch/node_modules/kind-of/README.md
deleted file mode 100644
index 0411dc5..0000000
--- a/node_modules/micromatch/node_modules/kind-of/README.md
+++ /dev/null
@@ -1,367 +0,0 @@
-# kind-of [](https://www.npmjs.com/package/kind-of) [](https://npmjs.org/package/kind-of) [](https://npmjs.org/package/kind-of) [](https://travis-ci.org/jonschlinkert/kind-of)
-
-> Get the native type of a value.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save kind-of
-```
-
-Install with [bower](https://bower.io/)
-
-```sh
-$ bower install kind-of --save
-```
-
-## Why use this?
-
-1. [it's fast](#benchmarks) | [optimizations](#optimizations)
-2. [better type checking](#better-type-checking)
-
-## Usage
-
-> es5, es6, and browser ready
-
-```js
-var kindOf = require('kind-of');
-
-kindOf(undefined);
-//=> 'undefined'
-
-kindOf(null);
-//=> 'null'
-
-kindOf(true);
-//=> 'boolean'
-
-kindOf(false);
-//=> 'boolean'
-
-kindOf(new Buffer(''));
-//=> 'buffer'
-
-kindOf(42);
-//=> 'number'
-
-kindOf('str');
-//=> 'string'
-
-kindOf(arguments);
-//=> 'arguments'
-
-kindOf({});
-//=> 'object'
-
-kindOf(Object.create(null));
-//=> 'object'
-
-kindOf(new Test());
-//=> 'object'
-
-kindOf(new Date());
-//=> 'date'
-
-kindOf([1, 2, 3]);
-//=> 'array'
-
-kindOf(/foo/);
-//=> 'regexp'
-
-kindOf(new RegExp('foo'));
-//=> 'regexp'
-
-kindOf(new Error('error'));
-//=> 'error'
-
-kindOf(function () {});
-//=> 'function'
-
-kindOf(function * () {});
-//=> 'generatorfunction'
-
-kindOf(Symbol('str'));
-//=> 'symbol'
-
-kindOf(new Map());
-//=> 'map'
-
-kindOf(new WeakMap());
-//=> 'weakmap'
-
-kindOf(new Set());
-//=> 'set'
-
-kindOf(new WeakSet());
-//=> 'weakset'
-
-kindOf(new Int8Array());
-//=> 'int8array'
-
-kindOf(new Uint8Array());
-//=> 'uint8array'
-
-kindOf(new Uint8ClampedArray());
-//=> 'uint8clampedarray'
-
-kindOf(new Int16Array());
-//=> 'int16array'
-
-kindOf(new Uint16Array());
-//=> 'uint16array'
-
-kindOf(new Int32Array());
-//=> 'int32array'
-
-kindOf(new Uint32Array());
-//=> 'uint32array'
-
-kindOf(new Float32Array());
-//=> 'float32array'
-
-kindOf(new Float64Array());
-//=> 'float64array'
-```
-
-## Benchmarks
-
-Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of).
-
-```bash
-# arguments (32 bytes)
- kind-of x 17,024,098 ops/sec ±1.90% (86 runs sampled)
- lib-type-of x 11,926,235 ops/sec ±1.34% (83 runs sampled)
- lib-typeof x 9,245,257 ops/sec ±1.22% (87 runs sampled)
-
- fastest is kind-of (by 161% avg)
-
-# array (22 bytes)
- kind-of x 17,196,492 ops/sec ±1.07% (88 runs sampled)
- lib-type-of x 8,838,283 ops/sec ±1.02% (87 runs sampled)
- lib-typeof x 8,677,848 ops/sec ±0.87% (87 runs sampled)
-
- fastest is kind-of (by 196% avg)
-
-# boolean (24 bytes)
- kind-of x 16,841,600 ops/sec ±1.10% (86 runs sampled)
- lib-type-of x 8,096,787 ops/sec ±0.95% (87 runs sampled)
- lib-typeof x 8,423,345 ops/sec ±1.15% (86 runs sampled)
-
- fastest is kind-of (by 204% avg)
-
-# buffer (38 bytes)
- kind-of x 14,848,060 ops/sec ±1.05% (86 runs sampled)
- lib-type-of x 3,671,577 ops/sec ±1.49% (87 runs sampled)
- lib-typeof x 8,360,236 ops/sec ±1.24% (86 runs sampled)
-
- fastest is kind-of (by 247% avg)
-
-# date (30 bytes)
- kind-of x 16,067,761 ops/sec ±1.58% (86 runs sampled)
- lib-type-of x 8,954,436 ops/sec ±1.40% (87 runs sampled)
- lib-typeof x 8,488,307 ops/sec ±1.51% (84 runs sampled)
-
- fastest is kind-of (by 184% avg)
-
-# error (36 bytes)
- kind-of x 9,634,090 ops/sec ±1.12% (89 runs sampled)
- lib-type-of x 7,735,624 ops/sec ±1.32% (86 runs sampled)
- lib-typeof x 7,442,160 ops/sec ±1.11% (90 runs sampled)
-
- fastest is kind-of (by 127% avg)
-
-# function (34 bytes)
- kind-of x 10,031,494 ops/sec ±1.27% (86 runs sampled)
- lib-type-of x 9,502,757 ops/sec ±1.17% (89 runs sampled)
- lib-typeof x 8,278,985 ops/sec ±1.08% (88 runs sampled)
-
- fastest is kind-of (by 113% avg)
-
-# null (24 bytes)
- kind-of x 18,159,808 ops/sec ±1.92% (86 runs sampled)
- lib-type-of x 12,927,635 ops/sec ±1.01% (88 runs sampled)
- lib-typeof x 7,958,234 ops/sec ±1.21% (89 runs sampled)
-
- fastest is kind-of (by 174% avg)
-
-# number (22 bytes)
- kind-of x 17,846,779 ops/sec ±0.91% (85 runs sampled)
- lib-type-of x 3,316,636 ops/sec ±1.19% (86 runs sampled)
- lib-typeof x 2,329,477 ops/sec ±2.21% (85 runs sampled)
-
- fastest is kind-of (by 632% avg)
-
-# object-plain (47 bytes)
- kind-of x 7,085,155 ops/sec ±1.05% (88 runs sampled)
- lib-type-of x 8,870,930 ops/sec ±1.06% (83 runs sampled)
- lib-typeof x 8,716,024 ops/sec ±1.05% (87 runs sampled)
-
- fastest is lib-type-of (by 112% avg)
-
-# regex (25 bytes)
- kind-of x 14,196,052 ops/sec ±1.65% (84 runs sampled)
- lib-type-of x 9,554,164 ops/sec ±1.25% (88 runs sampled)
- lib-typeof x 8,359,691 ops/sec ±1.07% (87 runs sampled)
-
- fastest is kind-of (by 158% avg)
-
-# string (33 bytes)
- kind-of x 16,131,428 ops/sec ±1.41% (85 runs sampled)
- lib-type-of x 7,273,172 ops/sec ±1.05% (87 runs sampled)
- lib-typeof x 7,382,635 ops/sec ±1.17% (85 runs sampled)
-
- fastest is kind-of (by 220% avg)
-
-# symbol (34 bytes)
- kind-of x 17,011,537 ops/sec ±1.24% (86 runs sampled)
- lib-type-of x 3,492,454 ops/sec ±1.23% (89 runs sampled)
- lib-typeof x 7,471,235 ops/sec ±2.48% (87 runs sampled)
-
- fastest is kind-of (by 310% avg)
-
-# template-strings (36 bytes)
- kind-of x 15,434,250 ops/sec ±1.46% (83 runs sampled)
- lib-type-of x 7,157,907 ops/sec ±0.97% (87 runs sampled)
- lib-typeof x 7,517,986 ops/sec ±0.92% (86 runs sampled)
-
- fastest is kind-of (by 210% avg)
-
-# undefined (29 bytes)
- kind-of x 19,167,115 ops/sec ±1.71% (87 runs sampled)
- lib-type-of x 15,477,740 ops/sec ±1.63% (85 runs sampled)
- lib-typeof x 19,075,495 ops/sec ±1.17% (83 runs sampled)
-
- fastest is lib-typeof,kind-of
-
-```
-
-## Optimizations
-
-In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library:
-
-1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot.
-2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it.
-3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'`
-4. There is no reason to make the code in a microlib as terse as possible, just to win points for making it shorter. It's always better to favor performant code over terse code. You will always only be using a single `require()` statement to use the library anyway, regardless of how the code is written.
-
-## Better type checking
-
-kind-of seems to be more consistently "correct" than other type checking libs I've looked at. For example, here are some differing results from other popular libs:
-
-### [typeof](https://github.com/CodingFu/typeof) lib
-
-Incorrectly identifies instances of custom constructors (pretty common):
-
-```js
-var typeOf = require('typeof');
-function Test() {}
-console.log(typeOf(new Test()));
-//=> 'test'
-```
-
-Returns `object` instead of `arguments`:
-
-```js
-function foo() {
- console.log(typeOf(arguments)) //=> 'object'
-}
-foo();
-```
-
-### [type-of](https://github.com/ForbesLindesay/type-of) lib
-
-Incorrectly returns `object` for generator functions, buffers, `Map`, `Set`, `WeakMap` and `WeakSet`:
-
-```js
-function * foo() {}
-console.log(typeOf(foo));
-//=> 'object'
-console.log(typeOf(new Buffer('')));
-//=> 'object'
-console.log(typeOf(new Map()));
-//=> 'object'
-console.log(typeOf(new Set()));
-//=> 'object'
-console.log(typeOf(new WeakMap()));
-//=> 'object'
-console.log(typeOf(new WeakSet()));
-//=> 'object'
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/micromatch/is-glob) | [homepage](https://github.com/micromatch/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet")
-* [is-number](https://www.npmjs.com/package/is-number): Returns true if a number or string value is a finite number. Useful for regex… [more](https://github.com/jonschlinkert/is-number) | [homepage](https://github.com/jonschlinkert/is-number "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.")
-* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 102 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 3 | [aretecode](https://github.com/aretecode) |
-| 2 | [miguelmota](https://github.com/miguelmota) |
-| 1 | [doowb](https://github.com/doowb) |
-| 1 | [dtothefp](https://github.com/dtothefp) |
-| 1 | [ianstormtaylor](https://github.com/ianstormtaylor) |
-| 1 | [ksheedlo](https://github.com/ksheedlo) |
-| 1 | [pdehaan](https://github.com/pdehaan) |
-| 1 | [laggingreflex](https://github.com/laggingreflex) |
-| 1 | [tunnckoCore](https://github.com/tunnckoCore) |
-| 1 | [xiaofen9](https://github.com/xiaofen9) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2020, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on January 16, 2020._
\ No newline at end of file
diff --git a/node_modules/micromatch/node_modules/kind-of/index.js b/node_modules/micromatch/node_modules/kind-of/index.js
deleted file mode 100644
index dfa799b..0000000
--- a/node_modules/micromatch/node_modules/kind-of/index.js
+++ /dev/null
@@ -1,129 +0,0 @@
-var toString = Object.prototype.toString;
-
-module.exports = function kindOf(val) {
- if (val === void 0) return 'undefined';
- if (val === null) return 'null';
-
- var type = typeof val;
- if (type === 'boolean') return 'boolean';
- if (type === 'string') return 'string';
- if (type === 'number') return 'number';
- if (type === 'symbol') return 'symbol';
- if (type === 'function') {
- return isGeneratorFn(val) ? 'generatorfunction' : 'function';
- }
-
- if (isArray(val)) return 'array';
- if (isBuffer(val)) return 'buffer';
- if (isArguments(val)) return 'arguments';
- if (isDate(val)) return 'date';
- if (isError(val)) return 'error';
- if (isRegexp(val)) return 'regexp';
-
- switch (ctorName(val)) {
- case 'Symbol': return 'symbol';
- case 'Promise': return 'promise';
-
- // Set, Map, WeakSet, WeakMap
- case 'WeakMap': return 'weakmap';
- case 'WeakSet': return 'weakset';
- case 'Map': return 'map';
- case 'Set': return 'set';
-
- // 8-bit typed arrays
- case 'Int8Array': return 'int8array';
- case 'Uint8Array': return 'uint8array';
- case 'Uint8ClampedArray': return 'uint8clampedarray';
-
- // 16-bit typed arrays
- case 'Int16Array': return 'int16array';
- case 'Uint16Array': return 'uint16array';
-
- // 32-bit typed arrays
- case 'Int32Array': return 'int32array';
- case 'Uint32Array': return 'uint32array';
- case 'Float32Array': return 'float32array';
- case 'Float64Array': return 'float64array';
- }
-
- if (isGeneratorObj(val)) {
- return 'generator';
- }
-
- // Non-plain objects
- type = toString.call(val);
- switch (type) {
- case '[object Object]': return 'object';
- // iterators
- case '[object Map Iterator]': return 'mapiterator';
- case '[object Set Iterator]': return 'setiterator';
- case '[object String Iterator]': return 'stringiterator';
- case '[object Array Iterator]': return 'arrayiterator';
- }
-
- // other
- return type.slice(8, -1).toLowerCase().replace(/\s/g, '');
-};
-
-function ctorName(val) {
- return typeof val.constructor === 'function' ? val.constructor.name : null;
-}
-
-function isArray(val) {
- if (Array.isArray) return Array.isArray(val);
- return val instanceof Array;
-}
-
-function isError(val) {
- return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');
-}
-
-function isDate(val) {
- if (val instanceof Date) return true;
- return typeof val.toDateString === 'function'
- && typeof val.getDate === 'function'
- && typeof val.setDate === 'function';
-}
-
-function isRegexp(val) {
- if (val instanceof RegExp) return true;
- return typeof val.flags === 'string'
- && typeof val.ignoreCase === 'boolean'
- && typeof val.multiline === 'boolean'
- && typeof val.global === 'boolean';
-}
-
-function isGeneratorFn(name, val) {
- return ctorName(name) === 'GeneratorFunction';
-}
-
-function isGeneratorObj(val) {
- return typeof val.throw === 'function'
- && typeof val.return === 'function'
- && typeof val.next === 'function';
-}
-
-function isArguments(val) {
- try {
- if (typeof val.length === 'number' && typeof val.callee === 'function') {
- return true;
- }
- } catch (err) {
- if (err.message.indexOf('callee') !== -1) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * If you need to support Safari 5-7 (8-10 yr-old browser),
- * take a look at https://github.com/feross/is-buffer
- */
-
-function isBuffer(val) {
- if (val.constructor && typeof val.constructor.isBuffer === 'function') {
- return val.constructor.isBuffer(val);
- }
- return false;
-}
diff --git a/node_modules/micromatch/node_modules/kind-of/package.json b/node_modules/micromatch/node_modules/kind-of/package.json
deleted file mode 100644
index 5820cad..0000000
--- a/node_modules/micromatch/node_modules/kind-of/package.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
- "name": "kind-of",
- "description": "Get the native type of a value.",
- "version": "6.0.3",
- "homepage": "https://github.com/jonschlinkert/kind-of",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "David Fox-Powell (https://dtothefp.github.io/me)",
- "James (https://twitter.com/aretecode)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Ken Sheedlo (kensheedlo.com)",
- "laggingreflex (https://github.com/laggingreflex)",
- "Miguel Mota (https://miguelmota.com)",
- "Peter deHaan (http://about.me/peterdehaan)",
- "tunnckoCore (https://i.am.charlike.online)"
- ],
- "repository": "jonschlinkert/kind-of",
- "bugs": {
- "url": "https://github.com/jonschlinkert/kind-of/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha",
- "prepublish": "browserify -o browser.js -e index.js -s index --bare"
- },
- "devDependencies": {
- "benchmarked": "^2.0.0",
- "browserify": "^14.4.0",
- "gulp-format-md": "^1.0.0",
- "mocha": "^4.0.1",
- "write": "^1.0.3"
- },
- "keywords": [
- "arguments",
- "array",
- "boolean",
- "check",
- "date",
- "function",
- "is",
- "is-type",
- "is-type-of",
- "kind",
- "kind-of",
- "number",
- "object",
- "of",
- "regexp",
- "string",
- "test",
- "type",
- "type-of",
- "typeof",
- "types"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- },
- "related": {
- "list": [
- "is-glob",
- "is-number",
- "is-primitive"
- ]
- },
- "reflinks": [
- "type-of",
- "typeof",
- "verb"
- ]
- }
-}
diff --git a/node_modules/micromatch/package.json b/node_modules/micromatch/package.json
deleted file mode 100644
index 4475155..0000000
--- a/node_modules/micromatch/package.json
+++ /dev/null
@@ -1,147 +0,0 @@
-{
- "name": "micromatch",
- "description": "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.",
- "version": "3.1.10",
- "homepage": "https://github.com/micromatch/micromatch",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Amila Welihinda (amilajack.com)",
- "Bogdan Chadkin (https://github.com/TrySound)",
- "Brian Woodward (https://twitter.com/doowb)",
- "Devon Govett (http://badassjs.com)",
- "Elan Shanker (https://github.com/es128)",
- "Fabrício Matté (https://ultcombo.js.org)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Martin Kolárik (https://kolarik.sk)",
- "Olsten Larck (https://i.am.charlike.online)",
- "Paul Miller (paulmillr.com)",
- "Tom Byrer (https://github.com/tomByrer)",
- "Tyler Akins (http://rumkin.com)",
- "(https://github.com/DianeLooney)"
- ],
- "repository": "micromatch/micromatch",
- "bugs": {
- "url": "https://github.com/micromatch/micromatch/issues"
- },
- "license": "MIT",
- "files": [
- "index.js",
- "lib"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "devDependencies": {
- "bash-match": "^1.0.2",
- "for-own": "^1.0.0",
- "gulp": "^3.9.1",
- "gulp-format-md": "^1.0.0",
- "gulp-istanbul": "^1.1.3",
- "gulp-mocha": "^5.0.0",
- "gulp-unused": "^0.2.1",
- "is-windows": "^1.0.2",
- "minimatch": "^3.0.4",
- "minimist": "^1.2.0",
- "mocha": "^3.5.3",
- "multimatch": "^2.1.0"
- },
- "keywords": [
- "bash",
- "expand",
- "expansion",
- "expression",
- "file",
- "files",
- "filter",
- "find",
- "glob",
- "globbing",
- "globs",
- "globstar",
- "match",
- "matcher",
- "matches",
- "matching",
- "micromatch",
- "minimatch",
- "multimatch",
- "path",
- "pattern",
- "patterns",
- "regex",
- "regexp",
- "regular",
- "shell",
- "wildcard"
- ],
- "lintDeps": {
- "dependencies": {
- "options": {
- "lock": {
- "snapdragon": "^0.8.1"
- }
- }
- },
- "devDependencies": {
- "files": {
- "options": {
- "ignore": [
- "benchmark/**"
- ]
- }
- }
- }
- },
- "verb": {
- "toc": "collapsible",
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "helpers": [
- "./benchmark/helper.js"
- ],
- "related": {
- "list": [
- "braces",
- "expand-brackets",
- "extglob",
- "fill-range",
- "nanomatch"
- ]
- },
- "lint": {
- "reflinks": true
- },
- "reflinks": [
- "expand-brackets",
- "extglob",
- "glob-object",
- "minimatch",
- "multimatch",
- "snapdragon"
- ]
- }
-}
diff --git a/node_modules/mime-db/HISTORY.md b/node_modules/mime-db/HISTORY.md
deleted file mode 100644
index 7436f64..0000000
--- a/node_modules/mime-db/HISTORY.md
+++ /dev/null
@@ -1,507 +0,0 @@
-1.52.0 / 2022-02-21
-===================
-
- * Add extensions from IANA for more `image/*` types
- * Add extension `.asc` to `application/pgp-keys`
- * Add extensions to various XML types
- * Add new upstream MIME types
-
-1.51.0 / 2021-11-08
-===================
-
- * Add new upstream MIME types
- * Mark `image/vnd.microsoft.icon` as compressible
- * Mark `image/vnd.ms-dds` as compressible
-
-1.50.0 / 2021-09-15
-===================
-
- * Add deprecated iWorks mime types and extensions
- * Add new upstream MIME types
-
-1.49.0 / 2021-07-26
-===================
-
- * Add extension `.trig` to `application/trig`
- * Add new upstream MIME types
-
-1.48.0 / 2021-05-30
-===================
-
- * Add extension `.mvt` to `application/vnd.mapbox-vector-tile`
- * Add new upstream MIME types
- * Mark `text/yaml` as compressible
-
-1.47.0 / 2021-04-01
-===================
-
- * Add new upstream MIME types
- * Remove ambigious extensions from IANA for `application/*+xml` types
- * Update primary extension to `.es` for `application/ecmascript`
-
-1.46.0 / 2021-02-13
-===================
-
- * Add extension `.amr` to `audio/amr`
- * Add extension `.m4s` to `video/iso.segment`
- * Add extension `.opus` to `audio/ogg`
- * Add new upstream MIME types
-
-1.45.0 / 2020-09-22
-===================
-
- * Add `application/ubjson` with extension `.ubj`
- * Add `image/avif` with extension `.avif`
- * Add `image/ktx2` with extension `.ktx2`
- * Add extension `.dbf` to `application/vnd.dbf`
- * Add extension `.rar` to `application/vnd.rar`
- * Add extension `.td` to `application/urc-targetdesc+xml`
- * Add new upstream MIME types
- * Fix extension of `application/vnd.apple.keynote` to be `.key`
-
-1.44.0 / 2020-04-22
-===================
-
- * Add charsets from IANA
- * Add extension `.cjs` to `application/node`
- * Add new upstream MIME types
-
-1.43.0 / 2020-01-05
-===================
-
- * Add `application/x-keepass2` with extension `.kdbx`
- * Add extension `.mxmf` to `audio/mobile-xmf`
- * Add extensions from IANA for `application/*+xml` types
- * Add new upstream MIME types
-
-1.42.0 / 2019-09-25
-===================
-
- * Add `image/vnd.ms-dds` with extension `.dds`
- * Add new upstream MIME types
- * Remove compressible from `multipart/mixed`
-
-1.41.0 / 2019-08-30
-===================
-
- * Add new upstream MIME types
- * Add `application/toml` with extension `.toml`
- * Mark `font/ttf` as compressible
-
-1.40.0 / 2019-04-20
-===================
-
- * Add extensions from IANA for `model/*` types
- * Add `text/mdx` with extension `.mdx`
-
-1.39.0 / 2019-04-04
-===================
-
- * Add extensions `.siv` and `.sieve` to `application/sieve`
- * Add new upstream MIME types
-
-1.38.0 / 2019-02-04
-===================
-
- * Add extension `.nq` to `application/n-quads`
- * Add extension `.nt` to `application/n-triples`
- * Add new upstream MIME types
- * Mark `text/less` as compressible
-
-1.37.0 / 2018-10-19
-===================
-
- * Add extensions to HEIC image types
- * Add new upstream MIME types
-
-1.36.0 / 2018-08-20
-===================
-
- * Add Apple file extensions from IANA
- * Add extensions from IANA for `image/*` types
- * Add new upstream MIME types
-
-1.35.0 / 2018-07-15
-===================
-
- * Add extension `.owl` to `application/rdf+xml`
- * Add new upstream MIME types
- - Removes extension `.woff` from `application/font-woff`
-
-1.34.0 / 2018-06-03
-===================
-
- * Add extension `.csl` to `application/vnd.citationstyles.style+xml`
- * Add extension `.es` to `application/ecmascript`
- * Add new upstream MIME types
- * Add `UTF-8` as default charset for `text/turtle`
- * Mark all XML-derived types as compressible
-
-1.33.0 / 2018-02-15
-===================
-
- * Add extensions from IANA for `message/*` types
- * Add new upstream MIME types
- * Fix some incorrect OOXML types
- * Remove `application/font-woff2`
-
-1.32.0 / 2017-11-29
-===================
-
- * Add new upstream MIME types
- * Update `text/hjson` to registered `application/hjson`
- * Add `text/shex` with extension `.shex`
-
-1.31.0 / 2017-10-25
-===================
-
- * Add `application/raml+yaml` with extension `.raml`
- * Add `application/wasm` with extension `.wasm`
- * Add new `font` type from IANA
- * Add new upstream font extensions
- * Add new upstream MIME types
- * Add extensions for JPEG-2000 images
-
-1.30.0 / 2017-08-27
-===================
-
- * Add `application/vnd.ms-outlook`
- * Add `application/x-arj`
- * Add extension `.mjs` to `application/javascript`
- * Add glTF types and extensions
- * Add new upstream MIME types
- * Add `text/x-org`
- * Add VirtualBox MIME types
- * Fix `source` records for `video/*` types that are IANA
- * Update `font/opentype` to registered `font/otf`
-
-1.29.0 / 2017-07-10
-===================
-
- * Add `application/fido.trusted-apps+json`
- * Add extension `.wadl` to `application/vnd.sun.wadl+xml`
- * Add new upstream MIME types
- * Add `UTF-8` as default charset for `text/css`
-
-1.28.0 / 2017-05-14
-===================
-
- * Add new upstream MIME types
- * Add extension `.gz` to `application/gzip`
- * Update extensions `.md` and `.markdown` to be `text/markdown`
-
-1.27.0 / 2017-03-16
-===================
-
- * Add new upstream MIME types
- * Add `image/apng` with extension `.apng`
-
-1.26.0 / 2017-01-14
-===================
-
- * Add new upstream MIME types
- * Add extension `.geojson` to `application/geo+json`
-
-1.25.0 / 2016-11-11
-===================
-
- * Add new upstream MIME types
-
-1.24.0 / 2016-09-18
-===================
-
- * Add `audio/mp3`
- * Add new upstream MIME types
-
-1.23.0 / 2016-05-01
-===================
-
- * Add new upstream MIME types
- * Add extension `.3gpp` to `audio/3gpp`
-
-1.22.0 / 2016-02-15
-===================
-
- * Add `text/slim`
- * Add extension `.rng` to `application/xml`
- * Add new upstream MIME types
- * Fix extension of `application/dash+xml` to be `.mpd`
- * Update primary extension to `.m4a` for `audio/mp4`
-
-1.21.0 / 2016-01-06
-===================
-
- * Add Google document types
- * Add new upstream MIME types
-
-1.20.0 / 2015-11-10
-===================
-
- * Add `text/x-suse-ymp`
- * Add new upstream MIME types
-
-1.19.0 / 2015-09-17
-===================
-
- * Add `application/vnd.apple.pkpass`
- * Add new upstream MIME types
-
-1.18.0 / 2015-09-03
-===================
-
- * Add new upstream MIME types
-
-1.17.0 / 2015-08-13
-===================
-
- * Add `application/x-msdos-program`
- * Add `audio/g711-0`
- * Add `image/vnd.mozilla.apng`
- * Add extension `.exe` to `application/x-msdos-program`
-
-1.16.0 / 2015-07-29
-===================
-
- * Add `application/vnd.uri-map`
-
-1.15.0 / 2015-07-13
-===================
-
- * Add `application/x-httpd-php`
-
-1.14.0 / 2015-06-25
-===================
-
- * Add `application/scim+json`
- * Add `application/vnd.3gpp.ussd+xml`
- * Add `application/vnd.biopax.rdf+xml`
- * Add `text/x-processing`
-
-1.13.0 / 2015-06-07
-===================
-
- * Add nginx as a source
- * Add `application/x-cocoa`
- * Add `application/x-java-archive-diff`
- * Add `application/x-makeself`
- * Add `application/x-perl`
- * Add `application/x-pilot`
- * Add `application/x-redhat-package-manager`
- * Add `application/x-sea`
- * Add `audio/x-m4a`
- * Add `audio/x-realaudio`
- * Add `image/x-jng`
- * Add `text/mathml`
-
-1.12.0 / 2015-06-05
-===================
-
- * Add `application/bdoc`
- * Add `application/vnd.hyperdrive+json`
- * Add `application/x-bdoc`
- * Add extension `.rtf` to `text/rtf`
-
-1.11.0 / 2015-05-31
-===================
-
- * Add `audio/wav`
- * Add `audio/wave`
- * Add extension `.litcoffee` to `text/coffeescript`
- * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data`
- * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install`
-
-1.10.0 / 2015-05-19
-===================
-
- * Add `application/vnd.balsamiq.bmpr`
- * Add `application/vnd.microsoft.portable-executable`
- * Add `application/x-ns-proxy-autoconfig`
-
-1.9.1 / 2015-04-19
-==================
-
- * Remove `.json` extension from `application/manifest+json`
- - This is causing bugs downstream
-
-1.9.0 / 2015-04-19
-==================
-
- * Add `application/manifest+json`
- * Add `application/vnd.micro+json`
- * Add `image/vnd.zbrush.pcx`
- * Add `image/x-ms-bmp`
-
-1.8.0 / 2015-03-13
-==================
-
- * Add `application/vnd.citationstyles.style+xml`
- * Add `application/vnd.fastcopy-disk-image`
- * Add `application/vnd.gov.sk.xmldatacontainer+xml`
- * Add extension `.jsonld` to `application/ld+json`
-
-1.7.0 / 2015-02-08
-==================
-
- * Add `application/vnd.gerber`
- * Add `application/vnd.msa-disk-image`
-
-1.6.1 / 2015-02-05
-==================
-
- * Community extensions ownership transferred from `node-mime`
-
-1.6.0 / 2015-01-29
-==================
-
- * Add `application/jose`
- * Add `application/jose+json`
- * Add `application/json-seq`
- * Add `application/jwk+json`
- * Add `application/jwk-set+json`
- * Add `application/jwt`
- * Add `application/rdap+json`
- * Add `application/vnd.gov.sk.e-form+xml`
- * Add `application/vnd.ims.imsccv1p3`
-
-1.5.0 / 2014-12-30
-==================
-
- * Add `application/vnd.oracle.resource+json`
- * Fix various invalid MIME type entries
- - `application/mbox+xml`
- - `application/oscp-response`
- - `application/vwg-multiplexed`
- - `audio/g721`
-
-1.4.0 / 2014-12-21
-==================
-
- * Add `application/vnd.ims.imsccv1p2`
- * Fix various invalid MIME type entries
- - `application/vnd-acucobol`
- - `application/vnd-curl`
- - `application/vnd-dart`
- - `application/vnd-dxr`
- - `application/vnd-fdf`
- - `application/vnd-mif`
- - `application/vnd-sema`
- - `application/vnd-wap-wmlc`
- - `application/vnd.adobe.flash-movie`
- - `application/vnd.dece-zip`
- - `application/vnd.dvb_service`
- - `application/vnd.micrografx-igx`
- - `application/vnd.sealed-doc`
- - `application/vnd.sealed-eml`
- - `application/vnd.sealed-mht`
- - `application/vnd.sealed-ppt`
- - `application/vnd.sealed-tiff`
- - `application/vnd.sealed-xls`
- - `application/vnd.sealedmedia.softseal-html`
- - `application/vnd.sealedmedia.softseal-pdf`
- - `application/vnd.wap-slc`
- - `application/vnd.wap-wbxml`
- - `audio/vnd.sealedmedia.softseal-mpeg`
- - `image/vnd-djvu`
- - `image/vnd-svf`
- - `image/vnd-wap-wbmp`
- - `image/vnd.sealed-png`
- - `image/vnd.sealedmedia.softseal-gif`
- - `image/vnd.sealedmedia.softseal-jpg`
- - `model/vnd-dwf`
- - `model/vnd.parasolid.transmit-binary`
- - `model/vnd.parasolid.transmit-text`
- - `text/vnd-a`
- - `text/vnd-curl`
- - `text/vnd.wap-wml`
- * Remove example template MIME types
- - `application/example`
- - `audio/example`
- - `image/example`
- - `message/example`
- - `model/example`
- - `multipart/example`
- - `text/example`
- - `video/example`
-
-1.3.1 / 2014-12-16
-==================
-
- * Fix missing extensions
- - `application/json5`
- - `text/hjson`
-
-1.3.0 / 2014-12-07
-==================
-
- * Add `application/a2l`
- * Add `application/aml`
- * Add `application/atfx`
- * Add `application/atxml`
- * Add `application/cdfx+xml`
- * Add `application/dii`
- * Add `application/json5`
- * Add `application/lxf`
- * Add `application/mf4`
- * Add `application/vnd.apache.thrift.compact`
- * Add `application/vnd.apache.thrift.json`
- * Add `application/vnd.coffeescript`
- * Add `application/vnd.enphase.envoy`
- * Add `application/vnd.ims.imsccv1p1`
- * Add `text/csv-schema`
- * Add `text/hjson`
- * Add `text/markdown`
- * Add `text/yaml`
-
-1.2.0 / 2014-11-09
-==================
-
- * Add `application/cea`
- * Add `application/dit`
- * Add `application/vnd.gov.sk.e-form+zip`
- * Add `application/vnd.tmd.mediaflex.api+xml`
- * Type `application/epub+zip` is now IANA-registered
-
-1.1.2 / 2014-10-23
-==================
-
- * Rebuild database for `application/x-www-form-urlencoded` change
-
-1.1.1 / 2014-10-20
-==================
-
- * Mark `application/x-www-form-urlencoded` as compressible.
-
-1.1.0 / 2014-09-28
-==================
-
- * Add `application/font-woff2`
-
-1.0.3 / 2014-09-25
-==================
-
- * Fix engine requirement in package
-
-1.0.2 / 2014-09-25
-==================
-
- * Add `application/coap-group+json`
- * Add `application/dcd`
- * Add `application/vnd.apache.thrift.binary`
- * Add `image/vnd.tencent.tap`
- * Mark all JSON-derived types as compressible
- * Update `text/vtt` data
-
-1.0.1 / 2014-08-30
-==================
-
- * Fix extension ordering
-
-1.0.0 / 2014-08-30
-==================
-
- * Add `application/atf`
- * Add `application/merge-patch+json`
- * Add `multipart/x-mixed-replace`
- * Add `source: 'apache'` metadata
- * Add `source: 'iana'` metadata
- * Remove badly-assumed charset data
diff --git a/node_modules/mime-db/LICENSE b/node_modules/mime-db/LICENSE
deleted file mode 100644
index 0751cb1..0000000
--- a/node_modules/mime-db/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 Jonathan Ong
-Copyright (c) 2015-2022 Douglas Christopher Wilson
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/mime-db/README.md b/node_modules/mime-db/README.md
deleted file mode 100644
index 5a8fcfe..0000000
--- a/node_modules/mime-db/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# mime-db
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-image]][node-url]
-[![Build Status][ci-image]][ci-url]
-[![Coverage Status][coveralls-image]][coveralls-url]
-
-This is a large database of mime types and information about them.
-It consists of a single, public JSON file and does not include any logic,
-allowing it to remain as un-opinionated as possible with an API.
-It aggregates data from the following sources:
-
-- http://www.iana.org/assignments/media-types/media-types.xhtml
-- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
-- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types
-
-## Installation
-
-```bash
-npm install mime-db
-```
-
-### Database Download
-
-If you're crazy enough to use this in the browser, you can just grab the
-JSON file using [jsDelivr](https://www.jsdelivr.com/). It is recommended to
-replace `master` with [a release tag](https://github.com/jshttp/mime-db/tags)
-as the JSON format may change in the future.
-
-```
-https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json
-```
-
-## Usage
-
-```js
-var db = require('mime-db')
-
-// grab data on .js files
-var data = db['application/javascript']
-```
-
-## Data Structure
-
-The JSON file is a map lookup for lowercased mime types.
-Each mime type has the following properties:
-
-- `.source` - where the mime type is defined.
- If not set, it's probably a custom media type.
- - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)
- - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)
- - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types)
-- `.extensions[]` - known extensions associated with this mime type.
-- `.compressible` - whether a file of this type can be gzipped.
-- `.charset` - the default charset associated with this type, if any.
-
-If unknown, every property could be `undefined`.
-
-## Contributing
-
-To edit the database, only make PRs against `src/custom-types.json` or
-`src/custom-suffix.json`.
-
-The `src/custom-types.json` file is a JSON object with the MIME type as the
-keys and the values being an object with the following keys:
-
-- `compressible` - leave out if you don't know, otherwise `true`/`false` to
- indicate whether the data represented by the type is typically compressible.
-- `extensions` - include an array of file extensions that are associated with
- the type.
-- `notes` - human-readable notes about the type, typically what the type is.
-- `sources` - include an array of URLs of where the MIME type and the associated
- extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source);
- links to type aggregating sites and Wikipedia are _not acceptable_.
-
-To update the build, run `npm run build`.
-
-### Adding Custom Media Types
-
-The best way to get new media types included in this library is to register
-them with the IANA. The community registration procedure is outlined in
-[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types
-registered with the IANA are automatically pulled into this library.
-
-If that is not possible / feasible, they can be added directly here as a
-"custom" type. To do this, it is required to have a primary source that
-definitively lists the media type. If an extension is going to be listed as
-associateed with this media type, the source must definitively link the
-media type and extension as well.
-
-[ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci
-[ci-url]: https://github.com/jshttp/mime-db/actions?query=workflow%3Aci
-[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master
-[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master
-[node-image]: https://badgen.net/npm/node/mime-db
-[node-url]: https://nodejs.org/en/download
-[npm-downloads-image]: https://badgen.net/npm/dm/mime-db
-[npm-url]: https://npmjs.org/package/mime-db
-[npm-version-image]: https://badgen.net/npm/v/mime-db
diff --git a/node_modules/mime-db/db.json b/node_modules/mime-db/db.json
deleted file mode 100644
index eb9c42c..0000000
--- a/node_modules/mime-db/db.json
+++ /dev/null
@@ -1,8519 +0,0 @@
-{
- "application/1d-interleaved-parityfec": {
- "source": "iana"
- },
- "application/3gpdash-qoe-report+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/3gpp-ims+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/3gpphal+json": {
- "source": "iana",
- "compressible": true
- },
- "application/3gpphalforms+json": {
- "source": "iana",
- "compressible": true
- },
- "application/a2l": {
- "source": "iana"
- },
- "application/ace+cbor": {
- "source": "iana"
- },
- "application/activemessage": {
- "source": "iana"
- },
- "application/activity+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-costmap+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-costmapfilter+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-directory+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointcost+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointcostparams+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointprop+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-endpointpropparams+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-error+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-networkmap+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-networkmapfilter+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-updatestreamcontrol+json": {
- "source": "iana",
- "compressible": true
- },
- "application/alto-updatestreamparams+json": {
- "source": "iana",
- "compressible": true
- },
- "application/aml": {
- "source": "iana"
- },
- "application/andrew-inset": {
- "source": "iana",
- "extensions": ["ez"]
- },
- "application/applefile": {
- "source": "iana"
- },
- "application/applixware": {
- "source": "apache",
- "extensions": ["aw"]
- },
- "application/at+jwt": {
- "source": "iana"
- },
- "application/atf": {
- "source": "iana"
- },
- "application/atfx": {
- "source": "iana"
- },
- "application/atom+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["atom"]
- },
- "application/atomcat+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["atomcat"]
- },
- "application/atomdeleted+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["atomdeleted"]
- },
- "application/atomicmail": {
- "source": "iana"
- },
- "application/atomsvc+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["atomsvc"]
- },
- "application/atsc-dwd+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["dwd"]
- },
- "application/atsc-dynamic-event-message": {
- "source": "iana"
- },
- "application/atsc-held+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["held"]
- },
- "application/atsc-rdt+json": {
- "source": "iana",
- "compressible": true
- },
- "application/atsc-rsat+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rsat"]
- },
- "application/atxml": {
- "source": "iana"
- },
- "application/auth-policy+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/bacnet-xdd+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/batch-smtp": {
- "source": "iana"
- },
- "application/bdoc": {
- "compressible": false,
- "extensions": ["bdoc"]
- },
- "application/beep+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/calendar+json": {
- "source": "iana",
- "compressible": true
- },
- "application/calendar+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xcs"]
- },
- "application/call-completion": {
- "source": "iana"
- },
- "application/cals-1840": {
- "source": "iana"
- },
- "application/captive+json": {
- "source": "iana",
- "compressible": true
- },
- "application/cbor": {
- "source": "iana"
- },
- "application/cbor-seq": {
- "source": "iana"
- },
- "application/cccex": {
- "source": "iana"
- },
- "application/ccmp+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/ccxml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ccxml"]
- },
- "application/cdfx+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["cdfx"]
- },
- "application/cdmi-capability": {
- "source": "iana",
- "extensions": ["cdmia"]
- },
- "application/cdmi-container": {
- "source": "iana",
- "extensions": ["cdmic"]
- },
- "application/cdmi-domain": {
- "source": "iana",
- "extensions": ["cdmid"]
- },
- "application/cdmi-object": {
- "source": "iana",
- "extensions": ["cdmio"]
- },
- "application/cdmi-queue": {
- "source": "iana",
- "extensions": ["cdmiq"]
- },
- "application/cdni": {
- "source": "iana"
- },
- "application/cea": {
- "source": "iana"
- },
- "application/cea-2018+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/cellml+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/cfw": {
- "source": "iana"
- },
- "application/city+json": {
- "source": "iana",
- "compressible": true
- },
- "application/clr": {
- "source": "iana"
- },
- "application/clue+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/clue_info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/cms": {
- "source": "iana"
- },
- "application/cnrp+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/coap-group+json": {
- "source": "iana",
- "compressible": true
- },
- "application/coap-payload": {
- "source": "iana"
- },
- "application/commonground": {
- "source": "iana"
- },
- "application/conference-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/cose": {
- "source": "iana"
- },
- "application/cose-key": {
- "source": "iana"
- },
- "application/cose-key-set": {
- "source": "iana"
- },
- "application/cpl+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["cpl"]
- },
- "application/csrattrs": {
- "source": "iana"
- },
- "application/csta+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/cstadata+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/csvm+json": {
- "source": "iana",
- "compressible": true
- },
- "application/cu-seeme": {
- "source": "apache",
- "extensions": ["cu"]
- },
- "application/cwt": {
- "source": "iana"
- },
- "application/cybercash": {
- "source": "iana"
- },
- "application/dart": {
- "compressible": true
- },
- "application/dash+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mpd"]
- },
- "application/dash-patch+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mpp"]
- },
- "application/dashdelta": {
- "source": "iana"
- },
- "application/davmount+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["davmount"]
- },
- "application/dca-rft": {
- "source": "iana"
- },
- "application/dcd": {
- "source": "iana"
- },
- "application/dec-dx": {
- "source": "iana"
- },
- "application/dialog-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/dicom": {
- "source": "iana"
- },
- "application/dicom+json": {
- "source": "iana",
- "compressible": true
- },
- "application/dicom+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/dii": {
- "source": "iana"
- },
- "application/dit": {
- "source": "iana"
- },
- "application/dns": {
- "source": "iana"
- },
- "application/dns+json": {
- "source": "iana",
- "compressible": true
- },
- "application/dns-message": {
- "source": "iana"
- },
- "application/docbook+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["dbk"]
- },
- "application/dots+cbor": {
- "source": "iana"
- },
- "application/dskpp+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/dssc+der": {
- "source": "iana",
- "extensions": ["dssc"]
- },
- "application/dssc+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xdssc"]
- },
- "application/dvcs": {
- "source": "iana"
- },
- "application/ecmascript": {
- "source": "iana",
- "compressible": true,
- "extensions": ["es","ecma"]
- },
- "application/edi-consent": {
- "source": "iana"
- },
- "application/edi-x12": {
- "source": "iana",
- "compressible": false
- },
- "application/edifact": {
- "source": "iana",
- "compressible": false
- },
- "application/efi": {
- "source": "iana"
- },
- "application/elm+json": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/elm+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/emergencycalldata.cap+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/emergencycalldata.comment+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/emergencycalldata.control+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/emergencycalldata.deviceinfo+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/emergencycalldata.ecall.msd": {
- "source": "iana"
- },
- "application/emergencycalldata.providerinfo+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/emergencycalldata.serviceinfo+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/emergencycalldata.subscriberinfo+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/emergencycalldata.veds+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/emma+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["emma"]
- },
- "application/emotionml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["emotionml"]
- },
- "application/encaprtp": {
- "source": "iana"
- },
- "application/epp+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/epub+zip": {
- "source": "iana",
- "compressible": false,
- "extensions": ["epub"]
- },
- "application/eshop": {
- "source": "iana"
- },
- "application/exi": {
- "source": "iana",
- "extensions": ["exi"]
- },
- "application/expect-ct-report+json": {
- "source": "iana",
- "compressible": true
- },
- "application/express": {
- "source": "iana",
- "extensions": ["exp"]
- },
- "application/fastinfoset": {
- "source": "iana"
- },
- "application/fastsoap": {
- "source": "iana"
- },
- "application/fdt+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["fdt"]
- },
- "application/fhir+json": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/fhir+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/fido.trusted-apps+json": {
- "compressible": true
- },
- "application/fits": {
- "source": "iana"
- },
- "application/flexfec": {
- "source": "iana"
- },
- "application/font-sfnt": {
- "source": "iana"
- },
- "application/font-tdpfr": {
- "source": "iana",
- "extensions": ["pfr"]
- },
- "application/font-woff": {
- "source": "iana",
- "compressible": false
- },
- "application/framework-attributes+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/geo+json": {
- "source": "iana",
- "compressible": true,
- "extensions": ["geojson"]
- },
- "application/geo+json-seq": {
- "source": "iana"
- },
- "application/geopackage+sqlite3": {
- "source": "iana"
- },
- "application/geoxacml+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/gltf-buffer": {
- "source": "iana"
- },
- "application/gml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["gml"]
- },
- "application/gpx+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["gpx"]
- },
- "application/gxf": {
- "source": "apache",
- "extensions": ["gxf"]
- },
- "application/gzip": {
- "source": "iana",
- "compressible": false,
- "extensions": ["gz"]
- },
- "application/h224": {
- "source": "iana"
- },
- "application/held+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/hjson": {
- "extensions": ["hjson"]
- },
- "application/http": {
- "source": "iana"
- },
- "application/hyperstudio": {
- "source": "iana",
- "extensions": ["stk"]
- },
- "application/ibe-key-request+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/ibe-pkg-reply+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/ibe-pp-data": {
- "source": "iana"
- },
- "application/iges": {
- "source": "iana"
- },
- "application/im-iscomposing+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/index": {
- "source": "iana"
- },
- "application/index.cmd": {
- "source": "iana"
- },
- "application/index.obj": {
- "source": "iana"
- },
- "application/index.response": {
- "source": "iana"
- },
- "application/index.vnd": {
- "source": "iana"
- },
- "application/inkml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ink","inkml"]
- },
- "application/iotp": {
- "source": "iana"
- },
- "application/ipfix": {
- "source": "iana",
- "extensions": ["ipfix"]
- },
- "application/ipp": {
- "source": "iana"
- },
- "application/isup": {
- "source": "iana"
- },
- "application/its+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["its"]
- },
- "application/java-archive": {
- "source": "apache",
- "compressible": false,
- "extensions": ["jar","war","ear"]
- },
- "application/java-serialized-object": {
- "source": "apache",
- "compressible": false,
- "extensions": ["ser"]
- },
- "application/java-vm": {
- "source": "apache",
- "compressible": false,
- "extensions": ["class"]
- },
- "application/javascript": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["js","mjs"]
- },
- "application/jf2feed+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jose": {
- "source": "iana"
- },
- "application/jose+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jrd+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jscalendar+json": {
- "source": "iana",
- "compressible": true
- },
- "application/json": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["json","map"]
- },
- "application/json-patch+json": {
- "source": "iana",
- "compressible": true
- },
- "application/json-seq": {
- "source": "iana"
- },
- "application/json5": {
- "extensions": ["json5"]
- },
- "application/jsonml+json": {
- "source": "apache",
- "compressible": true,
- "extensions": ["jsonml"]
- },
- "application/jwk+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jwk-set+json": {
- "source": "iana",
- "compressible": true
- },
- "application/jwt": {
- "source": "iana"
- },
- "application/kpml-request+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/kpml-response+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/ld+json": {
- "source": "iana",
- "compressible": true,
- "extensions": ["jsonld"]
- },
- "application/lgr+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["lgr"]
- },
- "application/link-format": {
- "source": "iana"
- },
- "application/load-control+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/lost+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["lostxml"]
- },
- "application/lostsync+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/lpf+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/lxf": {
- "source": "iana"
- },
- "application/mac-binhex40": {
- "source": "iana",
- "extensions": ["hqx"]
- },
- "application/mac-compactpro": {
- "source": "apache",
- "extensions": ["cpt"]
- },
- "application/macwriteii": {
- "source": "iana"
- },
- "application/mads+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mads"]
- },
- "application/manifest+json": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["webmanifest"]
- },
- "application/marc": {
- "source": "iana",
- "extensions": ["mrc"]
- },
- "application/marcxml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mrcx"]
- },
- "application/mathematica": {
- "source": "iana",
- "extensions": ["ma","nb","mb"]
- },
- "application/mathml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mathml"]
- },
- "application/mathml-content+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mathml-presentation+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-associated-procedure-description+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-deregister+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-envelope+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-msk+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-msk-response+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-protection-description+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-reception-report+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-register+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-register-response+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-schedule+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbms-user-service-description+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mbox": {
- "source": "iana",
- "extensions": ["mbox"]
- },
- "application/media-policy-dataset+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mpf"]
- },
- "application/media_control+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mediaservercontrol+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mscml"]
- },
- "application/merge-patch+json": {
- "source": "iana",
- "compressible": true
- },
- "application/metalink+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["metalink"]
- },
- "application/metalink4+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["meta4"]
- },
- "application/mets+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mets"]
- },
- "application/mf4": {
- "source": "iana"
- },
- "application/mikey": {
- "source": "iana"
- },
- "application/mipc": {
- "source": "iana"
- },
- "application/missing-blocks+cbor-seq": {
- "source": "iana"
- },
- "application/mmt-aei+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["maei"]
- },
- "application/mmt-usd+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["musd"]
- },
- "application/mods+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mods"]
- },
- "application/moss-keys": {
- "source": "iana"
- },
- "application/moss-signature": {
- "source": "iana"
- },
- "application/mosskey-data": {
- "source": "iana"
- },
- "application/mosskey-request": {
- "source": "iana"
- },
- "application/mp21": {
- "source": "iana",
- "extensions": ["m21","mp21"]
- },
- "application/mp4": {
- "source": "iana",
- "extensions": ["mp4s","m4p"]
- },
- "application/mpeg4-generic": {
- "source": "iana"
- },
- "application/mpeg4-iod": {
- "source": "iana"
- },
- "application/mpeg4-iod-xmt": {
- "source": "iana"
- },
- "application/mrb-consumer+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/mrb-publish+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/msc-ivr+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/msc-mixer+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/msword": {
- "source": "iana",
- "compressible": false,
- "extensions": ["doc","dot"]
- },
- "application/mud+json": {
- "source": "iana",
- "compressible": true
- },
- "application/multipart-core": {
- "source": "iana"
- },
- "application/mxf": {
- "source": "iana",
- "extensions": ["mxf"]
- },
- "application/n-quads": {
- "source": "iana",
- "extensions": ["nq"]
- },
- "application/n-triples": {
- "source": "iana",
- "extensions": ["nt"]
- },
- "application/nasdata": {
- "source": "iana"
- },
- "application/news-checkgroups": {
- "source": "iana",
- "charset": "US-ASCII"
- },
- "application/news-groupinfo": {
- "source": "iana",
- "charset": "US-ASCII"
- },
- "application/news-transmission": {
- "source": "iana"
- },
- "application/nlsml+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/node": {
- "source": "iana",
- "extensions": ["cjs"]
- },
- "application/nss": {
- "source": "iana"
- },
- "application/oauth-authz-req+jwt": {
- "source": "iana"
- },
- "application/oblivious-dns-message": {
- "source": "iana"
- },
- "application/ocsp-request": {
- "source": "iana"
- },
- "application/ocsp-response": {
- "source": "iana"
- },
- "application/octet-stream": {
- "source": "iana",
- "compressible": false,
- "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]
- },
- "application/oda": {
- "source": "iana",
- "extensions": ["oda"]
- },
- "application/odm+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/odx": {
- "source": "iana"
- },
- "application/oebps-package+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["opf"]
- },
- "application/ogg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["ogx"]
- },
- "application/omdoc+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["omdoc"]
- },
- "application/onenote": {
- "source": "apache",
- "extensions": ["onetoc","onetoc2","onetmp","onepkg"]
- },
- "application/opc-nodeset+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/oscore": {
- "source": "iana"
- },
- "application/oxps": {
- "source": "iana",
- "extensions": ["oxps"]
- },
- "application/p21": {
- "source": "iana"
- },
- "application/p21+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/p2p-overlay+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["relo"]
- },
- "application/parityfec": {
- "source": "iana"
- },
- "application/passport": {
- "source": "iana"
- },
- "application/patch-ops-error+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xer"]
- },
- "application/pdf": {
- "source": "iana",
- "compressible": false,
- "extensions": ["pdf"]
- },
- "application/pdx": {
- "source": "iana"
- },
- "application/pem-certificate-chain": {
- "source": "iana"
- },
- "application/pgp-encrypted": {
- "source": "iana",
- "compressible": false,
- "extensions": ["pgp"]
- },
- "application/pgp-keys": {
- "source": "iana",
- "extensions": ["asc"]
- },
- "application/pgp-signature": {
- "source": "iana",
- "extensions": ["asc","sig"]
- },
- "application/pics-rules": {
- "source": "apache",
- "extensions": ["prf"]
- },
- "application/pidf+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/pidf-diff+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/pkcs10": {
- "source": "iana",
- "extensions": ["p10"]
- },
- "application/pkcs12": {
- "source": "iana"
- },
- "application/pkcs7-mime": {
- "source": "iana",
- "extensions": ["p7m","p7c"]
- },
- "application/pkcs7-signature": {
- "source": "iana",
- "extensions": ["p7s"]
- },
- "application/pkcs8": {
- "source": "iana",
- "extensions": ["p8"]
- },
- "application/pkcs8-encrypted": {
- "source": "iana"
- },
- "application/pkix-attr-cert": {
- "source": "iana",
- "extensions": ["ac"]
- },
- "application/pkix-cert": {
- "source": "iana",
- "extensions": ["cer"]
- },
- "application/pkix-crl": {
- "source": "iana",
- "extensions": ["crl"]
- },
- "application/pkix-pkipath": {
- "source": "iana",
- "extensions": ["pkipath"]
- },
- "application/pkixcmp": {
- "source": "iana",
- "extensions": ["pki"]
- },
- "application/pls+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["pls"]
- },
- "application/poc-settings+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/postscript": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ai","eps","ps"]
- },
- "application/ppsp-tracker+json": {
- "source": "iana",
- "compressible": true
- },
- "application/problem+json": {
- "source": "iana",
- "compressible": true
- },
- "application/problem+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/provenance+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["provx"]
- },
- "application/prs.alvestrand.titrax-sheet": {
- "source": "iana"
- },
- "application/prs.cww": {
- "source": "iana",
- "extensions": ["cww"]
- },
- "application/prs.cyn": {
- "source": "iana",
- "charset": "7-BIT"
- },
- "application/prs.hpub+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/prs.nprend": {
- "source": "iana"
- },
- "application/prs.plucker": {
- "source": "iana"
- },
- "application/prs.rdf-xml-crypt": {
- "source": "iana"
- },
- "application/prs.xsf+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/pskc+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["pskcxml"]
- },
- "application/pvd+json": {
- "source": "iana",
- "compressible": true
- },
- "application/qsig": {
- "source": "iana"
- },
- "application/raml+yaml": {
- "compressible": true,
- "extensions": ["raml"]
- },
- "application/raptorfec": {
- "source": "iana"
- },
- "application/rdap+json": {
- "source": "iana",
- "compressible": true
- },
- "application/rdf+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rdf","owl"]
- },
- "application/reginfo+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rif"]
- },
- "application/relax-ng-compact-syntax": {
- "source": "iana",
- "extensions": ["rnc"]
- },
- "application/remote-printing": {
- "source": "iana"
- },
- "application/reputon+json": {
- "source": "iana",
- "compressible": true
- },
- "application/resource-lists+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rl"]
- },
- "application/resource-lists-diff+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rld"]
- },
- "application/rfc+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/riscos": {
- "source": "iana"
- },
- "application/rlmi+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/rls-services+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rs"]
- },
- "application/route-apd+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rapd"]
- },
- "application/route-s-tsid+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["sls"]
- },
- "application/route-usd+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rusd"]
- },
- "application/rpki-ghostbusters": {
- "source": "iana",
- "extensions": ["gbr"]
- },
- "application/rpki-manifest": {
- "source": "iana",
- "extensions": ["mft"]
- },
- "application/rpki-publication": {
- "source": "iana"
- },
- "application/rpki-roa": {
- "source": "iana",
- "extensions": ["roa"]
- },
- "application/rpki-updown": {
- "source": "iana"
- },
- "application/rsd+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["rsd"]
- },
- "application/rss+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["rss"]
- },
- "application/rtf": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rtf"]
- },
- "application/rtploopback": {
- "source": "iana"
- },
- "application/rtx": {
- "source": "iana"
- },
- "application/samlassertion+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/samlmetadata+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/sarif+json": {
- "source": "iana",
- "compressible": true
- },
- "application/sarif-external-properties+json": {
- "source": "iana",
- "compressible": true
- },
- "application/sbe": {
- "source": "iana"
- },
- "application/sbml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["sbml"]
- },
- "application/scaip+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/scim+json": {
- "source": "iana",
- "compressible": true
- },
- "application/scvp-cv-request": {
- "source": "iana",
- "extensions": ["scq"]
- },
- "application/scvp-cv-response": {
- "source": "iana",
- "extensions": ["scs"]
- },
- "application/scvp-vp-request": {
- "source": "iana",
- "extensions": ["spq"]
- },
- "application/scvp-vp-response": {
- "source": "iana",
- "extensions": ["spp"]
- },
- "application/sdp": {
- "source": "iana",
- "extensions": ["sdp"]
- },
- "application/secevent+jwt": {
- "source": "iana"
- },
- "application/senml+cbor": {
- "source": "iana"
- },
- "application/senml+json": {
- "source": "iana",
- "compressible": true
- },
- "application/senml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["senmlx"]
- },
- "application/senml-etch+cbor": {
- "source": "iana"
- },
- "application/senml-etch+json": {
- "source": "iana",
- "compressible": true
- },
- "application/senml-exi": {
- "source": "iana"
- },
- "application/sensml+cbor": {
- "source": "iana"
- },
- "application/sensml+json": {
- "source": "iana",
- "compressible": true
- },
- "application/sensml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["sensmlx"]
- },
- "application/sensml-exi": {
- "source": "iana"
- },
- "application/sep+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/sep-exi": {
- "source": "iana"
- },
- "application/session-info": {
- "source": "iana"
- },
- "application/set-payment": {
- "source": "iana"
- },
- "application/set-payment-initiation": {
- "source": "iana",
- "extensions": ["setpay"]
- },
- "application/set-registration": {
- "source": "iana"
- },
- "application/set-registration-initiation": {
- "source": "iana",
- "extensions": ["setreg"]
- },
- "application/sgml": {
- "source": "iana"
- },
- "application/sgml-open-catalog": {
- "source": "iana"
- },
- "application/shf+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["shf"]
- },
- "application/sieve": {
- "source": "iana",
- "extensions": ["siv","sieve"]
- },
- "application/simple-filter+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/simple-message-summary": {
- "source": "iana"
- },
- "application/simplesymbolcontainer": {
- "source": "iana"
- },
- "application/sipc": {
- "source": "iana"
- },
- "application/slate": {
- "source": "iana"
- },
- "application/smil": {
- "source": "iana"
- },
- "application/smil+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["smi","smil"]
- },
- "application/smpte336m": {
- "source": "iana"
- },
- "application/soap+fastinfoset": {
- "source": "iana"
- },
- "application/soap+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/sparql-query": {
- "source": "iana",
- "extensions": ["rq"]
- },
- "application/sparql-results+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["srx"]
- },
- "application/spdx+json": {
- "source": "iana",
- "compressible": true
- },
- "application/spirits-event+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/sql": {
- "source": "iana"
- },
- "application/srgs": {
- "source": "iana",
- "extensions": ["gram"]
- },
- "application/srgs+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["grxml"]
- },
- "application/sru+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["sru"]
- },
- "application/ssdl+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["ssdl"]
- },
- "application/ssml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ssml"]
- },
- "application/stix+json": {
- "source": "iana",
- "compressible": true
- },
- "application/swid+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["swidtag"]
- },
- "application/tamp-apex-update": {
- "source": "iana"
- },
- "application/tamp-apex-update-confirm": {
- "source": "iana"
- },
- "application/tamp-community-update": {
- "source": "iana"
- },
- "application/tamp-community-update-confirm": {
- "source": "iana"
- },
- "application/tamp-error": {
- "source": "iana"
- },
- "application/tamp-sequence-adjust": {
- "source": "iana"
- },
- "application/tamp-sequence-adjust-confirm": {
- "source": "iana"
- },
- "application/tamp-status-query": {
- "source": "iana"
- },
- "application/tamp-status-response": {
- "source": "iana"
- },
- "application/tamp-update": {
- "source": "iana"
- },
- "application/tamp-update-confirm": {
- "source": "iana"
- },
- "application/tar": {
- "compressible": true
- },
- "application/taxii+json": {
- "source": "iana",
- "compressible": true
- },
- "application/td+json": {
- "source": "iana",
- "compressible": true
- },
- "application/tei+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["tei","teicorpus"]
- },
- "application/tetra_isi": {
- "source": "iana"
- },
- "application/thraud+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["tfi"]
- },
- "application/timestamp-query": {
- "source": "iana"
- },
- "application/timestamp-reply": {
- "source": "iana"
- },
- "application/timestamped-data": {
- "source": "iana",
- "extensions": ["tsd"]
- },
- "application/tlsrpt+gzip": {
- "source": "iana"
- },
- "application/tlsrpt+json": {
- "source": "iana",
- "compressible": true
- },
- "application/tnauthlist": {
- "source": "iana"
- },
- "application/token-introspection+jwt": {
- "source": "iana"
- },
- "application/toml": {
- "compressible": true,
- "extensions": ["toml"]
- },
- "application/trickle-ice-sdpfrag": {
- "source": "iana"
- },
- "application/trig": {
- "source": "iana",
- "extensions": ["trig"]
- },
- "application/ttml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ttml"]
- },
- "application/tve-trigger": {
- "source": "iana"
- },
- "application/tzif": {
- "source": "iana"
- },
- "application/tzif-leap": {
- "source": "iana"
- },
- "application/ubjson": {
- "compressible": false,
- "extensions": ["ubj"]
- },
- "application/ulpfec": {
- "source": "iana"
- },
- "application/urc-grpsheet+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/urc-ressheet+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rsheet"]
- },
- "application/urc-targetdesc+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["td"]
- },
- "application/urc-uisocketdesc+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vcard+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vcard+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vemmi": {
- "source": "iana"
- },
- "application/vividence.scriptfile": {
- "source": "apache"
- },
- "application/vnd.1000minds.decision-model+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["1km"]
- },
- "application/vnd.3gpp-prose+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp-prose-pc3ch+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp-v2x-local-service-information": {
- "source": "iana"
- },
- "application/vnd.3gpp.5gnas": {
- "source": "iana"
- },
- "application/vnd.3gpp.access-transfer-events+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.bsf+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.gmop+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.gtpc": {
- "source": "iana"
- },
- "application/vnd.3gpp.interworking-data": {
- "source": "iana"
- },
- "application/vnd.3gpp.lpp": {
- "source": "iana"
- },
- "application/vnd.3gpp.mc-signalling-ear": {
- "source": "iana"
- },
- "application/vnd.3gpp.mcdata-affiliation-command+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcdata-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcdata-payload": {
- "source": "iana"
- },
- "application/vnd.3gpp.mcdata-service-config+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcdata-signalling": {
- "source": "iana"
- },
- "application/vnd.3gpp.mcdata-ue-config+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcdata-user-profile+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcptt-affiliation-command+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcptt-floor-request+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcptt-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcptt-location-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcptt-mbms-usage-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcptt-service-config+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcptt-signed+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcptt-ue-config+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcptt-ue-init-config+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcptt-user-profile+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcvideo-affiliation-command+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcvideo-affiliation-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcvideo-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcvideo-location-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcvideo-service-config+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcvideo-transmission-request+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcvideo-ue-config+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mcvideo-user-profile+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.mid-call+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.ngap": {
- "source": "iana"
- },
- "application/vnd.3gpp.pfcp": {
- "source": "iana"
- },
- "application/vnd.3gpp.pic-bw-large": {
- "source": "iana",
- "extensions": ["plb"]
- },
- "application/vnd.3gpp.pic-bw-small": {
- "source": "iana",
- "extensions": ["psb"]
- },
- "application/vnd.3gpp.pic-bw-var": {
- "source": "iana",
- "extensions": ["pvb"]
- },
- "application/vnd.3gpp.s1ap": {
- "source": "iana"
- },
- "application/vnd.3gpp.sms": {
- "source": "iana"
- },
- "application/vnd.3gpp.sms+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.srvcc-ext+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.srvcc-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.state-and-event-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp.ussd+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp2.bcmcsinfo+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.3gpp2.sms": {
- "source": "iana"
- },
- "application/vnd.3gpp2.tcap": {
- "source": "iana",
- "extensions": ["tcap"]
- },
- "application/vnd.3lightssoftware.imagescal": {
- "source": "iana"
- },
- "application/vnd.3m.post-it-notes": {
- "source": "iana",
- "extensions": ["pwn"]
- },
- "application/vnd.accpac.simply.aso": {
- "source": "iana",
- "extensions": ["aso"]
- },
- "application/vnd.accpac.simply.imp": {
- "source": "iana",
- "extensions": ["imp"]
- },
- "application/vnd.acucobol": {
- "source": "iana",
- "extensions": ["acu"]
- },
- "application/vnd.acucorp": {
- "source": "iana",
- "extensions": ["atc","acutc"]
- },
- "application/vnd.adobe.air-application-installer-package+zip": {
- "source": "apache",
- "compressible": false,
- "extensions": ["air"]
- },
- "application/vnd.adobe.flash.movie": {
- "source": "iana"
- },
- "application/vnd.adobe.formscentral.fcdt": {
- "source": "iana",
- "extensions": ["fcdt"]
- },
- "application/vnd.adobe.fxp": {
- "source": "iana",
- "extensions": ["fxp","fxpl"]
- },
- "application/vnd.adobe.partial-upload": {
- "source": "iana"
- },
- "application/vnd.adobe.xdp+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xdp"]
- },
- "application/vnd.adobe.xfdf": {
- "source": "iana",
- "extensions": ["xfdf"]
- },
- "application/vnd.aether.imp": {
- "source": "iana"
- },
- "application/vnd.afpc.afplinedata": {
- "source": "iana"
- },
- "application/vnd.afpc.afplinedata-pagedef": {
- "source": "iana"
- },
- "application/vnd.afpc.cmoca-cmresource": {
- "source": "iana"
- },
- "application/vnd.afpc.foca-charset": {
- "source": "iana"
- },
- "application/vnd.afpc.foca-codedfont": {
- "source": "iana"
- },
- "application/vnd.afpc.foca-codepage": {
- "source": "iana"
- },
- "application/vnd.afpc.modca": {
- "source": "iana"
- },
- "application/vnd.afpc.modca-cmtable": {
- "source": "iana"
- },
- "application/vnd.afpc.modca-formdef": {
- "source": "iana"
- },
- "application/vnd.afpc.modca-mediummap": {
- "source": "iana"
- },
- "application/vnd.afpc.modca-objectcontainer": {
- "source": "iana"
- },
- "application/vnd.afpc.modca-overlay": {
- "source": "iana"
- },
- "application/vnd.afpc.modca-pagesegment": {
- "source": "iana"
- },
- "application/vnd.age": {
- "source": "iana",
- "extensions": ["age"]
- },
- "application/vnd.ah-barcode": {
- "source": "iana"
- },
- "application/vnd.ahead.space": {
- "source": "iana",
- "extensions": ["ahead"]
- },
- "application/vnd.airzip.filesecure.azf": {
- "source": "iana",
- "extensions": ["azf"]
- },
- "application/vnd.airzip.filesecure.azs": {
- "source": "iana",
- "extensions": ["azs"]
- },
- "application/vnd.amadeus+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.amazon.ebook": {
- "source": "apache",
- "extensions": ["azw"]
- },
- "application/vnd.amazon.mobi8-ebook": {
- "source": "iana"
- },
- "application/vnd.americandynamics.acc": {
- "source": "iana",
- "extensions": ["acc"]
- },
- "application/vnd.amiga.ami": {
- "source": "iana",
- "extensions": ["ami"]
- },
- "application/vnd.amundsen.maze+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.android.ota": {
- "source": "iana"
- },
- "application/vnd.android.package-archive": {
- "source": "apache",
- "compressible": false,
- "extensions": ["apk"]
- },
- "application/vnd.anki": {
- "source": "iana"
- },
- "application/vnd.anser-web-certificate-issue-initiation": {
- "source": "iana",
- "extensions": ["cii"]
- },
- "application/vnd.anser-web-funds-transfer-initiation": {
- "source": "apache",
- "extensions": ["fti"]
- },
- "application/vnd.antix.game-component": {
- "source": "iana",
- "extensions": ["atx"]
- },
- "application/vnd.apache.arrow.file": {
- "source": "iana"
- },
- "application/vnd.apache.arrow.stream": {
- "source": "iana"
- },
- "application/vnd.apache.thrift.binary": {
- "source": "iana"
- },
- "application/vnd.apache.thrift.compact": {
- "source": "iana"
- },
- "application/vnd.apache.thrift.json": {
- "source": "iana"
- },
- "application/vnd.api+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.aplextor.warrp+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.apothekende.reservation+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.apple.installer+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mpkg"]
- },
- "application/vnd.apple.keynote": {
- "source": "iana",
- "extensions": ["key"]
- },
- "application/vnd.apple.mpegurl": {
- "source": "iana",
- "extensions": ["m3u8"]
- },
- "application/vnd.apple.numbers": {
- "source": "iana",
- "extensions": ["numbers"]
- },
- "application/vnd.apple.pages": {
- "source": "iana",
- "extensions": ["pages"]
- },
- "application/vnd.apple.pkpass": {
- "compressible": false,
- "extensions": ["pkpass"]
- },
- "application/vnd.arastra.swi": {
- "source": "iana"
- },
- "application/vnd.aristanetworks.swi": {
- "source": "iana",
- "extensions": ["swi"]
- },
- "application/vnd.artisan+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.artsquare": {
- "source": "iana"
- },
- "application/vnd.astraea-software.iota": {
- "source": "iana",
- "extensions": ["iota"]
- },
- "application/vnd.audiograph": {
- "source": "iana",
- "extensions": ["aep"]
- },
- "application/vnd.autopackage": {
- "source": "iana"
- },
- "application/vnd.avalon+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.avistar+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.balsamiq.bmml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["bmml"]
- },
- "application/vnd.balsamiq.bmpr": {
- "source": "iana"
- },
- "application/vnd.banana-accounting": {
- "source": "iana"
- },
- "application/vnd.bbf.usp.error": {
- "source": "iana"
- },
- "application/vnd.bbf.usp.msg": {
- "source": "iana"
- },
- "application/vnd.bbf.usp.msg+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.bekitzur-stech+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.bint.med-content": {
- "source": "iana"
- },
- "application/vnd.biopax.rdf+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.blink-idb-value-wrapper": {
- "source": "iana"
- },
- "application/vnd.blueice.multipass": {
- "source": "iana",
- "extensions": ["mpm"]
- },
- "application/vnd.bluetooth.ep.oob": {
- "source": "iana"
- },
- "application/vnd.bluetooth.le.oob": {
- "source": "iana"
- },
- "application/vnd.bmi": {
- "source": "iana",
- "extensions": ["bmi"]
- },
- "application/vnd.bpf": {
- "source": "iana"
- },
- "application/vnd.bpf3": {
- "source": "iana"
- },
- "application/vnd.businessobjects": {
- "source": "iana",
- "extensions": ["rep"]
- },
- "application/vnd.byu.uapi+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.cab-jscript": {
- "source": "iana"
- },
- "application/vnd.canon-cpdl": {
- "source": "iana"
- },
- "application/vnd.canon-lips": {
- "source": "iana"
- },
- "application/vnd.capasystems-pg+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.cendio.thinlinc.clientconf": {
- "source": "iana"
- },
- "application/vnd.century-systems.tcp_stream": {
- "source": "iana"
- },
- "application/vnd.chemdraw+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["cdxml"]
- },
- "application/vnd.chess-pgn": {
- "source": "iana"
- },
- "application/vnd.chipnuts.karaoke-mmd": {
- "source": "iana",
- "extensions": ["mmd"]
- },
- "application/vnd.ciedi": {
- "source": "iana"
- },
- "application/vnd.cinderella": {
- "source": "iana",
- "extensions": ["cdy"]
- },
- "application/vnd.cirpack.isdn-ext": {
- "source": "iana"
- },
- "application/vnd.citationstyles.style+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["csl"]
- },
- "application/vnd.claymore": {
- "source": "iana",
- "extensions": ["cla"]
- },
- "application/vnd.cloanto.rp9": {
- "source": "iana",
- "extensions": ["rp9"]
- },
- "application/vnd.clonk.c4group": {
- "source": "iana",
- "extensions": ["c4g","c4d","c4f","c4p","c4u"]
- },
- "application/vnd.cluetrust.cartomobile-config": {
- "source": "iana",
- "extensions": ["c11amc"]
- },
- "application/vnd.cluetrust.cartomobile-config-pkg": {
- "source": "iana",
- "extensions": ["c11amz"]
- },
- "application/vnd.coffeescript": {
- "source": "iana"
- },
- "application/vnd.collabio.xodocuments.document": {
- "source": "iana"
- },
- "application/vnd.collabio.xodocuments.document-template": {
- "source": "iana"
- },
- "application/vnd.collabio.xodocuments.presentation": {
- "source": "iana"
- },
- "application/vnd.collabio.xodocuments.presentation-template": {
- "source": "iana"
- },
- "application/vnd.collabio.xodocuments.spreadsheet": {
- "source": "iana"
- },
- "application/vnd.collabio.xodocuments.spreadsheet-template": {
- "source": "iana"
- },
- "application/vnd.collection+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.collection.doc+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.collection.next+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.comicbook+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.comicbook-rar": {
- "source": "iana"
- },
- "application/vnd.commerce-battelle": {
- "source": "iana"
- },
- "application/vnd.commonspace": {
- "source": "iana",
- "extensions": ["csp"]
- },
- "application/vnd.contact.cmsg": {
- "source": "iana",
- "extensions": ["cdbcmsg"]
- },
- "application/vnd.coreos.ignition+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.cosmocaller": {
- "source": "iana",
- "extensions": ["cmc"]
- },
- "application/vnd.crick.clicker": {
- "source": "iana",
- "extensions": ["clkx"]
- },
- "application/vnd.crick.clicker.keyboard": {
- "source": "iana",
- "extensions": ["clkk"]
- },
- "application/vnd.crick.clicker.palette": {
- "source": "iana",
- "extensions": ["clkp"]
- },
- "application/vnd.crick.clicker.template": {
- "source": "iana",
- "extensions": ["clkt"]
- },
- "application/vnd.crick.clicker.wordbank": {
- "source": "iana",
- "extensions": ["clkw"]
- },
- "application/vnd.criticaltools.wbs+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["wbs"]
- },
- "application/vnd.cryptii.pipe+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.crypto-shade-file": {
- "source": "iana"
- },
- "application/vnd.cryptomator.encrypted": {
- "source": "iana"
- },
- "application/vnd.cryptomator.vault": {
- "source": "iana"
- },
- "application/vnd.ctc-posml": {
- "source": "iana",
- "extensions": ["pml"]
- },
- "application/vnd.ctct.ws+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.cups-pdf": {
- "source": "iana"
- },
- "application/vnd.cups-postscript": {
- "source": "iana"
- },
- "application/vnd.cups-ppd": {
- "source": "iana",
- "extensions": ["ppd"]
- },
- "application/vnd.cups-raster": {
- "source": "iana"
- },
- "application/vnd.cups-raw": {
- "source": "iana"
- },
- "application/vnd.curl": {
- "source": "iana"
- },
- "application/vnd.curl.car": {
- "source": "apache",
- "extensions": ["car"]
- },
- "application/vnd.curl.pcurl": {
- "source": "apache",
- "extensions": ["pcurl"]
- },
- "application/vnd.cyan.dean.root+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.cybank": {
- "source": "iana"
- },
- "application/vnd.cyclonedx+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.cyclonedx+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.d2l.coursepackage1p0+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.d3m-dataset": {
- "source": "iana"
- },
- "application/vnd.d3m-problem": {
- "source": "iana"
- },
- "application/vnd.dart": {
- "source": "iana",
- "compressible": true,
- "extensions": ["dart"]
- },
- "application/vnd.data-vision.rdz": {
- "source": "iana",
- "extensions": ["rdz"]
- },
- "application/vnd.datapackage+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dataresource+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dbf": {
- "source": "iana",
- "extensions": ["dbf"]
- },
- "application/vnd.debian.binary-package": {
- "source": "iana"
- },
- "application/vnd.dece.data": {
- "source": "iana",
- "extensions": ["uvf","uvvf","uvd","uvvd"]
- },
- "application/vnd.dece.ttml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["uvt","uvvt"]
- },
- "application/vnd.dece.unspecified": {
- "source": "iana",
- "extensions": ["uvx","uvvx"]
- },
- "application/vnd.dece.zip": {
- "source": "iana",
- "extensions": ["uvz","uvvz"]
- },
- "application/vnd.denovo.fcselayout-link": {
- "source": "iana",
- "extensions": ["fe_launch"]
- },
- "application/vnd.desmume.movie": {
- "source": "iana"
- },
- "application/vnd.dir-bi.plate-dl-nosuffix": {
- "source": "iana"
- },
- "application/vnd.dm.delegation+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dna": {
- "source": "iana",
- "extensions": ["dna"]
- },
- "application/vnd.document+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dolby.mlp": {
- "source": "apache",
- "extensions": ["mlp"]
- },
- "application/vnd.dolby.mobile.1": {
- "source": "iana"
- },
- "application/vnd.dolby.mobile.2": {
- "source": "iana"
- },
- "application/vnd.doremir.scorecloud-binary-document": {
- "source": "iana"
- },
- "application/vnd.dpgraph": {
- "source": "iana",
- "extensions": ["dpg"]
- },
- "application/vnd.dreamfactory": {
- "source": "iana",
- "extensions": ["dfac"]
- },
- "application/vnd.drive+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ds-keypoint": {
- "source": "apache",
- "extensions": ["kpxx"]
- },
- "application/vnd.dtg.local": {
- "source": "iana"
- },
- "application/vnd.dtg.local.flash": {
- "source": "iana"
- },
- "application/vnd.dtg.local.html": {
- "source": "iana"
- },
- "application/vnd.dvb.ait": {
- "source": "iana",
- "extensions": ["ait"]
- },
- "application/vnd.dvb.dvbisl+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dvb.dvbj": {
- "source": "iana"
- },
- "application/vnd.dvb.esgcontainer": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcdftnotifaccess": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcesgaccess": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcesgaccess2": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcesgpdd": {
- "source": "iana"
- },
- "application/vnd.dvb.ipdcroaming": {
- "source": "iana"
- },
- "application/vnd.dvb.iptv.alfec-base": {
- "source": "iana"
- },
- "application/vnd.dvb.iptv.alfec-enhancement": {
- "source": "iana"
- },
- "application/vnd.dvb.notif-aggregate-root+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dvb.notif-container+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dvb.notif-generic+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dvb.notif-ia-msglist+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dvb.notif-ia-registration-request+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dvb.notif-ia-registration-response+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dvb.notif-init+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.dvb.pfr": {
- "source": "iana"
- },
- "application/vnd.dvb.service": {
- "source": "iana",
- "extensions": ["svc"]
- },
- "application/vnd.dxr": {
- "source": "iana"
- },
- "application/vnd.dynageo": {
- "source": "iana",
- "extensions": ["geo"]
- },
- "application/vnd.dzr": {
- "source": "iana"
- },
- "application/vnd.easykaraoke.cdgdownload": {
- "source": "iana"
- },
- "application/vnd.ecdis-update": {
- "source": "iana"
- },
- "application/vnd.ecip.rlp": {
- "source": "iana"
- },
- "application/vnd.eclipse.ditto+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ecowin.chart": {
- "source": "iana",
- "extensions": ["mag"]
- },
- "application/vnd.ecowin.filerequest": {
- "source": "iana"
- },
- "application/vnd.ecowin.fileupdate": {
- "source": "iana"
- },
- "application/vnd.ecowin.series": {
- "source": "iana"
- },
- "application/vnd.ecowin.seriesrequest": {
- "source": "iana"
- },
- "application/vnd.ecowin.seriesupdate": {
- "source": "iana"
- },
- "application/vnd.efi.img": {
- "source": "iana"
- },
- "application/vnd.efi.iso": {
- "source": "iana"
- },
- "application/vnd.emclient.accessrequest+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.enliven": {
- "source": "iana",
- "extensions": ["nml"]
- },
- "application/vnd.enphase.envoy": {
- "source": "iana"
- },
- "application/vnd.eprints.data+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.epson.esf": {
- "source": "iana",
- "extensions": ["esf"]
- },
- "application/vnd.epson.msf": {
- "source": "iana",
- "extensions": ["msf"]
- },
- "application/vnd.epson.quickanime": {
- "source": "iana",
- "extensions": ["qam"]
- },
- "application/vnd.epson.salt": {
- "source": "iana",
- "extensions": ["slt"]
- },
- "application/vnd.epson.ssf": {
- "source": "iana",
- "extensions": ["ssf"]
- },
- "application/vnd.ericsson.quickcall": {
- "source": "iana"
- },
- "application/vnd.espass-espass+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.eszigno3+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["es3","et3"]
- },
- "application/vnd.etsi.aoc+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.asic-e+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.etsi.asic-s+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.etsi.cug+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.iptvcommand+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.iptvdiscovery+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.iptvprofile+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.iptvsad-bc+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.iptvsad-cod+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.iptvsad-npvr+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.iptvservice+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.iptvsync+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.iptvueprofile+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.mcid+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.mheg5": {
- "source": "iana"
- },
- "application/vnd.etsi.overload-control-policy-dataset+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.pstn+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.sci+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.simservs+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.timestamp-token": {
- "source": "iana"
- },
- "application/vnd.etsi.tsl+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.etsi.tsl.der": {
- "source": "iana"
- },
- "application/vnd.eu.kasparian.car+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.eudora.data": {
- "source": "iana"
- },
- "application/vnd.evolv.ecig.profile": {
- "source": "iana"
- },
- "application/vnd.evolv.ecig.settings": {
- "source": "iana"
- },
- "application/vnd.evolv.ecig.theme": {
- "source": "iana"
- },
- "application/vnd.exstream-empower+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.exstream-package": {
- "source": "iana"
- },
- "application/vnd.ezpix-album": {
- "source": "iana",
- "extensions": ["ez2"]
- },
- "application/vnd.ezpix-package": {
- "source": "iana",
- "extensions": ["ez3"]
- },
- "application/vnd.f-secure.mobile": {
- "source": "iana"
- },
- "application/vnd.familysearch.gedcom+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.fastcopy-disk-image": {
- "source": "iana"
- },
- "application/vnd.fdf": {
- "source": "iana",
- "extensions": ["fdf"]
- },
- "application/vnd.fdsn.mseed": {
- "source": "iana",
- "extensions": ["mseed"]
- },
- "application/vnd.fdsn.seed": {
- "source": "iana",
- "extensions": ["seed","dataless"]
- },
- "application/vnd.ffsns": {
- "source": "iana"
- },
- "application/vnd.ficlab.flb+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.filmit.zfc": {
- "source": "iana"
- },
- "application/vnd.fints": {
- "source": "iana"
- },
- "application/vnd.firemonkeys.cloudcell": {
- "source": "iana"
- },
- "application/vnd.flographit": {
- "source": "iana",
- "extensions": ["gph"]
- },
- "application/vnd.fluxtime.clip": {
- "source": "iana",
- "extensions": ["ftc"]
- },
- "application/vnd.font-fontforge-sfd": {
- "source": "iana"
- },
- "application/vnd.framemaker": {
- "source": "iana",
- "extensions": ["fm","frame","maker","book"]
- },
- "application/vnd.frogans.fnc": {
- "source": "iana",
- "extensions": ["fnc"]
- },
- "application/vnd.frogans.ltf": {
- "source": "iana",
- "extensions": ["ltf"]
- },
- "application/vnd.fsc.weblaunch": {
- "source": "iana",
- "extensions": ["fsc"]
- },
- "application/vnd.fujifilm.fb.docuworks": {
- "source": "iana"
- },
- "application/vnd.fujifilm.fb.docuworks.binder": {
- "source": "iana"
- },
- "application/vnd.fujifilm.fb.docuworks.container": {
- "source": "iana"
- },
- "application/vnd.fujifilm.fb.jfi+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.fujitsu.oasys": {
- "source": "iana",
- "extensions": ["oas"]
- },
- "application/vnd.fujitsu.oasys2": {
- "source": "iana",
- "extensions": ["oa2"]
- },
- "application/vnd.fujitsu.oasys3": {
- "source": "iana",
- "extensions": ["oa3"]
- },
- "application/vnd.fujitsu.oasysgp": {
- "source": "iana",
- "extensions": ["fg5"]
- },
- "application/vnd.fujitsu.oasysprs": {
- "source": "iana",
- "extensions": ["bh2"]
- },
- "application/vnd.fujixerox.art-ex": {
- "source": "iana"
- },
- "application/vnd.fujixerox.art4": {
- "source": "iana"
- },
- "application/vnd.fujixerox.ddd": {
- "source": "iana",
- "extensions": ["ddd"]
- },
- "application/vnd.fujixerox.docuworks": {
- "source": "iana",
- "extensions": ["xdw"]
- },
- "application/vnd.fujixerox.docuworks.binder": {
- "source": "iana",
- "extensions": ["xbd"]
- },
- "application/vnd.fujixerox.docuworks.container": {
- "source": "iana"
- },
- "application/vnd.fujixerox.hbpl": {
- "source": "iana"
- },
- "application/vnd.fut-misnet": {
- "source": "iana"
- },
- "application/vnd.futoin+cbor": {
- "source": "iana"
- },
- "application/vnd.futoin+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.fuzzysheet": {
- "source": "iana",
- "extensions": ["fzs"]
- },
- "application/vnd.genomatix.tuxedo": {
- "source": "iana",
- "extensions": ["txd"]
- },
- "application/vnd.gentics.grd+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.geo+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.geocube+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.geogebra.file": {
- "source": "iana",
- "extensions": ["ggb"]
- },
- "application/vnd.geogebra.slides": {
- "source": "iana"
- },
- "application/vnd.geogebra.tool": {
- "source": "iana",
- "extensions": ["ggt"]
- },
- "application/vnd.geometry-explorer": {
- "source": "iana",
- "extensions": ["gex","gre"]
- },
- "application/vnd.geonext": {
- "source": "iana",
- "extensions": ["gxt"]
- },
- "application/vnd.geoplan": {
- "source": "iana",
- "extensions": ["g2w"]
- },
- "application/vnd.geospace": {
- "source": "iana",
- "extensions": ["g3w"]
- },
- "application/vnd.gerber": {
- "source": "iana"
- },
- "application/vnd.globalplatform.card-content-mgt": {
- "source": "iana"
- },
- "application/vnd.globalplatform.card-content-mgt-response": {
- "source": "iana"
- },
- "application/vnd.gmx": {
- "source": "iana",
- "extensions": ["gmx"]
- },
- "application/vnd.google-apps.document": {
- "compressible": false,
- "extensions": ["gdoc"]
- },
- "application/vnd.google-apps.presentation": {
- "compressible": false,
- "extensions": ["gslides"]
- },
- "application/vnd.google-apps.spreadsheet": {
- "compressible": false,
- "extensions": ["gsheet"]
- },
- "application/vnd.google-earth.kml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["kml"]
- },
- "application/vnd.google-earth.kmz": {
- "source": "iana",
- "compressible": false,
- "extensions": ["kmz"]
- },
- "application/vnd.gov.sk.e-form+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.gov.sk.e-form+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.gov.sk.xmldatacontainer+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.grafeq": {
- "source": "iana",
- "extensions": ["gqf","gqs"]
- },
- "application/vnd.gridmp": {
- "source": "iana"
- },
- "application/vnd.groove-account": {
- "source": "iana",
- "extensions": ["gac"]
- },
- "application/vnd.groove-help": {
- "source": "iana",
- "extensions": ["ghf"]
- },
- "application/vnd.groove-identity-message": {
- "source": "iana",
- "extensions": ["gim"]
- },
- "application/vnd.groove-injector": {
- "source": "iana",
- "extensions": ["grv"]
- },
- "application/vnd.groove-tool-message": {
- "source": "iana",
- "extensions": ["gtm"]
- },
- "application/vnd.groove-tool-template": {
- "source": "iana",
- "extensions": ["tpl"]
- },
- "application/vnd.groove-vcard": {
- "source": "iana",
- "extensions": ["vcg"]
- },
- "application/vnd.hal+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hal+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["hal"]
- },
- "application/vnd.handheld-entertainment+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["zmm"]
- },
- "application/vnd.hbci": {
- "source": "iana",
- "extensions": ["hbci"]
- },
- "application/vnd.hc+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hcl-bireports": {
- "source": "iana"
- },
- "application/vnd.hdt": {
- "source": "iana"
- },
- "application/vnd.heroku+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hhe.lesson-player": {
- "source": "iana",
- "extensions": ["les"]
- },
- "application/vnd.hl7cda+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/vnd.hl7v2+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/vnd.hp-hpgl": {
- "source": "iana",
- "extensions": ["hpgl"]
- },
- "application/vnd.hp-hpid": {
- "source": "iana",
- "extensions": ["hpid"]
- },
- "application/vnd.hp-hps": {
- "source": "iana",
- "extensions": ["hps"]
- },
- "application/vnd.hp-jlyt": {
- "source": "iana",
- "extensions": ["jlt"]
- },
- "application/vnd.hp-pcl": {
- "source": "iana",
- "extensions": ["pcl"]
- },
- "application/vnd.hp-pclxl": {
- "source": "iana",
- "extensions": ["pclxl"]
- },
- "application/vnd.httphone": {
- "source": "iana"
- },
- "application/vnd.hydrostatix.sof-data": {
- "source": "iana",
- "extensions": ["sfd-hdstx"]
- },
- "application/vnd.hyper+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hyper-item+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hyperdrive+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.hzn-3d-crossword": {
- "source": "iana"
- },
- "application/vnd.ibm.afplinedata": {
- "source": "iana"
- },
- "application/vnd.ibm.electronic-media": {
- "source": "iana"
- },
- "application/vnd.ibm.minipay": {
- "source": "iana",
- "extensions": ["mpy"]
- },
- "application/vnd.ibm.modcap": {
- "source": "iana",
- "extensions": ["afp","listafp","list3820"]
- },
- "application/vnd.ibm.rights-management": {
- "source": "iana",
- "extensions": ["irm"]
- },
- "application/vnd.ibm.secure-container": {
- "source": "iana",
- "extensions": ["sc"]
- },
- "application/vnd.iccprofile": {
- "source": "iana",
- "extensions": ["icc","icm"]
- },
- "application/vnd.ieee.1905": {
- "source": "iana"
- },
- "application/vnd.igloader": {
- "source": "iana",
- "extensions": ["igl"]
- },
- "application/vnd.imagemeter.folder+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.imagemeter.image+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.immervision-ivp": {
- "source": "iana",
- "extensions": ["ivp"]
- },
- "application/vnd.immervision-ivu": {
- "source": "iana",
- "extensions": ["ivu"]
- },
- "application/vnd.ims.imsccv1p1": {
- "source": "iana"
- },
- "application/vnd.ims.imsccv1p2": {
- "source": "iana"
- },
- "application/vnd.ims.imsccv1p3": {
- "source": "iana"
- },
- "application/vnd.ims.lis.v2.result+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolconsumerprofile+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolproxy+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolproxy.id+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolsettings+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ims.lti.v2.toolsettings.simple+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.informedcontrol.rms+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.informix-visionary": {
- "source": "iana"
- },
- "application/vnd.infotech.project": {
- "source": "iana"
- },
- "application/vnd.infotech.project+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.innopath.wamp.notification": {
- "source": "iana"
- },
- "application/vnd.insors.igm": {
- "source": "iana",
- "extensions": ["igm"]
- },
- "application/vnd.intercon.formnet": {
- "source": "iana",
- "extensions": ["xpw","xpx"]
- },
- "application/vnd.intergeo": {
- "source": "iana",
- "extensions": ["i2g"]
- },
- "application/vnd.intertrust.digibox": {
- "source": "iana"
- },
- "application/vnd.intertrust.nncp": {
- "source": "iana"
- },
- "application/vnd.intu.qbo": {
- "source": "iana",
- "extensions": ["qbo"]
- },
- "application/vnd.intu.qfx": {
- "source": "iana",
- "extensions": ["qfx"]
- },
- "application/vnd.iptc.g2.catalogitem+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.iptc.g2.conceptitem+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.iptc.g2.knowledgeitem+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.iptc.g2.newsitem+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.iptc.g2.newsmessage+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.iptc.g2.packageitem+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.iptc.g2.planningitem+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ipunplugged.rcprofile": {
- "source": "iana",
- "extensions": ["rcprofile"]
- },
- "application/vnd.irepository.package+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["irp"]
- },
- "application/vnd.is-xpr": {
- "source": "iana",
- "extensions": ["xpr"]
- },
- "application/vnd.isac.fcs": {
- "source": "iana",
- "extensions": ["fcs"]
- },
- "application/vnd.iso11783-10+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.jam": {
- "source": "iana",
- "extensions": ["jam"]
- },
- "application/vnd.japannet-directory-service": {
- "source": "iana"
- },
- "application/vnd.japannet-jpnstore-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-payment-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-registration": {
- "source": "iana"
- },
- "application/vnd.japannet-registration-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-setstore-wakeup": {
- "source": "iana"
- },
- "application/vnd.japannet-verification": {
- "source": "iana"
- },
- "application/vnd.japannet-verification-wakeup": {
- "source": "iana"
- },
- "application/vnd.jcp.javame.midlet-rms": {
- "source": "iana",
- "extensions": ["rms"]
- },
- "application/vnd.jisp": {
- "source": "iana",
- "extensions": ["jisp"]
- },
- "application/vnd.joost.joda-archive": {
- "source": "iana",
- "extensions": ["joda"]
- },
- "application/vnd.jsk.isdn-ngn": {
- "source": "iana"
- },
- "application/vnd.kahootz": {
- "source": "iana",
- "extensions": ["ktz","ktr"]
- },
- "application/vnd.kde.karbon": {
- "source": "iana",
- "extensions": ["karbon"]
- },
- "application/vnd.kde.kchart": {
- "source": "iana",
- "extensions": ["chrt"]
- },
- "application/vnd.kde.kformula": {
- "source": "iana",
- "extensions": ["kfo"]
- },
- "application/vnd.kde.kivio": {
- "source": "iana",
- "extensions": ["flw"]
- },
- "application/vnd.kde.kontour": {
- "source": "iana",
- "extensions": ["kon"]
- },
- "application/vnd.kde.kpresenter": {
- "source": "iana",
- "extensions": ["kpr","kpt"]
- },
- "application/vnd.kde.kspread": {
- "source": "iana",
- "extensions": ["ksp"]
- },
- "application/vnd.kde.kword": {
- "source": "iana",
- "extensions": ["kwd","kwt"]
- },
- "application/vnd.kenameaapp": {
- "source": "iana",
- "extensions": ["htke"]
- },
- "application/vnd.kidspiration": {
- "source": "iana",
- "extensions": ["kia"]
- },
- "application/vnd.kinar": {
- "source": "iana",
- "extensions": ["kne","knp"]
- },
- "application/vnd.koan": {
- "source": "iana",
- "extensions": ["skp","skd","skt","skm"]
- },
- "application/vnd.kodak-descriptor": {
- "source": "iana",
- "extensions": ["sse"]
- },
- "application/vnd.las": {
- "source": "iana"
- },
- "application/vnd.las.las+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.las.las+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["lasxml"]
- },
- "application/vnd.laszip": {
- "source": "iana"
- },
- "application/vnd.leap+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.liberty-request+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.llamagraphics.life-balance.desktop": {
- "source": "iana",
- "extensions": ["lbd"]
- },
- "application/vnd.llamagraphics.life-balance.exchange+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["lbe"]
- },
- "application/vnd.logipipe.circuit+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.loom": {
- "source": "iana"
- },
- "application/vnd.lotus-1-2-3": {
- "source": "iana",
- "extensions": ["123"]
- },
- "application/vnd.lotus-approach": {
- "source": "iana",
- "extensions": ["apr"]
- },
- "application/vnd.lotus-freelance": {
- "source": "iana",
- "extensions": ["pre"]
- },
- "application/vnd.lotus-notes": {
- "source": "iana",
- "extensions": ["nsf"]
- },
- "application/vnd.lotus-organizer": {
- "source": "iana",
- "extensions": ["org"]
- },
- "application/vnd.lotus-screencam": {
- "source": "iana",
- "extensions": ["scm"]
- },
- "application/vnd.lotus-wordpro": {
- "source": "iana",
- "extensions": ["lwp"]
- },
- "application/vnd.macports.portpkg": {
- "source": "iana",
- "extensions": ["portpkg"]
- },
- "application/vnd.mapbox-vector-tile": {
- "source": "iana",
- "extensions": ["mvt"]
- },
- "application/vnd.marlin.drm.actiontoken+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.marlin.drm.conftoken+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.marlin.drm.license+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.marlin.drm.mdcf": {
- "source": "iana"
- },
- "application/vnd.mason+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.maxar.archive.3tz+zip": {
- "source": "iana",
- "compressible": false
- },
- "application/vnd.maxmind.maxmind-db": {
- "source": "iana"
- },
- "application/vnd.mcd": {
- "source": "iana",
- "extensions": ["mcd"]
- },
- "application/vnd.medcalcdata": {
- "source": "iana",
- "extensions": ["mc1"]
- },
- "application/vnd.mediastation.cdkey": {
- "source": "iana",
- "extensions": ["cdkey"]
- },
- "application/vnd.meridian-slingshot": {
- "source": "iana"
- },
- "application/vnd.mfer": {
- "source": "iana",
- "extensions": ["mwf"]
- },
- "application/vnd.mfmp": {
- "source": "iana",
- "extensions": ["mfm"]
- },
- "application/vnd.micro+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.micrografx.flo": {
- "source": "iana",
- "extensions": ["flo"]
- },
- "application/vnd.micrografx.igx": {
- "source": "iana",
- "extensions": ["igx"]
- },
- "application/vnd.microsoft.portable-executable": {
- "source": "iana"
- },
- "application/vnd.microsoft.windows.thumbnail-cache": {
- "source": "iana"
- },
- "application/vnd.miele+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.mif": {
- "source": "iana",
- "extensions": ["mif"]
- },
- "application/vnd.minisoft-hp3000-save": {
- "source": "iana"
- },
- "application/vnd.mitsubishi.misty-guard.trustweb": {
- "source": "iana"
- },
- "application/vnd.mobius.daf": {
- "source": "iana",
- "extensions": ["daf"]
- },
- "application/vnd.mobius.dis": {
- "source": "iana",
- "extensions": ["dis"]
- },
- "application/vnd.mobius.mbk": {
- "source": "iana",
- "extensions": ["mbk"]
- },
- "application/vnd.mobius.mqy": {
- "source": "iana",
- "extensions": ["mqy"]
- },
- "application/vnd.mobius.msl": {
- "source": "iana",
- "extensions": ["msl"]
- },
- "application/vnd.mobius.plc": {
- "source": "iana",
- "extensions": ["plc"]
- },
- "application/vnd.mobius.txf": {
- "source": "iana",
- "extensions": ["txf"]
- },
- "application/vnd.mophun.application": {
- "source": "iana",
- "extensions": ["mpn"]
- },
- "application/vnd.mophun.certificate": {
- "source": "iana",
- "extensions": ["mpc"]
- },
- "application/vnd.motorola.flexsuite": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.adsi": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.fis": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.gotap": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.kmr": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.ttc": {
- "source": "iana"
- },
- "application/vnd.motorola.flexsuite.wem": {
- "source": "iana"
- },
- "application/vnd.motorola.iprm": {
- "source": "iana"
- },
- "application/vnd.mozilla.xul+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xul"]
- },
- "application/vnd.ms-3mfdocument": {
- "source": "iana"
- },
- "application/vnd.ms-artgalry": {
- "source": "iana",
- "extensions": ["cil"]
- },
- "application/vnd.ms-asf": {
- "source": "iana"
- },
- "application/vnd.ms-cab-compressed": {
- "source": "iana",
- "extensions": ["cab"]
- },
- "application/vnd.ms-color.iccprofile": {
- "source": "apache"
- },
- "application/vnd.ms-excel": {
- "source": "iana",
- "compressible": false,
- "extensions": ["xls","xlm","xla","xlc","xlt","xlw"]
- },
- "application/vnd.ms-excel.addin.macroenabled.12": {
- "source": "iana",
- "extensions": ["xlam"]
- },
- "application/vnd.ms-excel.sheet.binary.macroenabled.12": {
- "source": "iana",
- "extensions": ["xlsb"]
- },
- "application/vnd.ms-excel.sheet.macroenabled.12": {
- "source": "iana",
- "extensions": ["xlsm"]
- },
- "application/vnd.ms-excel.template.macroenabled.12": {
- "source": "iana",
- "extensions": ["xltm"]
- },
- "application/vnd.ms-fontobject": {
- "source": "iana",
- "compressible": true,
- "extensions": ["eot"]
- },
- "application/vnd.ms-htmlhelp": {
- "source": "iana",
- "extensions": ["chm"]
- },
- "application/vnd.ms-ims": {
- "source": "iana",
- "extensions": ["ims"]
- },
- "application/vnd.ms-lrm": {
- "source": "iana",
- "extensions": ["lrm"]
- },
- "application/vnd.ms-office.activex+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ms-officetheme": {
- "source": "iana",
- "extensions": ["thmx"]
- },
- "application/vnd.ms-opentype": {
- "source": "apache",
- "compressible": true
- },
- "application/vnd.ms-outlook": {
- "compressible": false,
- "extensions": ["msg"]
- },
- "application/vnd.ms-package.obfuscated-opentype": {
- "source": "apache"
- },
- "application/vnd.ms-pki.seccat": {
- "source": "apache",
- "extensions": ["cat"]
- },
- "application/vnd.ms-pki.stl": {
- "source": "apache",
- "extensions": ["stl"]
- },
- "application/vnd.ms-playready.initiator+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ms-powerpoint": {
- "source": "iana",
- "compressible": false,
- "extensions": ["ppt","pps","pot"]
- },
- "application/vnd.ms-powerpoint.addin.macroenabled.12": {
- "source": "iana",
- "extensions": ["ppam"]
- },
- "application/vnd.ms-powerpoint.presentation.macroenabled.12": {
- "source": "iana",
- "extensions": ["pptm"]
- },
- "application/vnd.ms-powerpoint.slide.macroenabled.12": {
- "source": "iana",
- "extensions": ["sldm"]
- },
- "application/vnd.ms-powerpoint.slideshow.macroenabled.12": {
- "source": "iana",
- "extensions": ["ppsm"]
- },
- "application/vnd.ms-powerpoint.template.macroenabled.12": {
- "source": "iana",
- "extensions": ["potm"]
- },
- "application/vnd.ms-printdevicecapabilities+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ms-printing.printticket+xml": {
- "source": "apache",
- "compressible": true
- },
- "application/vnd.ms-printschematicket+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ms-project": {
- "source": "iana",
- "extensions": ["mpp","mpt"]
- },
- "application/vnd.ms-tnef": {
- "source": "iana"
- },
- "application/vnd.ms-windows.devicepairing": {
- "source": "iana"
- },
- "application/vnd.ms-windows.nwprinting.oob": {
- "source": "iana"
- },
- "application/vnd.ms-windows.printerpairing": {
- "source": "iana"
- },
- "application/vnd.ms-windows.wsd.oob": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.lic-chlg-req": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.lic-resp": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.meter-chlg-req": {
- "source": "iana"
- },
- "application/vnd.ms-wmdrm.meter-resp": {
- "source": "iana"
- },
- "application/vnd.ms-word.document.macroenabled.12": {
- "source": "iana",
- "extensions": ["docm"]
- },
- "application/vnd.ms-word.template.macroenabled.12": {
- "source": "iana",
- "extensions": ["dotm"]
- },
- "application/vnd.ms-works": {
- "source": "iana",
- "extensions": ["wps","wks","wcm","wdb"]
- },
- "application/vnd.ms-wpl": {
- "source": "iana",
- "extensions": ["wpl"]
- },
- "application/vnd.ms-xpsdocument": {
- "source": "iana",
- "compressible": false,
- "extensions": ["xps"]
- },
- "application/vnd.msa-disk-image": {
- "source": "iana"
- },
- "application/vnd.mseq": {
- "source": "iana",
- "extensions": ["mseq"]
- },
- "application/vnd.msign": {
- "source": "iana"
- },
- "application/vnd.multiad.creator": {
- "source": "iana"
- },
- "application/vnd.multiad.creator.cif": {
- "source": "iana"
- },
- "application/vnd.music-niff": {
- "source": "iana"
- },
- "application/vnd.musician": {
- "source": "iana",
- "extensions": ["mus"]
- },
- "application/vnd.muvee.style": {
- "source": "iana",
- "extensions": ["msty"]
- },
- "application/vnd.mynfc": {
- "source": "iana",
- "extensions": ["taglet"]
- },
- "application/vnd.nacamar.ybrid+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.ncd.control": {
- "source": "iana"
- },
- "application/vnd.ncd.reference": {
- "source": "iana"
- },
- "application/vnd.nearst.inv+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.nebumind.line": {
- "source": "iana"
- },
- "application/vnd.nervana": {
- "source": "iana"
- },
- "application/vnd.netfpx": {
- "source": "iana"
- },
- "application/vnd.neurolanguage.nlu": {
- "source": "iana",
- "extensions": ["nlu"]
- },
- "application/vnd.nimn": {
- "source": "iana"
- },
- "application/vnd.nintendo.nitro.rom": {
- "source": "iana"
- },
- "application/vnd.nintendo.snes.rom": {
- "source": "iana"
- },
- "application/vnd.nitf": {
- "source": "iana",
- "extensions": ["ntf","nitf"]
- },
- "application/vnd.noblenet-directory": {
- "source": "iana",
- "extensions": ["nnd"]
- },
- "application/vnd.noblenet-sealer": {
- "source": "iana",
- "extensions": ["nns"]
- },
- "application/vnd.noblenet-web": {
- "source": "iana",
- "extensions": ["nnw"]
- },
- "application/vnd.nokia.catalogs": {
- "source": "iana"
- },
- "application/vnd.nokia.conml+wbxml": {
- "source": "iana"
- },
- "application/vnd.nokia.conml+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.nokia.iptv.config+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.nokia.isds-radio-presets": {
- "source": "iana"
- },
- "application/vnd.nokia.landmark+wbxml": {
- "source": "iana"
- },
- "application/vnd.nokia.landmark+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.nokia.landmarkcollection+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.nokia.n-gage.ac+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ac"]
- },
- "application/vnd.nokia.n-gage.data": {
- "source": "iana",
- "extensions": ["ngdat"]
- },
- "application/vnd.nokia.n-gage.symbian.install": {
- "source": "iana",
- "extensions": ["n-gage"]
- },
- "application/vnd.nokia.ncd": {
- "source": "iana"
- },
- "application/vnd.nokia.pcd+wbxml": {
- "source": "iana"
- },
- "application/vnd.nokia.pcd+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.nokia.radio-preset": {
- "source": "iana",
- "extensions": ["rpst"]
- },
- "application/vnd.nokia.radio-presets": {
- "source": "iana",
- "extensions": ["rpss"]
- },
- "application/vnd.novadigm.edm": {
- "source": "iana",
- "extensions": ["edm"]
- },
- "application/vnd.novadigm.edx": {
- "source": "iana",
- "extensions": ["edx"]
- },
- "application/vnd.novadigm.ext": {
- "source": "iana",
- "extensions": ["ext"]
- },
- "application/vnd.ntt-local.content-share": {
- "source": "iana"
- },
- "application/vnd.ntt-local.file-transfer": {
- "source": "iana"
- },
- "application/vnd.ntt-local.ogw_remote-access": {
- "source": "iana"
- },
- "application/vnd.ntt-local.sip-ta_remote": {
- "source": "iana"
- },
- "application/vnd.ntt-local.sip-ta_tcp_stream": {
- "source": "iana"
- },
- "application/vnd.oasis.opendocument.chart": {
- "source": "iana",
- "extensions": ["odc"]
- },
- "application/vnd.oasis.opendocument.chart-template": {
- "source": "iana",
- "extensions": ["otc"]
- },
- "application/vnd.oasis.opendocument.database": {
- "source": "iana",
- "extensions": ["odb"]
- },
- "application/vnd.oasis.opendocument.formula": {
- "source": "iana",
- "extensions": ["odf"]
- },
- "application/vnd.oasis.opendocument.formula-template": {
- "source": "iana",
- "extensions": ["odft"]
- },
- "application/vnd.oasis.opendocument.graphics": {
- "source": "iana",
- "compressible": false,
- "extensions": ["odg"]
- },
- "application/vnd.oasis.opendocument.graphics-template": {
- "source": "iana",
- "extensions": ["otg"]
- },
- "application/vnd.oasis.opendocument.image": {
- "source": "iana",
- "extensions": ["odi"]
- },
- "application/vnd.oasis.opendocument.image-template": {
- "source": "iana",
- "extensions": ["oti"]
- },
- "application/vnd.oasis.opendocument.presentation": {
- "source": "iana",
- "compressible": false,
- "extensions": ["odp"]
- },
- "application/vnd.oasis.opendocument.presentation-template": {
- "source": "iana",
- "extensions": ["otp"]
- },
- "application/vnd.oasis.opendocument.spreadsheet": {
- "source": "iana",
- "compressible": false,
- "extensions": ["ods"]
- },
- "application/vnd.oasis.opendocument.spreadsheet-template": {
- "source": "iana",
- "extensions": ["ots"]
- },
- "application/vnd.oasis.opendocument.text": {
- "source": "iana",
- "compressible": false,
- "extensions": ["odt"]
- },
- "application/vnd.oasis.opendocument.text-master": {
- "source": "iana",
- "extensions": ["odm"]
- },
- "application/vnd.oasis.opendocument.text-template": {
- "source": "iana",
- "extensions": ["ott"]
- },
- "application/vnd.oasis.opendocument.text-web": {
- "source": "iana",
- "extensions": ["oth"]
- },
- "application/vnd.obn": {
- "source": "iana"
- },
- "application/vnd.ocf+cbor": {
- "source": "iana"
- },
- "application/vnd.oci.image.manifest.v1+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oftn.l10n+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.contentaccessdownload+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.contentaccessstreaming+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.cspg-hexbinary": {
- "source": "iana"
- },
- "application/vnd.oipf.dae.svg+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.dae.xhtml+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.mippvcontrolmessage+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.pae.gem": {
- "source": "iana"
- },
- "application/vnd.oipf.spdiscovery+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.spdlist+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.ueprofile+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oipf.userprofile+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.olpc-sugar": {
- "source": "iana",
- "extensions": ["xo"]
- },
- "application/vnd.oma-scws-config": {
- "source": "iana"
- },
- "application/vnd.oma-scws-http-request": {
- "source": "iana"
- },
- "application/vnd.oma-scws-http-response": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.associated-procedure-parameter+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.bcast.drm-trigger+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.bcast.imd+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.bcast.ltkm": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.notification+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.bcast.provisioningtrigger": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.sgboot": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.sgdd+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.bcast.sgdu": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.simple-symbol-container": {
- "source": "iana"
- },
- "application/vnd.oma.bcast.smartcard-trigger+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.bcast.sprov+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.bcast.stkm": {
- "source": "iana"
- },
- "application/vnd.oma.cab-address-book+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.cab-feature-handler+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.cab-pcc+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.cab-subs-invite+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.cab-user-prefs+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.dcd": {
- "source": "iana"
- },
- "application/vnd.oma.dcdc": {
- "source": "iana"
- },
- "application/vnd.oma.dd2+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["dd2"]
- },
- "application/vnd.oma.drm.risd+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.group-usage-list+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.lwm2m+cbor": {
- "source": "iana"
- },
- "application/vnd.oma.lwm2m+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.lwm2m+tlv": {
- "source": "iana"
- },
- "application/vnd.oma.pal+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.poc.detailed-progress-report+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.poc.final-report+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.poc.groups+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.poc.invocation-descriptor+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.poc.optimized-progress-report+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.push": {
- "source": "iana"
- },
- "application/vnd.oma.scidm.messages+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oma.xcap-directory+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.omads-email+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/vnd.omads-file+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/vnd.omads-folder+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/vnd.omaloc-supl-init": {
- "source": "iana"
- },
- "application/vnd.onepager": {
- "source": "iana"
- },
- "application/vnd.onepagertamp": {
- "source": "iana"
- },
- "application/vnd.onepagertamx": {
- "source": "iana"
- },
- "application/vnd.onepagertat": {
- "source": "iana"
- },
- "application/vnd.onepagertatp": {
- "source": "iana"
- },
- "application/vnd.onepagertatx": {
- "source": "iana"
- },
- "application/vnd.openblox.game+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["obgx"]
- },
- "application/vnd.openblox.game-binary": {
- "source": "iana"
- },
- "application/vnd.openeye.oeb": {
- "source": "iana"
- },
- "application/vnd.openofficeorg.extension": {
- "source": "apache",
- "extensions": ["oxt"]
- },
- "application/vnd.openstreetmap.data+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["osm"]
- },
- "application/vnd.opentimestamps.ots": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.custom-properties+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.drawing+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.extended-properties+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.presentation": {
- "source": "iana",
- "compressible": false,
- "extensions": ["pptx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slide": {
- "source": "iana",
- "extensions": ["sldx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slideshow": {
- "source": "iana",
- "extensions": ["ppsx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.template": {
- "source": "iana",
- "extensions": ["potx"]
- },
- "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
- "source": "iana",
- "compressible": false,
- "extensions": ["xlsx"]
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.template": {
- "source": "iana",
- "extensions": ["xltx"]
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.theme+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.themeoverride+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.vmldrawing": {
- "source": "iana"
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document": {
- "source": "iana",
- "compressible": false,
- "extensions": ["docx"]
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.template": {
- "source": "iana",
- "extensions": ["dotx"]
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-package.core-properties+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.openxmlformats-package.relationships+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oracle.resource+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.orange.indata": {
- "source": "iana"
- },
- "application/vnd.osa.netdeploy": {
- "source": "iana"
- },
- "application/vnd.osgeo.mapguide.package": {
- "source": "iana",
- "extensions": ["mgp"]
- },
- "application/vnd.osgi.bundle": {
- "source": "iana"
- },
- "application/vnd.osgi.dp": {
- "source": "iana",
- "extensions": ["dp"]
- },
- "application/vnd.osgi.subsystem": {
- "source": "iana",
- "extensions": ["esa"]
- },
- "application/vnd.otps.ct-kip+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.oxli.countgraph": {
- "source": "iana"
- },
- "application/vnd.pagerduty+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.palm": {
- "source": "iana",
- "extensions": ["pdb","pqa","oprc"]
- },
- "application/vnd.panoply": {
- "source": "iana"
- },
- "application/vnd.paos.xml": {
- "source": "iana"
- },
- "application/vnd.patentdive": {
- "source": "iana"
- },
- "application/vnd.patientecommsdoc": {
- "source": "iana"
- },
- "application/vnd.pawaafile": {
- "source": "iana",
- "extensions": ["paw"]
- },
- "application/vnd.pcos": {
- "source": "iana"
- },
- "application/vnd.pg.format": {
- "source": "iana",
- "extensions": ["str"]
- },
- "application/vnd.pg.osasli": {
- "source": "iana",
- "extensions": ["ei6"]
- },
- "application/vnd.piaccess.application-licence": {
- "source": "iana"
- },
- "application/vnd.picsel": {
- "source": "iana",
- "extensions": ["efif"]
- },
- "application/vnd.pmi.widget": {
- "source": "iana",
- "extensions": ["wg"]
- },
- "application/vnd.poc.group-advertisement+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.pocketlearn": {
- "source": "iana",
- "extensions": ["plf"]
- },
- "application/vnd.powerbuilder6": {
- "source": "iana",
- "extensions": ["pbd"]
- },
- "application/vnd.powerbuilder6-s": {
- "source": "iana"
- },
- "application/vnd.powerbuilder7": {
- "source": "iana"
- },
- "application/vnd.powerbuilder7-s": {
- "source": "iana"
- },
- "application/vnd.powerbuilder75": {
- "source": "iana"
- },
- "application/vnd.powerbuilder75-s": {
- "source": "iana"
- },
- "application/vnd.preminet": {
- "source": "iana"
- },
- "application/vnd.previewsystems.box": {
- "source": "iana",
- "extensions": ["box"]
- },
- "application/vnd.proteus.magazine": {
- "source": "iana",
- "extensions": ["mgz"]
- },
- "application/vnd.psfs": {
- "source": "iana"
- },
- "application/vnd.publishare-delta-tree": {
- "source": "iana",
- "extensions": ["qps"]
- },
- "application/vnd.pvi.ptid1": {
- "source": "iana",
- "extensions": ["ptid"]
- },
- "application/vnd.pwg-multiplexed": {
- "source": "iana"
- },
- "application/vnd.pwg-xhtml-print+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.qualcomm.brew-app-res": {
- "source": "iana"
- },
- "application/vnd.quarantainenet": {
- "source": "iana"
- },
- "application/vnd.quark.quarkxpress": {
- "source": "iana",
- "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"]
- },
- "application/vnd.quobject-quoxdocument": {
- "source": "iana"
- },
- "application/vnd.radisys.moml+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-audit+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-audit-conf+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-audit-conn+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-audit-dialog+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-audit-stream+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-conf+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-dialog+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-dialog-base+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-dialog-fax-detect+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-dialog-group+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-dialog-speech+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.radisys.msml-dialog-transform+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.rainstor.data": {
- "source": "iana"
- },
- "application/vnd.rapid": {
- "source": "iana"
- },
- "application/vnd.rar": {
- "source": "iana",
- "extensions": ["rar"]
- },
- "application/vnd.realvnc.bed": {
- "source": "iana",
- "extensions": ["bed"]
- },
- "application/vnd.recordare.musicxml": {
- "source": "iana",
- "extensions": ["mxl"]
- },
- "application/vnd.recordare.musicxml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["musicxml"]
- },
- "application/vnd.renlearn.rlprint": {
- "source": "iana"
- },
- "application/vnd.resilient.logic": {
- "source": "iana"
- },
- "application/vnd.restful+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.rig.cryptonote": {
- "source": "iana",
- "extensions": ["cryptonote"]
- },
- "application/vnd.rim.cod": {
- "source": "apache",
- "extensions": ["cod"]
- },
- "application/vnd.rn-realmedia": {
- "source": "apache",
- "extensions": ["rm"]
- },
- "application/vnd.rn-realmedia-vbr": {
- "source": "apache",
- "extensions": ["rmvb"]
- },
- "application/vnd.route66.link66+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["link66"]
- },
- "application/vnd.rs-274x": {
- "source": "iana"
- },
- "application/vnd.ruckus.download": {
- "source": "iana"
- },
- "application/vnd.s3sms": {
- "source": "iana"
- },
- "application/vnd.sailingtracker.track": {
- "source": "iana",
- "extensions": ["st"]
- },
- "application/vnd.sar": {
- "source": "iana"
- },
- "application/vnd.sbm.cid": {
- "source": "iana"
- },
- "application/vnd.sbm.mid2": {
- "source": "iana"
- },
- "application/vnd.scribus": {
- "source": "iana"
- },
- "application/vnd.sealed.3df": {
- "source": "iana"
- },
- "application/vnd.sealed.csf": {
- "source": "iana"
- },
- "application/vnd.sealed.doc": {
- "source": "iana"
- },
- "application/vnd.sealed.eml": {
- "source": "iana"
- },
- "application/vnd.sealed.mht": {
- "source": "iana"
- },
- "application/vnd.sealed.net": {
- "source": "iana"
- },
- "application/vnd.sealed.ppt": {
- "source": "iana"
- },
- "application/vnd.sealed.tiff": {
- "source": "iana"
- },
- "application/vnd.sealed.xls": {
- "source": "iana"
- },
- "application/vnd.sealedmedia.softseal.html": {
- "source": "iana"
- },
- "application/vnd.sealedmedia.softseal.pdf": {
- "source": "iana"
- },
- "application/vnd.seemail": {
- "source": "iana",
- "extensions": ["see"]
- },
- "application/vnd.seis+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.sema": {
- "source": "iana",
- "extensions": ["sema"]
- },
- "application/vnd.semd": {
- "source": "iana",
- "extensions": ["semd"]
- },
- "application/vnd.semf": {
- "source": "iana",
- "extensions": ["semf"]
- },
- "application/vnd.shade-save-file": {
- "source": "iana"
- },
- "application/vnd.shana.informed.formdata": {
- "source": "iana",
- "extensions": ["ifm"]
- },
- "application/vnd.shana.informed.formtemplate": {
- "source": "iana",
- "extensions": ["itp"]
- },
- "application/vnd.shana.informed.interchange": {
- "source": "iana",
- "extensions": ["iif"]
- },
- "application/vnd.shana.informed.package": {
- "source": "iana",
- "extensions": ["ipk"]
- },
- "application/vnd.shootproof+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.shopkick+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.shp": {
- "source": "iana"
- },
- "application/vnd.shx": {
- "source": "iana"
- },
- "application/vnd.sigrok.session": {
- "source": "iana"
- },
- "application/vnd.simtech-mindmapper": {
- "source": "iana",
- "extensions": ["twd","twds"]
- },
- "application/vnd.siren+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.smaf": {
- "source": "iana",
- "extensions": ["mmf"]
- },
- "application/vnd.smart.notebook": {
- "source": "iana"
- },
- "application/vnd.smart.teacher": {
- "source": "iana",
- "extensions": ["teacher"]
- },
- "application/vnd.snesdev-page-table": {
- "source": "iana"
- },
- "application/vnd.software602.filler.form+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["fo"]
- },
- "application/vnd.software602.filler.form-xml-zip": {
- "source": "iana"
- },
- "application/vnd.solent.sdkm+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["sdkm","sdkd"]
- },
- "application/vnd.spotfire.dxp": {
- "source": "iana",
- "extensions": ["dxp"]
- },
- "application/vnd.spotfire.sfs": {
- "source": "iana",
- "extensions": ["sfs"]
- },
- "application/vnd.sqlite3": {
- "source": "iana"
- },
- "application/vnd.sss-cod": {
- "source": "iana"
- },
- "application/vnd.sss-dtf": {
- "source": "iana"
- },
- "application/vnd.sss-ntf": {
- "source": "iana"
- },
- "application/vnd.stardivision.calc": {
- "source": "apache",
- "extensions": ["sdc"]
- },
- "application/vnd.stardivision.draw": {
- "source": "apache",
- "extensions": ["sda"]
- },
- "application/vnd.stardivision.impress": {
- "source": "apache",
- "extensions": ["sdd"]
- },
- "application/vnd.stardivision.math": {
- "source": "apache",
- "extensions": ["smf"]
- },
- "application/vnd.stardivision.writer": {
- "source": "apache",
- "extensions": ["sdw","vor"]
- },
- "application/vnd.stardivision.writer-global": {
- "source": "apache",
- "extensions": ["sgl"]
- },
- "application/vnd.stepmania.package": {
- "source": "iana",
- "extensions": ["smzip"]
- },
- "application/vnd.stepmania.stepchart": {
- "source": "iana",
- "extensions": ["sm"]
- },
- "application/vnd.street-stream": {
- "source": "iana"
- },
- "application/vnd.sun.wadl+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["wadl"]
- },
- "application/vnd.sun.xml.calc": {
- "source": "apache",
- "extensions": ["sxc"]
- },
- "application/vnd.sun.xml.calc.template": {
- "source": "apache",
- "extensions": ["stc"]
- },
- "application/vnd.sun.xml.draw": {
- "source": "apache",
- "extensions": ["sxd"]
- },
- "application/vnd.sun.xml.draw.template": {
- "source": "apache",
- "extensions": ["std"]
- },
- "application/vnd.sun.xml.impress": {
- "source": "apache",
- "extensions": ["sxi"]
- },
- "application/vnd.sun.xml.impress.template": {
- "source": "apache",
- "extensions": ["sti"]
- },
- "application/vnd.sun.xml.math": {
- "source": "apache",
- "extensions": ["sxm"]
- },
- "application/vnd.sun.xml.writer": {
- "source": "apache",
- "extensions": ["sxw"]
- },
- "application/vnd.sun.xml.writer.global": {
- "source": "apache",
- "extensions": ["sxg"]
- },
- "application/vnd.sun.xml.writer.template": {
- "source": "apache",
- "extensions": ["stw"]
- },
- "application/vnd.sus-calendar": {
- "source": "iana",
- "extensions": ["sus","susp"]
- },
- "application/vnd.svd": {
- "source": "iana",
- "extensions": ["svd"]
- },
- "application/vnd.swiftview-ics": {
- "source": "iana"
- },
- "application/vnd.sycle+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.syft+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.symbian.install": {
- "source": "apache",
- "extensions": ["sis","sisx"]
- },
- "application/vnd.syncml+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["xsm"]
- },
- "application/vnd.syncml.dm+wbxml": {
- "source": "iana",
- "charset": "UTF-8",
- "extensions": ["bdm"]
- },
- "application/vnd.syncml.dm+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["xdm"]
- },
- "application/vnd.syncml.dm.notification": {
- "source": "iana"
- },
- "application/vnd.syncml.dmddf+wbxml": {
- "source": "iana"
- },
- "application/vnd.syncml.dmddf+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["ddf"]
- },
- "application/vnd.syncml.dmtnds+wbxml": {
- "source": "iana"
- },
- "application/vnd.syncml.dmtnds+xml": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true
- },
- "application/vnd.syncml.ds.notification": {
- "source": "iana"
- },
- "application/vnd.tableschema+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.tao.intent-module-archive": {
- "source": "iana",
- "extensions": ["tao"]
- },
- "application/vnd.tcpdump.pcap": {
- "source": "iana",
- "extensions": ["pcap","cap","dmp"]
- },
- "application/vnd.think-cell.ppttc+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.tmd.mediaflex.api+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.tml": {
- "source": "iana"
- },
- "application/vnd.tmobile-livetv": {
- "source": "iana",
- "extensions": ["tmo"]
- },
- "application/vnd.tri.onesource": {
- "source": "iana"
- },
- "application/vnd.trid.tpt": {
- "source": "iana",
- "extensions": ["tpt"]
- },
- "application/vnd.triscape.mxs": {
- "source": "iana",
- "extensions": ["mxs"]
- },
- "application/vnd.trueapp": {
- "source": "iana",
- "extensions": ["tra"]
- },
- "application/vnd.truedoc": {
- "source": "iana"
- },
- "application/vnd.ubisoft.webplayer": {
- "source": "iana"
- },
- "application/vnd.ufdl": {
- "source": "iana",
- "extensions": ["ufd","ufdl"]
- },
- "application/vnd.uiq.theme": {
- "source": "iana",
- "extensions": ["utz"]
- },
- "application/vnd.umajin": {
- "source": "iana",
- "extensions": ["umj"]
- },
- "application/vnd.unity": {
- "source": "iana",
- "extensions": ["unityweb"]
- },
- "application/vnd.uoml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["uoml"]
- },
- "application/vnd.uplanet.alert": {
- "source": "iana"
- },
- "application/vnd.uplanet.alert-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.bearer-choice": {
- "source": "iana"
- },
- "application/vnd.uplanet.bearer-choice-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.cacheop": {
- "source": "iana"
- },
- "application/vnd.uplanet.cacheop-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.channel": {
- "source": "iana"
- },
- "application/vnd.uplanet.channel-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.list": {
- "source": "iana"
- },
- "application/vnd.uplanet.list-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.listcmd": {
- "source": "iana"
- },
- "application/vnd.uplanet.listcmd-wbxml": {
- "source": "iana"
- },
- "application/vnd.uplanet.signal": {
- "source": "iana"
- },
- "application/vnd.uri-map": {
- "source": "iana"
- },
- "application/vnd.valve.source.material": {
- "source": "iana"
- },
- "application/vnd.vcx": {
- "source": "iana",
- "extensions": ["vcx"]
- },
- "application/vnd.vd-study": {
- "source": "iana"
- },
- "application/vnd.vectorworks": {
- "source": "iana"
- },
- "application/vnd.vel+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.verimatrix.vcas": {
- "source": "iana"
- },
- "application/vnd.veritone.aion+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.veryant.thin": {
- "source": "iana"
- },
- "application/vnd.ves.encrypted": {
- "source": "iana"
- },
- "application/vnd.vidsoft.vidconference": {
- "source": "iana"
- },
- "application/vnd.visio": {
- "source": "iana",
- "extensions": ["vsd","vst","vss","vsw"]
- },
- "application/vnd.visionary": {
- "source": "iana",
- "extensions": ["vis"]
- },
- "application/vnd.vividence.scriptfile": {
- "source": "iana"
- },
- "application/vnd.vsf": {
- "source": "iana",
- "extensions": ["vsf"]
- },
- "application/vnd.wap.sic": {
- "source": "iana"
- },
- "application/vnd.wap.slc": {
- "source": "iana"
- },
- "application/vnd.wap.wbxml": {
- "source": "iana",
- "charset": "UTF-8",
- "extensions": ["wbxml"]
- },
- "application/vnd.wap.wmlc": {
- "source": "iana",
- "extensions": ["wmlc"]
- },
- "application/vnd.wap.wmlscriptc": {
- "source": "iana",
- "extensions": ["wmlsc"]
- },
- "application/vnd.webturbo": {
- "source": "iana",
- "extensions": ["wtb"]
- },
- "application/vnd.wfa.dpp": {
- "source": "iana"
- },
- "application/vnd.wfa.p2p": {
- "source": "iana"
- },
- "application/vnd.wfa.wsc": {
- "source": "iana"
- },
- "application/vnd.windows.devicepairing": {
- "source": "iana"
- },
- "application/vnd.wmc": {
- "source": "iana"
- },
- "application/vnd.wmf.bootstrap": {
- "source": "iana"
- },
- "application/vnd.wolfram.mathematica": {
- "source": "iana"
- },
- "application/vnd.wolfram.mathematica.package": {
- "source": "iana"
- },
- "application/vnd.wolfram.player": {
- "source": "iana",
- "extensions": ["nbp"]
- },
- "application/vnd.wordperfect": {
- "source": "iana",
- "extensions": ["wpd"]
- },
- "application/vnd.wqd": {
- "source": "iana",
- "extensions": ["wqd"]
- },
- "application/vnd.wrq-hp3000-labelled": {
- "source": "iana"
- },
- "application/vnd.wt.stf": {
- "source": "iana",
- "extensions": ["stf"]
- },
- "application/vnd.wv.csp+wbxml": {
- "source": "iana"
- },
- "application/vnd.wv.csp+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.wv.ssp+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.xacml+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.xara": {
- "source": "iana",
- "extensions": ["xar"]
- },
- "application/vnd.xfdl": {
- "source": "iana",
- "extensions": ["xfdl"]
- },
- "application/vnd.xfdl.webform": {
- "source": "iana"
- },
- "application/vnd.xmi+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/vnd.xmpie.cpkg": {
- "source": "iana"
- },
- "application/vnd.xmpie.dpkg": {
- "source": "iana"
- },
- "application/vnd.xmpie.plan": {
- "source": "iana"
- },
- "application/vnd.xmpie.ppkg": {
- "source": "iana"
- },
- "application/vnd.xmpie.xlim": {
- "source": "iana"
- },
- "application/vnd.yamaha.hv-dic": {
- "source": "iana",
- "extensions": ["hvd"]
- },
- "application/vnd.yamaha.hv-script": {
- "source": "iana",
- "extensions": ["hvs"]
- },
- "application/vnd.yamaha.hv-voice": {
- "source": "iana",
- "extensions": ["hvp"]
- },
- "application/vnd.yamaha.openscoreformat": {
- "source": "iana",
- "extensions": ["osf"]
- },
- "application/vnd.yamaha.openscoreformat.osfpvg+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["osfpvg"]
- },
- "application/vnd.yamaha.remote-setup": {
- "source": "iana"
- },
- "application/vnd.yamaha.smaf-audio": {
- "source": "iana",
- "extensions": ["saf"]
- },
- "application/vnd.yamaha.smaf-phrase": {
- "source": "iana",
- "extensions": ["spf"]
- },
- "application/vnd.yamaha.through-ngn": {
- "source": "iana"
- },
- "application/vnd.yamaha.tunnel-udpencap": {
- "source": "iana"
- },
- "application/vnd.yaoweme": {
- "source": "iana"
- },
- "application/vnd.yellowriver-custom-menu": {
- "source": "iana",
- "extensions": ["cmp"]
- },
- "application/vnd.youtube.yt": {
- "source": "iana"
- },
- "application/vnd.zul": {
- "source": "iana",
- "extensions": ["zir","zirz"]
- },
- "application/vnd.zzazz.deck+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["zaz"]
- },
- "application/voicexml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["vxml"]
- },
- "application/voucher-cms+json": {
- "source": "iana",
- "compressible": true
- },
- "application/vq-rtcpxr": {
- "source": "iana"
- },
- "application/wasm": {
- "source": "iana",
- "compressible": true,
- "extensions": ["wasm"]
- },
- "application/watcherinfo+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["wif"]
- },
- "application/webpush-options+json": {
- "source": "iana",
- "compressible": true
- },
- "application/whoispp-query": {
- "source": "iana"
- },
- "application/whoispp-response": {
- "source": "iana"
- },
- "application/widget": {
- "source": "iana",
- "extensions": ["wgt"]
- },
- "application/winhlp": {
- "source": "apache",
- "extensions": ["hlp"]
- },
- "application/wita": {
- "source": "iana"
- },
- "application/wordperfect5.1": {
- "source": "iana"
- },
- "application/wsdl+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["wsdl"]
- },
- "application/wspolicy+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["wspolicy"]
- },
- "application/x-7z-compressed": {
- "source": "apache",
- "compressible": false,
- "extensions": ["7z"]
- },
- "application/x-abiword": {
- "source": "apache",
- "extensions": ["abw"]
- },
- "application/x-ace-compressed": {
- "source": "apache",
- "extensions": ["ace"]
- },
- "application/x-amf": {
- "source": "apache"
- },
- "application/x-apple-diskimage": {
- "source": "apache",
- "extensions": ["dmg"]
- },
- "application/x-arj": {
- "compressible": false,
- "extensions": ["arj"]
- },
- "application/x-authorware-bin": {
- "source": "apache",
- "extensions": ["aab","x32","u32","vox"]
- },
- "application/x-authorware-map": {
- "source": "apache",
- "extensions": ["aam"]
- },
- "application/x-authorware-seg": {
- "source": "apache",
- "extensions": ["aas"]
- },
- "application/x-bcpio": {
- "source": "apache",
- "extensions": ["bcpio"]
- },
- "application/x-bdoc": {
- "compressible": false,
- "extensions": ["bdoc"]
- },
- "application/x-bittorrent": {
- "source": "apache",
- "extensions": ["torrent"]
- },
- "application/x-blorb": {
- "source": "apache",
- "extensions": ["blb","blorb"]
- },
- "application/x-bzip": {
- "source": "apache",
- "compressible": false,
- "extensions": ["bz"]
- },
- "application/x-bzip2": {
- "source": "apache",
- "compressible": false,
- "extensions": ["bz2","boz"]
- },
- "application/x-cbr": {
- "source": "apache",
- "extensions": ["cbr","cba","cbt","cbz","cb7"]
- },
- "application/x-cdlink": {
- "source": "apache",
- "extensions": ["vcd"]
- },
- "application/x-cfs-compressed": {
- "source": "apache",
- "extensions": ["cfs"]
- },
- "application/x-chat": {
- "source": "apache",
- "extensions": ["chat"]
- },
- "application/x-chess-pgn": {
- "source": "apache",
- "extensions": ["pgn"]
- },
- "application/x-chrome-extension": {
- "extensions": ["crx"]
- },
- "application/x-cocoa": {
- "source": "nginx",
- "extensions": ["cco"]
- },
- "application/x-compress": {
- "source": "apache"
- },
- "application/x-conference": {
- "source": "apache",
- "extensions": ["nsc"]
- },
- "application/x-cpio": {
- "source": "apache",
- "extensions": ["cpio"]
- },
- "application/x-csh": {
- "source": "apache",
- "extensions": ["csh"]
- },
- "application/x-deb": {
- "compressible": false
- },
- "application/x-debian-package": {
- "source": "apache",
- "extensions": ["deb","udeb"]
- },
- "application/x-dgc-compressed": {
- "source": "apache",
- "extensions": ["dgc"]
- },
- "application/x-director": {
- "source": "apache",
- "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]
- },
- "application/x-doom": {
- "source": "apache",
- "extensions": ["wad"]
- },
- "application/x-dtbncx+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["ncx"]
- },
- "application/x-dtbook+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["dtb"]
- },
- "application/x-dtbresource+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["res"]
- },
- "application/x-dvi": {
- "source": "apache",
- "compressible": false,
- "extensions": ["dvi"]
- },
- "application/x-envoy": {
- "source": "apache",
- "extensions": ["evy"]
- },
- "application/x-eva": {
- "source": "apache",
- "extensions": ["eva"]
- },
- "application/x-font-bdf": {
- "source": "apache",
- "extensions": ["bdf"]
- },
- "application/x-font-dos": {
- "source": "apache"
- },
- "application/x-font-framemaker": {
- "source": "apache"
- },
- "application/x-font-ghostscript": {
- "source": "apache",
- "extensions": ["gsf"]
- },
- "application/x-font-libgrx": {
- "source": "apache"
- },
- "application/x-font-linux-psf": {
- "source": "apache",
- "extensions": ["psf"]
- },
- "application/x-font-pcf": {
- "source": "apache",
- "extensions": ["pcf"]
- },
- "application/x-font-snf": {
- "source": "apache",
- "extensions": ["snf"]
- },
- "application/x-font-speedo": {
- "source": "apache"
- },
- "application/x-font-sunos-news": {
- "source": "apache"
- },
- "application/x-font-type1": {
- "source": "apache",
- "extensions": ["pfa","pfb","pfm","afm"]
- },
- "application/x-font-vfont": {
- "source": "apache"
- },
- "application/x-freearc": {
- "source": "apache",
- "extensions": ["arc"]
- },
- "application/x-futuresplash": {
- "source": "apache",
- "extensions": ["spl"]
- },
- "application/x-gca-compressed": {
- "source": "apache",
- "extensions": ["gca"]
- },
- "application/x-glulx": {
- "source": "apache",
- "extensions": ["ulx"]
- },
- "application/x-gnumeric": {
- "source": "apache",
- "extensions": ["gnumeric"]
- },
- "application/x-gramps-xml": {
- "source": "apache",
- "extensions": ["gramps"]
- },
- "application/x-gtar": {
- "source": "apache",
- "extensions": ["gtar"]
- },
- "application/x-gzip": {
- "source": "apache"
- },
- "application/x-hdf": {
- "source": "apache",
- "extensions": ["hdf"]
- },
- "application/x-httpd-php": {
- "compressible": true,
- "extensions": ["php"]
- },
- "application/x-install-instructions": {
- "source": "apache",
- "extensions": ["install"]
- },
- "application/x-iso9660-image": {
- "source": "apache",
- "extensions": ["iso"]
- },
- "application/x-iwork-keynote-sffkey": {
- "extensions": ["key"]
- },
- "application/x-iwork-numbers-sffnumbers": {
- "extensions": ["numbers"]
- },
- "application/x-iwork-pages-sffpages": {
- "extensions": ["pages"]
- },
- "application/x-java-archive-diff": {
- "source": "nginx",
- "extensions": ["jardiff"]
- },
- "application/x-java-jnlp-file": {
- "source": "apache",
- "compressible": false,
- "extensions": ["jnlp"]
- },
- "application/x-javascript": {
- "compressible": true
- },
- "application/x-keepass2": {
- "extensions": ["kdbx"]
- },
- "application/x-latex": {
- "source": "apache",
- "compressible": false,
- "extensions": ["latex"]
- },
- "application/x-lua-bytecode": {
- "extensions": ["luac"]
- },
- "application/x-lzh-compressed": {
- "source": "apache",
- "extensions": ["lzh","lha"]
- },
- "application/x-makeself": {
- "source": "nginx",
- "extensions": ["run"]
- },
- "application/x-mie": {
- "source": "apache",
- "extensions": ["mie"]
- },
- "application/x-mobipocket-ebook": {
- "source": "apache",
- "extensions": ["prc","mobi"]
- },
- "application/x-mpegurl": {
- "compressible": false
- },
- "application/x-ms-application": {
- "source": "apache",
- "extensions": ["application"]
- },
- "application/x-ms-shortcut": {
- "source": "apache",
- "extensions": ["lnk"]
- },
- "application/x-ms-wmd": {
- "source": "apache",
- "extensions": ["wmd"]
- },
- "application/x-ms-wmz": {
- "source": "apache",
- "extensions": ["wmz"]
- },
- "application/x-ms-xbap": {
- "source": "apache",
- "extensions": ["xbap"]
- },
- "application/x-msaccess": {
- "source": "apache",
- "extensions": ["mdb"]
- },
- "application/x-msbinder": {
- "source": "apache",
- "extensions": ["obd"]
- },
- "application/x-mscardfile": {
- "source": "apache",
- "extensions": ["crd"]
- },
- "application/x-msclip": {
- "source": "apache",
- "extensions": ["clp"]
- },
- "application/x-msdos-program": {
- "extensions": ["exe"]
- },
- "application/x-msdownload": {
- "source": "apache",
- "extensions": ["exe","dll","com","bat","msi"]
- },
- "application/x-msmediaview": {
- "source": "apache",
- "extensions": ["mvb","m13","m14"]
- },
- "application/x-msmetafile": {
- "source": "apache",
- "extensions": ["wmf","wmz","emf","emz"]
- },
- "application/x-msmoney": {
- "source": "apache",
- "extensions": ["mny"]
- },
- "application/x-mspublisher": {
- "source": "apache",
- "extensions": ["pub"]
- },
- "application/x-msschedule": {
- "source": "apache",
- "extensions": ["scd"]
- },
- "application/x-msterminal": {
- "source": "apache",
- "extensions": ["trm"]
- },
- "application/x-mswrite": {
- "source": "apache",
- "extensions": ["wri"]
- },
- "application/x-netcdf": {
- "source": "apache",
- "extensions": ["nc","cdf"]
- },
- "application/x-ns-proxy-autoconfig": {
- "compressible": true,
- "extensions": ["pac"]
- },
- "application/x-nzb": {
- "source": "apache",
- "extensions": ["nzb"]
- },
- "application/x-perl": {
- "source": "nginx",
- "extensions": ["pl","pm"]
- },
- "application/x-pilot": {
- "source": "nginx",
- "extensions": ["prc","pdb"]
- },
- "application/x-pkcs12": {
- "source": "apache",
- "compressible": false,
- "extensions": ["p12","pfx"]
- },
- "application/x-pkcs7-certificates": {
- "source": "apache",
- "extensions": ["p7b","spc"]
- },
- "application/x-pkcs7-certreqresp": {
- "source": "apache",
- "extensions": ["p7r"]
- },
- "application/x-pki-message": {
- "source": "iana"
- },
- "application/x-rar-compressed": {
- "source": "apache",
- "compressible": false,
- "extensions": ["rar"]
- },
- "application/x-redhat-package-manager": {
- "source": "nginx",
- "extensions": ["rpm"]
- },
- "application/x-research-info-systems": {
- "source": "apache",
- "extensions": ["ris"]
- },
- "application/x-sea": {
- "source": "nginx",
- "extensions": ["sea"]
- },
- "application/x-sh": {
- "source": "apache",
- "compressible": true,
- "extensions": ["sh"]
- },
- "application/x-shar": {
- "source": "apache",
- "extensions": ["shar"]
- },
- "application/x-shockwave-flash": {
- "source": "apache",
- "compressible": false,
- "extensions": ["swf"]
- },
- "application/x-silverlight-app": {
- "source": "apache",
- "extensions": ["xap"]
- },
- "application/x-sql": {
- "source": "apache",
- "extensions": ["sql"]
- },
- "application/x-stuffit": {
- "source": "apache",
- "compressible": false,
- "extensions": ["sit"]
- },
- "application/x-stuffitx": {
- "source": "apache",
- "extensions": ["sitx"]
- },
- "application/x-subrip": {
- "source": "apache",
- "extensions": ["srt"]
- },
- "application/x-sv4cpio": {
- "source": "apache",
- "extensions": ["sv4cpio"]
- },
- "application/x-sv4crc": {
- "source": "apache",
- "extensions": ["sv4crc"]
- },
- "application/x-t3vm-image": {
- "source": "apache",
- "extensions": ["t3"]
- },
- "application/x-tads": {
- "source": "apache",
- "extensions": ["gam"]
- },
- "application/x-tar": {
- "source": "apache",
- "compressible": true,
- "extensions": ["tar"]
- },
- "application/x-tcl": {
- "source": "apache",
- "extensions": ["tcl","tk"]
- },
- "application/x-tex": {
- "source": "apache",
- "extensions": ["tex"]
- },
- "application/x-tex-tfm": {
- "source": "apache",
- "extensions": ["tfm"]
- },
- "application/x-texinfo": {
- "source": "apache",
- "extensions": ["texinfo","texi"]
- },
- "application/x-tgif": {
- "source": "apache",
- "extensions": ["obj"]
- },
- "application/x-ustar": {
- "source": "apache",
- "extensions": ["ustar"]
- },
- "application/x-virtualbox-hdd": {
- "compressible": true,
- "extensions": ["hdd"]
- },
- "application/x-virtualbox-ova": {
- "compressible": true,
- "extensions": ["ova"]
- },
- "application/x-virtualbox-ovf": {
- "compressible": true,
- "extensions": ["ovf"]
- },
- "application/x-virtualbox-vbox": {
- "compressible": true,
- "extensions": ["vbox"]
- },
- "application/x-virtualbox-vbox-extpack": {
- "compressible": false,
- "extensions": ["vbox-extpack"]
- },
- "application/x-virtualbox-vdi": {
- "compressible": true,
- "extensions": ["vdi"]
- },
- "application/x-virtualbox-vhd": {
- "compressible": true,
- "extensions": ["vhd"]
- },
- "application/x-virtualbox-vmdk": {
- "compressible": true,
- "extensions": ["vmdk"]
- },
- "application/x-wais-source": {
- "source": "apache",
- "extensions": ["src"]
- },
- "application/x-web-app-manifest+json": {
- "compressible": true,
- "extensions": ["webapp"]
- },
- "application/x-www-form-urlencoded": {
- "source": "iana",
- "compressible": true
- },
- "application/x-x509-ca-cert": {
- "source": "iana",
- "extensions": ["der","crt","pem"]
- },
- "application/x-x509-ca-ra-cert": {
- "source": "iana"
- },
- "application/x-x509-next-ca-cert": {
- "source": "iana"
- },
- "application/x-xfig": {
- "source": "apache",
- "extensions": ["fig"]
- },
- "application/x-xliff+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["xlf"]
- },
- "application/x-xpinstall": {
- "source": "apache",
- "compressible": false,
- "extensions": ["xpi"]
- },
- "application/x-xz": {
- "source": "apache",
- "extensions": ["xz"]
- },
- "application/x-zmachine": {
- "source": "apache",
- "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"]
- },
- "application/x400-bp": {
- "source": "iana"
- },
- "application/xacml+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/xaml+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["xaml"]
- },
- "application/xcap-att+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xav"]
- },
- "application/xcap-caps+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xca"]
- },
- "application/xcap-diff+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xdf"]
- },
- "application/xcap-el+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xel"]
- },
- "application/xcap-error+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/xcap-ns+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xns"]
- },
- "application/xcon-conference-info+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/xcon-conference-info-diff+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/xenc+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xenc"]
- },
- "application/xhtml+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xhtml","xht"]
- },
- "application/xhtml-voice+xml": {
- "source": "apache",
- "compressible": true
- },
- "application/xliff+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xlf"]
- },
- "application/xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xml","xsl","xsd","rng"]
- },
- "application/xml-dtd": {
- "source": "iana",
- "compressible": true,
- "extensions": ["dtd"]
- },
- "application/xml-external-parsed-entity": {
- "source": "iana"
- },
- "application/xml-patch+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/xmpp+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/xop+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xop"]
- },
- "application/xproc+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["xpl"]
- },
- "application/xslt+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xsl","xslt"]
- },
- "application/xspf+xml": {
- "source": "apache",
- "compressible": true,
- "extensions": ["xspf"]
- },
- "application/xv+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["mxml","xhvml","xvml","xvm"]
- },
- "application/yang": {
- "source": "iana",
- "extensions": ["yang"]
- },
- "application/yang-data+json": {
- "source": "iana",
- "compressible": true
- },
- "application/yang-data+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/yang-patch+json": {
- "source": "iana",
- "compressible": true
- },
- "application/yang-patch+xml": {
- "source": "iana",
- "compressible": true
- },
- "application/yin+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["yin"]
- },
- "application/zip": {
- "source": "iana",
- "compressible": false,
- "extensions": ["zip"]
- },
- "application/zlib": {
- "source": "iana"
- },
- "application/zstd": {
- "source": "iana"
- },
- "audio/1d-interleaved-parityfec": {
- "source": "iana"
- },
- "audio/32kadpcm": {
- "source": "iana"
- },
- "audio/3gpp": {
- "source": "iana",
- "compressible": false,
- "extensions": ["3gpp"]
- },
- "audio/3gpp2": {
- "source": "iana"
- },
- "audio/aac": {
- "source": "iana"
- },
- "audio/ac3": {
- "source": "iana"
- },
- "audio/adpcm": {
- "source": "apache",
- "extensions": ["adp"]
- },
- "audio/amr": {
- "source": "iana",
- "extensions": ["amr"]
- },
- "audio/amr-wb": {
- "source": "iana"
- },
- "audio/amr-wb+": {
- "source": "iana"
- },
- "audio/aptx": {
- "source": "iana"
- },
- "audio/asc": {
- "source": "iana"
- },
- "audio/atrac-advanced-lossless": {
- "source": "iana"
- },
- "audio/atrac-x": {
- "source": "iana"
- },
- "audio/atrac3": {
- "source": "iana"
- },
- "audio/basic": {
- "source": "iana",
- "compressible": false,
- "extensions": ["au","snd"]
- },
- "audio/bv16": {
- "source": "iana"
- },
- "audio/bv32": {
- "source": "iana"
- },
- "audio/clearmode": {
- "source": "iana"
- },
- "audio/cn": {
- "source": "iana"
- },
- "audio/dat12": {
- "source": "iana"
- },
- "audio/dls": {
- "source": "iana"
- },
- "audio/dsr-es201108": {
- "source": "iana"
- },
- "audio/dsr-es202050": {
- "source": "iana"
- },
- "audio/dsr-es202211": {
- "source": "iana"
- },
- "audio/dsr-es202212": {
- "source": "iana"
- },
- "audio/dv": {
- "source": "iana"
- },
- "audio/dvi4": {
- "source": "iana"
- },
- "audio/eac3": {
- "source": "iana"
- },
- "audio/encaprtp": {
- "source": "iana"
- },
- "audio/evrc": {
- "source": "iana"
- },
- "audio/evrc-qcp": {
- "source": "iana"
- },
- "audio/evrc0": {
- "source": "iana"
- },
- "audio/evrc1": {
- "source": "iana"
- },
- "audio/evrcb": {
- "source": "iana"
- },
- "audio/evrcb0": {
- "source": "iana"
- },
- "audio/evrcb1": {
- "source": "iana"
- },
- "audio/evrcnw": {
- "source": "iana"
- },
- "audio/evrcnw0": {
- "source": "iana"
- },
- "audio/evrcnw1": {
- "source": "iana"
- },
- "audio/evrcwb": {
- "source": "iana"
- },
- "audio/evrcwb0": {
- "source": "iana"
- },
- "audio/evrcwb1": {
- "source": "iana"
- },
- "audio/evs": {
- "source": "iana"
- },
- "audio/flexfec": {
- "source": "iana"
- },
- "audio/fwdred": {
- "source": "iana"
- },
- "audio/g711-0": {
- "source": "iana"
- },
- "audio/g719": {
- "source": "iana"
- },
- "audio/g722": {
- "source": "iana"
- },
- "audio/g7221": {
- "source": "iana"
- },
- "audio/g723": {
- "source": "iana"
- },
- "audio/g726-16": {
- "source": "iana"
- },
- "audio/g726-24": {
- "source": "iana"
- },
- "audio/g726-32": {
- "source": "iana"
- },
- "audio/g726-40": {
- "source": "iana"
- },
- "audio/g728": {
- "source": "iana"
- },
- "audio/g729": {
- "source": "iana"
- },
- "audio/g7291": {
- "source": "iana"
- },
- "audio/g729d": {
- "source": "iana"
- },
- "audio/g729e": {
- "source": "iana"
- },
- "audio/gsm": {
- "source": "iana"
- },
- "audio/gsm-efr": {
- "source": "iana"
- },
- "audio/gsm-hr-08": {
- "source": "iana"
- },
- "audio/ilbc": {
- "source": "iana"
- },
- "audio/ip-mr_v2.5": {
- "source": "iana"
- },
- "audio/isac": {
- "source": "apache"
- },
- "audio/l16": {
- "source": "iana"
- },
- "audio/l20": {
- "source": "iana"
- },
- "audio/l24": {
- "source": "iana",
- "compressible": false
- },
- "audio/l8": {
- "source": "iana"
- },
- "audio/lpc": {
- "source": "iana"
- },
- "audio/melp": {
- "source": "iana"
- },
- "audio/melp1200": {
- "source": "iana"
- },
- "audio/melp2400": {
- "source": "iana"
- },
- "audio/melp600": {
- "source": "iana"
- },
- "audio/mhas": {
- "source": "iana"
- },
- "audio/midi": {
- "source": "apache",
- "extensions": ["mid","midi","kar","rmi"]
- },
- "audio/mobile-xmf": {
- "source": "iana",
- "extensions": ["mxmf"]
- },
- "audio/mp3": {
- "compressible": false,
- "extensions": ["mp3"]
- },
- "audio/mp4": {
- "source": "iana",
- "compressible": false,
- "extensions": ["m4a","mp4a"]
- },
- "audio/mp4a-latm": {
- "source": "iana"
- },
- "audio/mpa": {
- "source": "iana"
- },
- "audio/mpa-robust": {
- "source": "iana"
- },
- "audio/mpeg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"]
- },
- "audio/mpeg4-generic": {
- "source": "iana"
- },
- "audio/musepack": {
- "source": "apache"
- },
- "audio/ogg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["oga","ogg","spx","opus"]
- },
- "audio/opus": {
- "source": "iana"
- },
- "audio/parityfec": {
- "source": "iana"
- },
- "audio/pcma": {
- "source": "iana"
- },
- "audio/pcma-wb": {
- "source": "iana"
- },
- "audio/pcmu": {
- "source": "iana"
- },
- "audio/pcmu-wb": {
- "source": "iana"
- },
- "audio/prs.sid": {
- "source": "iana"
- },
- "audio/qcelp": {
- "source": "iana"
- },
- "audio/raptorfec": {
- "source": "iana"
- },
- "audio/red": {
- "source": "iana"
- },
- "audio/rtp-enc-aescm128": {
- "source": "iana"
- },
- "audio/rtp-midi": {
- "source": "iana"
- },
- "audio/rtploopback": {
- "source": "iana"
- },
- "audio/rtx": {
- "source": "iana"
- },
- "audio/s3m": {
- "source": "apache",
- "extensions": ["s3m"]
- },
- "audio/scip": {
- "source": "iana"
- },
- "audio/silk": {
- "source": "apache",
- "extensions": ["sil"]
- },
- "audio/smv": {
- "source": "iana"
- },
- "audio/smv-qcp": {
- "source": "iana"
- },
- "audio/smv0": {
- "source": "iana"
- },
- "audio/sofa": {
- "source": "iana"
- },
- "audio/sp-midi": {
- "source": "iana"
- },
- "audio/speex": {
- "source": "iana"
- },
- "audio/t140c": {
- "source": "iana"
- },
- "audio/t38": {
- "source": "iana"
- },
- "audio/telephone-event": {
- "source": "iana"
- },
- "audio/tetra_acelp": {
- "source": "iana"
- },
- "audio/tetra_acelp_bb": {
- "source": "iana"
- },
- "audio/tone": {
- "source": "iana"
- },
- "audio/tsvcis": {
- "source": "iana"
- },
- "audio/uemclip": {
- "source": "iana"
- },
- "audio/ulpfec": {
- "source": "iana"
- },
- "audio/usac": {
- "source": "iana"
- },
- "audio/vdvi": {
- "source": "iana"
- },
- "audio/vmr-wb": {
- "source": "iana"
- },
- "audio/vnd.3gpp.iufp": {
- "source": "iana"
- },
- "audio/vnd.4sb": {
- "source": "iana"
- },
- "audio/vnd.audiokoz": {
- "source": "iana"
- },
- "audio/vnd.celp": {
- "source": "iana"
- },
- "audio/vnd.cisco.nse": {
- "source": "iana"
- },
- "audio/vnd.cmles.radio-events": {
- "source": "iana"
- },
- "audio/vnd.cns.anp1": {
- "source": "iana"
- },
- "audio/vnd.cns.inf1": {
- "source": "iana"
- },
- "audio/vnd.dece.audio": {
- "source": "iana",
- "extensions": ["uva","uvva"]
- },
- "audio/vnd.digital-winds": {
- "source": "iana",
- "extensions": ["eol"]
- },
- "audio/vnd.dlna.adts": {
- "source": "iana"
- },
- "audio/vnd.dolby.heaac.1": {
- "source": "iana"
- },
- "audio/vnd.dolby.heaac.2": {
- "source": "iana"
- },
- "audio/vnd.dolby.mlp": {
- "source": "iana"
- },
- "audio/vnd.dolby.mps": {
- "source": "iana"
- },
- "audio/vnd.dolby.pl2": {
- "source": "iana"
- },
- "audio/vnd.dolby.pl2x": {
- "source": "iana"
- },
- "audio/vnd.dolby.pl2z": {
- "source": "iana"
- },
- "audio/vnd.dolby.pulse.1": {
- "source": "iana"
- },
- "audio/vnd.dra": {
- "source": "iana",
- "extensions": ["dra"]
- },
- "audio/vnd.dts": {
- "source": "iana",
- "extensions": ["dts"]
- },
- "audio/vnd.dts.hd": {
- "source": "iana",
- "extensions": ["dtshd"]
- },
- "audio/vnd.dts.uhd": {
- "source": "iana"
- },
- "audio/vnd.dvb.file": {
- "source": "iana"
- },
- "audio/vnd.everad.plj": {
- "source": "iana"
- },
- "audio/vnd.hns.audio": {
- "source": "iana"
- },
- "audio/vnd.lucent.voice": {
- "source": "iana",
- "extensions": ["lvp"]
- },
- "audio/vnd.ms-playready.media.pya": {
- "source": "iana",
- "extensions": ["pya"]
- },
- "audio/vnd.nokia.mobile-xmf": {
- "source": "iana"
- },
- "audio/vnd.nortel.vbk": {
- "source": "iana"
- },
- "audio/vnd.nuera.ecelp4800": {
- "source": "iana",
- "extensions": ["ecelp4800"]
- },
- "audio/vnd.nuera.ecelp7470": {
- "source": "iana",
- "extensions": ["ecelp7470"]
- },
- "audio/vnd.nuera.ecelp9600": {
- "source": "iana",
- "extensions": ["ecelp9600"]
- },
- "audio/vnd.octel.sbc": {
- "source": "iana"
- },
- "audio/vnd.presonus.multitrack": {
- "source": "iana"
- },
- "audio/vnd.qcelp": {
- "source": "iana"
- },
- "audio/vnd.rhetorex.32kadpcm": {
- "source": "iana"
- },
- "audio/vnd.rip": {
- "source": "iana",
- "extensions": ["rip"]
- },
- "audio/vnd.rn-realaudio": {
- "compressible": false
- },
- "audio/vnd.sealedmedia.softseal.mpeg": {
- "source": "iana"
- },
- "audio/vnd.vmx.cvsd": {
- "source": "iana"
- },
- "audio/vnd.wave": {
- "compressible": false
- },
- "audio/vorbis": {
- "source": "iana",
- "compressible": false
- },
- "audio/vorbis-config": {
- "source": "iana"
- },
- "audio/wav": {
- "compressible": false,
- "extensions": ["wav"]
- },
- "audio/wave": {
- "compressible": false,
- "extensions": ["wav"]
- },
- "audio/webm": {
- "source": "apache",
- "compressible": false,
- "extensions": ["weba"]
- },
- "audio/x-aac": {
- "source": "apache",
- "compressible": false,
- "extensions": ["aac"]
- },
- "audio/x-aiff": {
- "source": "apache",
- "extensions": ["aif","aiff","aifc"]
- },
- "audio/x-caf": {
- "source": "apache",
- "compressible": false,
- "extensions": ["caf"]
- },
- "audio/x-flac": {
- "source": "apache",
- "extensions": ["flac"]
- },
- "audio/x-m4a": {
- "source": "nginx",
- "extensions": ["m4a"]
- },
- "audio/x-matroska": {
- "source": "apache",
- "extensions": ["mka"]
- },
- "audio/x-mpegurl": {
- "source": "apache",
- "extensions": ["m3u"]
- },
- "audio/x-ms-wax": {
- "source": "apache",
- "extensions": ["wax"]
- },
- "audio/x-ms-wma": {
- "source": "apache",
- "extensions": ["wma"]
- },
- "audio/x-pn-realaudio": {
- "source": "apache",
- "extensions": ["ram","ra"]
- },
- "audio/x-pn-realaudio-plugin": {
- "source": "apache",
- "extensions": ["rmp"]
- },
- "audio/x-realaudio": {
- "source": "nginx",
- "extensions": ["ra"]
- },
- "audio/x-tta": {
- "source": "apache"
- },
- "audio/x-wav": {
- "source": "apache",
- "extensions": ["wav"]
- },
- "audio/xm": {
- "source": "apache",
- "extensions": ["xm"]
- },
- "chemical/x-cdx": {
- "source": "apache",
- "extensions": ["cdx"]
- },
- "chemical/x-cif": {
- "source": "apache",
- "extensions": ["cif"]
- },
- "chemical/x-cmdf": {
- "source": "apache",
- "extensions": ["cmdf"]
- },
- "chemical/x-cml": {
- "source": "apache",
- "extensions": ["cml"]
- },
- "chemical/x-csml": {
- "source": "apache",
- "extensions": ["csml"]
- },
- "chemical/x-pdb": {
- "source": "apache"
- },
- "chemical/x-xyz": {
- "source": "apache",
- "extensions": ["xyz"]
- },
- "font/collection": {
- "source": "iana",
- "extensions": ["ttc"]
- },
- "font/otf": {
- "source": "iana",
- "compressible": true,
- "extensions": ["otf"]
- },
- "font/sfnt": {
- "source": "iana"
- },
- "font/ttf": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ttf"]
- },
- "font/woff": {
- "source": "iana",
- "extensions": ["woff"]
- },
- "font/woff2": {
- "source": "iana",
- "extensions": ["woff2"]
- },
- "image/aces": {
- "source": "iana",
- "extensions": ["exr"]
- },
- "image/apng": {
- "compressible": false,
- "extensions": ["apng"]
- },
- "image/avci": {
- "source": "iana",
- "extensions": ["avci"]
- },
- "image/avcs": {
- "source": "iana",
- "extensions": ["avcs"]
- },
- "image/avif": {
- "source": "iana",
- "compressible": false,
- "extensions": ["avif"]
- },
- "image/bmp": {
- "source": "iana",
- "compressible": true,
- "extensions": ["bmp"]
- },
- "image/cgm": {
- "source": "iana",
- "extensions": ["cgm"]
- },
- "image/dicom-rle": {
- "source": "iana",
- "extensions": ["drle"]
- },
- "image/emf": {
- "source": "iana",
- "extensions": ["emf"]
- },
- "image/fits": {
- "source": "iana",
- "extensions": ["fits"]
- },
- "image/g3fax": {
- "source": "iana",
- "extensions": ["g3"]
- },
- "image/gif": {
- "source": "iana",
- "compressible": false,
- "extensions": ["gif"]
- },
- "image/heic": {
- "source": "iana",
- "extensions": ["heic"]
- },
- "image/heic-sequence": {
- "source": "iana",
- "extensions": ["heics"]
- },
- "image/heif": {
- "source": "iana",
- "extensions": ["heif"]
- },
- "image/heif-sequence": {
- "source": "iana",
- "extensions": ["heifs"]
- },
- "image/hej2k": {
- "source": "iana",
- "extensions": ["hej2"]
- },
- "image/hsj2": {
- "source": "iana",
- "extensions": ["hsj2"]
- },
- "image/ief": {
- "source": "iana",
- "extensions": ["ief"]
- },
- "image/jls": {
- "source": "iana",
- "extensions": ["jls"]
- },
- "image/jp2": {
- "source": "iana",
- "compressible": false,
- "extensions": ["jp2","jpg2"]
- },
- "image/jpeg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["jpeg","jpg","jpe"]
- },
- "image/jph": {
- "source": "iana",
- "extensions": ["jph"]
- },
- "image/jphc": {
- "source": "iana",
- "extensions": ["jhc"]
- },
- "image/jpm": {
- "source": "iana",
- "compressible": false,
- "extensions": ["jpm"]
- },
- "image/jpx": {
- "source": "iana",
- "compressible": false,
- "extensions": ["jpx","jpf"]
- },
- "image/jxr": {
- "source": "iana",
- "extensions": ["jxr"]
- },
- "image/jxra": {
- "source": "iana",
- "extensions": ["jxra"]
- },
- "image/jxrs": {
- "source": "iana",
- "extensions": ["jxrs"]
- },
- "image/jxs": {
- "source": "iana",
- "extensions": ["jxs"]
- },
- "image/jxsc": {
- "source": "iana",
- "extensions": ["jxsc"]
- },
- "image/jxsi": {
- "source": "iana",
- "extensions": ["jxsi"]
- },
- "image/jxss": {
- "source": "iana",
- "extensions": ["jxss"]
- },
- "image/ktx": {
- "source": "iana",
- "extensions": ["ktx"]
- },
- "image/ktx2": {
- "source": "iana",
- "extensions": ["ktx2"]
- },
- "image/naplps": {
- "source": "iana"
- },
- "image/pjpeg": {
- "compressible": false
- },
- "image/png": {
- "source": "iana",
- "compressible": false,
- "extensions": ["png"]
- },
- "image/prs.btif": {
- "source": "iana",
- "extensions": ["btif"]
- },
- "image/prs.pti": {
- "source": "iana",
- "extensions": ["pti"]
- },
- "image/pwg-raster": {
- "source": "iana"
- },
- "image/sgi": {
- "source": "apache",
- "extensions": ["sgi"]
- },
- "image/svg+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["svg","svgz"]
- },
- "image/t38": {
- "source": "iana",
- "extensions": ["t38"]
- },
- "image/tiff": {
- "source": "iana",
- "compressible": false,
- "extensions": ["tif","tiff"]
- },
- "image/tiff-fx": {
- "source": "iana",
- "extensions": ["tfx"]
- },
- "image/vnd.adobe.photoshop": {
- "source": "iana",
- "compressible": true,
- "extensions": ["psd"]
- },
- "image/vnd.airzip.accelerator.azv": {
- "source": "iana",
- "extensions": ["azv"]
- },
- "image/vnd.cns.inf2": {
- "source": "iana"
- },
- "image/vnd.dece.graphic": {
- "source": "iana",
- "extensions": ["uvi","uvvi","uvg","uvvg"]
- },
- "image/vnd.djvu": {
- "source": "iana",
- "extensions": ["djvu","djv"]
- },
- "image/vnd.dvb.subtitle": {
- "source": "iana",
- "extensions": ["sub"]
- },
- "image/vnd.dwg": {
- "source": "iana",
- "extensions": ["dwg"]
- },
- "image/vnd.dxf": {
- "source": "iana",
- "extensions": ["dxf"]
- },
- "image/vnd.fastbidsheet": {
- "source": "iana",
- "extensions": ["fbs"]
- },
- "image/vnd.fpx": {
- "source": "iana",
- "extensions": ["fpx"]
- },
- "image/vnd.fst": {
- "source": "iana",
- "extensions": ["fst"]
- },
- "image/vnd.fujixerox.edmics-mmr": {
- "source": "iana",
- "extensions": ["mmr"]
- },
- "image/vnd.fujixerox.edmics-rlc": {
- "source": "iana",
- "extensions": ["rlc"]
- },
- "image/vnd.globalgraphics.pgb": {
- "source": "iana"
- },
- "image/vnd.microsoft.icon": {
- "source": "iana",
- "compressible": true,
- "extensions": ["ico"]
- },
- "image/vnd.mix": {
- "source": "iana"
- },
- "image/vnd.mozilla.apng": {
- "source": "iana"
- },
- "image/vnd.ms-dds": {
- "compressible": true,
- "extensions": ["dds"]
- },
- "image/vnd.ms-modi": {
- "source": "iana",
- "extensions": ["mdi"]
- },
- "image/vnd.ms-photo": {
- "source": "apache",
- "extensions": ["wdp"]
- },
- "image/vnd.net-fpx": {
- "source": "iana",
- "extensions": ["npx"]
- },
- "image/vnd.pco.b16": {
- "source": "iana",
- "extensions": ["b16"]
- },
- "image/vnd.radiance": {
- "source": "iana"
- },
- "image/vnd.sealed.png": {
- "source": "iana"
- },
- "image/vnd.sealedmedia.softseal.gif": {
- "source": "iana"
- },
- "image/vnd.sealedmedia.softseal.jpg": {
- "source": "iana"
- },
- "image/vnd.svf": {
- "source": "iana"
- },
- "image/vnd.tencent.tap": {
- "source": "iana",
- "extensions": ["tap"]
- },
- "image/vnd.valve.source.texture": {
- "source": "iana",
- "extensions": ["vtf"]
- },
- "image/vnd.wap.wbmp": {
- "source": "iana",
- "extensions": ["wbmp"]
- },
- "image/vnd.xiff": {
- "source": "iana",
- "extensions": ["xif"]
- },
- "image/vnd.zbrush.pcx": {
- "source": "iana",
- "extensions": ["pcx"]
- },
- "image/webp": {
- "source": "apache",
- "extensions": ["webp"]
- },
- "image/wmf": {
- "source": "iana",
- "extensions": ["wmf"]
- },
- "image/x-3ds": {
- "source": "apache",
- "extensions": ["3ds"]
- },
- "image/x-cmu-raster": {
- "source": "apache",
- "extensions": ["ras"]
- },
- "image/x-cmx": {
- "source": "apache",
- "extensions": ["cmx"]
- },
- "image/x-freehand": {
- "source": "apache",
- "extensions": ["fh","fhc","fh4","fh5","fh7"]
- },
- "image/x-icon": {
- "source": "apache",
- "compressible": true,
- "extensions": ["ico"]
- },
- "image/x-jng": {
- "source": "nginx",
- "extensions": ["jng"]
- },
- "image/x-mrsid-image": {
- "source": "apache",
- "extensions": ["sid"]
- },
- "image/x-ms-bmp": {
- "source": "nginx",
- "compressible": true,
- "extensions": ["bmp"]
- },
- "image/x-pcx": {
- "source": "apache",
- "extensions": ["pcx"]
- },
- "image/x-pict": {
- "source": "apache",
- "extensions": ["pic","pct"]
- },
- "image/x-portable-anymap": {
- "source": "apache",
- "extensions": ["pnm"]
- },
- "image/x-portable-bitmap": {
- "source": "apache",
- "extensions": ["pbm"]
- },
- "image/x-portable-graymap": {
- "source": "apache",
- "extensions": ["pgm"]
- },
- "image/x-portable-pixmap": {
- "source": "apache",
- "extensions": ["ppm"]
- },
- "image/x-rgb": {
- "source": "apache",
- "extensions": ["rgb"]
- },
- "image/x-tga": {
- "source": "apache",
- "extensions": ["tga"]
- },
- "image/x-xbitmap": {
- "source": "apache",
- "extensions": ["xbm"]
- },
- "image/x-xcf": {
- "compressible": false
- },
- "image/x-xpixmap": {
- "source": "apache",
- "extensions": ["xpm"]
- },
- "image/x-xwindowdump": {
- "source": "apache",
- "extensions": ["xwd"]
- },
- "message/cpim": {
- "source": "iana"
- },
- "message/delivery-status": {
- "source": "iana"
- },
- "message/disposition-notification": {
- "source": "iana",
- "extensions": [
- "disposition-notification"
- ]
- },
- "message/external-body": {
- "source": "iana"
- },
- "message/feedback-report": {
- "source": "iana"
- },
- "message/global": {
- "source": "iana",
- "extensions": ["u8msg"]
- },
- "message/global-delivery-status": {
- "source": "iana",
- "extensions": ["u8dsn"]
- },
- "message/global-disposition-notification": {
- "source": "iana",
- "extensions": ["u8mdn"]
- },
- "message/global-headers": {
- "source": "iana",
- "extensions": ["u8hdr"]
- },
- "message/http": {
- "source": "iana",
- "compressible": false
- },
- "message/imdn+xml": {
- "source": "iana",
- "compressible": true
- },
- "message/news": {
- "source": "iana"
- },
- "message/partial": {
- "source": "iana",
- "compressible": false
- },
- "message/rfc822": {
- "source": "iana",
- "compressible": true,
- "extensions": ["eml","mime"]
- },
- "message/s-http": {
- "source": "iana"
- },
- "message/sip": {
- "source": "iana"
- },
- "message/sipfrag": {
- "source": "iana"
- },
- "message/tracking-status": {
- "source": "iana"
- },
- "message/vnd.si.simp": {
- "source": "iana"
- },
- "message/vnd.wfa.wsc": {
- "source": "iana",
- "extensions": ["wsc"]
- },
- "model/3mf": {
- "source": "iana",
- "extensions": ["3mf"]
- },
- "model/e57": {
- "source": "iana"
- },
- "model/gltf+json": {
- "source": "iana",
- "compressible": true,
- "extensions": ["gltf"]
- },
- "model/gltf-binary": {
- "source": "iana",
- "compressible": true,
- "extensions": ["glb"]
- },
- "model/iges": {
- "source": "iana",
- "compressible": false,
- "extensions": ["igs","iges"]
- },
- "model/mesh": {
- "source": "iana",
- "compressible": false,
- "extensions": ["msh","mesh","silo"]
- },
- "model/mtl": {
- "source": "iana",
- "extensions": ["mtl"]
- },
- "model/obj": {
- "source": "iana",
- "extensions": ["obj"]
- },
- "model/step": {
- "source": "iana"
- },
- "model/step+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["stpx"]
- },
- "model/step+zip": {
- "source": "iana",
- "compressible": false,
- "extensions": ["stpz"]
- },
- "model/step-xml+zip": {
- "source": "iana",
- "compressible": false,
- "extensions": ["stpxz"]
- },
- "model/stl": {
- "source": "iana",
- "extensions": ["stl"]
- },
- "model/vnd.collada+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["dae"]
- },
- "model/vnd.dwf": {
- "source": "iana",
- "extensions": ["dwf"]
- },
- "model/vnd.flatland.3dml": {
- "source": "iana"
- },
- "model/vnd.gdl": {
- "source": "iana",
- "extensions": ["gdl"]
- },
- "model/vnd.gs-gdl": {
- "source": "apache"
- },
- "model/vnd.gs.gdl": {
- "source": "iana"
- },
- "model/vnd.gtw": {
- "source": "iana",
- "extensions": ["gtw"]
- },
- "model/vnd.moml+xml": {
- "source": "iana",
- "compressible": true
- },
- "model/vnd.mts": {
- "source": "iana",
- "extensions": ["mts"]
- },
- "model/vnd.opengex": {
- "source": "iana",
- "extensions": ["ogex"]
- },
- "model/vnd.parasolid.transmit.binary": {
- "source": "iana",
- "extensions": ["x_b"]
- },
- "model/vnd.parasolid.transmit.text": {
- "source": "iana",
- "extensions": ["x_t"]
- },
- "model/vnd.pytha.pyox": {
- "source": "iana"
- },
- "model/vnd.rosette.annotated-data-model": {
- "source": "iana"
- },
- "model/vnd.sap.vds": {
- "source": "iana",
- "extensions": ["vds"]
- },
- "model/vnd.usdz+zip": {
- "source": "iana",
- "compressible": false,
- "extensions": ["usdz"]
- },
- "model/vnd.valve.source.compiled-map": {
- "source": "iana",
- "extensions": ["bsp"]
- },
- "model/vnd.vtu": {
- "source": "iana",
- "extensions": ["vtu"]
- },
- "model/vrml": {
- "source": "iana",
- "compressible": false,
- "extensions": ["wrl","vrml"]
- },
- "model/x3d+binary": {
- "source": "apache",
- "compressible": false,
- "extensions": ["x3db","x3dbz"]
- },
- "model/x3d+fastinfoset": {
- "source": "iana",
- "extensions": ["x3db"]
- },
- "model/x3d+vrml": {
- "source": "apache",
- "compressible": false,
- "extensions": ["x3dv","x3dvz"]
- },
- "model/x3d+xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["x3d","x3dz"]
- },
- "model/x3d-vrml": {
- "source": "iana",
- "extensions": ["x3dv"]
- },
- "multipart/alternative": {
- "source": "iana",
- "compressible": false
- },
- "multipart/appledouble": {
- "source": "iana"
- },
- "multipart/byteranges": {
- "source": "iana"
- },
- "multipart/digest": {
- "source": "iana"
- },
- "multipart/encrypted": {
- "source": "iana",
- "compressible": false
- },
- "multipart/form-data": {
- "source": "iana",
- "compressible": false
- },
- "multipart/header-set": {
- "source": "iana"
- },
- "multipart/mixed": {
- "source": "iana"
- },
- "multipart/multilingual": {
- "source": "iana"
- },
- "multipart/parallel": {
- "source": "iana"
- },
- "multipart/related": {
- "source": "iana",
- "compressible": false
- },
- "multipart/report": {
- "source": "iana"
- },
- "multipart/signed": {
- "source": "iana",
- "compressible": false
- },
- "multipart/vnd.bint.med-plus": {
- "source": "iana"
- },
- "multipart/voice-message": {
- "source": "iana"
- },
- "multipart/x-mixed-replace": {
- "source": "iana"
- },
- "text/1d-interleaved-parityfec": {
- "source": "iana"
- },
- "text/cache-manifest": {
- "source": "iana",
- "compressible": true,
- "extensions": ["appcache","manifest"]
- },
- "text/calendar": {
- "source": "iana",
- "extensions": ["ics","ifb"]
- },
- "text/calender": {
- "compressible": true
- },
- "text/cmd": {
- "compressible": true
- },
- "text/coffeescript": {
- "extensions": ["coffee","litcoffee"]
- },
- "text/cql": {
- "source": "iana"
- },
- "text/cql-expression": {
- "source": "iana"
- },
- "text/cql-identifier": {
- "source": "iana"
- },
- "text/css": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["css"]
- },
- "text/csv": {
- "source": "iana",
- "compressible": true,
- "extensions": ["csv"]
- },
- "text/csv-schema": {
- "source": "iana"
- },
- "text/directory": {
- "source": "iana"
- },
- "text/dns": {
- "source": "iana"
- },
- "text/ecmascript": {
- "source": "iana"
- },
- "text/encaprtp": {
- "source": "iana"
- },
- "text/enriched": {
- "source": "iana"
- },
- "text/fhirpath": {
- "source": "iana"
- },
- "text/flexfec": {
- "source": "iana"
- },
- "text/fwdred": {
- "source": "iana"
- },
- "text/gff3": {
- "source": "iana"
- },
- "text/grammar-ref-list": {
- "source": "iana"
- },
- "text/html": {
- "source": "iana",
- "compressible": true,
- "extensions": ["html","htm","shtml"]
- },
- "text/jade": {
- "extensions": ["jade"]
- },
- "text/javascript": {
- "source": "iana",
- "compressible": true
- },
- "text/jcr-cnd": {
- "source": "iana"
- },
- "text/jsx": {
- "compressible": true,
- "extensions": ["jsx"]
- },
- "text/less": {
- "compressible": true,
- "extensions": ["less"]
- },
- "text/markdown": {
- "source": "iana",
- "compressible": true,
- "extensions": ["markdown","md"]
- },
- "text/mathml": {
- "source": "nginx",
- "extensions": ["mml"]
- },
- "text/mdx": {
- "compressible": true,
- "extensions": ["mdx"]
- },
- "text/mizar": {
- "source": "iana"
- },
- "text/n3": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["n3"]
- },
- "text/parameters": {
- "source": "iana",
- "charset": "UTF-8"
- },
- "text/parityfec": {
- "source": "iana"
- },
- "text/plain": {
- "source": "iana",
- "compressible": true,
- "extensions": ["txt","text","conf","def","list","log","in","ini"]
- },
- "text/provenance-notation": {
- "source": "iana",
- "charset": "UTF-8"
- },
- "text/prs.fallenstein.rst": {
- "source": "iana"
- },
- "text/prs.lines.tag": {
- "source": "iana",
- "extensions": ["dsc"]
- },
- "text/prs.prop.logic": {
- "source": "iana"
- },
- "text/raptorfec": {
- "source": "iana"
- },
- "text/red": {
- "source": "iana"
- },
- "text/rfc822-headers": {
- "source": "iana"
- },
- "text/richtext": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rtx"]
- },
- "text/rtf": {
- "source": "iana",
- "compressible": true,
- "extensions": ["rtf"]
- },
- "text/rtp-enc-aescm128": {
- "source": "iana"
- },
- "text/rtploopback": {
- "source": "iana"
- },
- "text/rtx": {
- "source": "iana"
- },
- "text/sgml": {
- "source": "iana",
- "extensions": ["sgml","sgm"]
- },
- "text/shaclc": {
- "source": "iana"
- },
- "text/shex": {
- "source": "iana",
- "extensions": ["shex"]
- },
- "text/slim": {
- "extensions": ["slim","slm"]
- },
- "text/spdx": {
- "source": "iana",
- "extensions": ["spdx"]
- },
- "text/strings": {
- "source": "iana"
- },
- "text/stylus": {
- "extensions": ["stylus","styl"]
- },
- "text/t140": {
- "source": "iana"
- },
- "text/tab-separated-values": {
- "source": "iana",
- "compressible": true,
- "extensions": ["tsv"]
- },
- "text/troff": {
- "source": "iana",
- "extensions": ["t","tr","roff","man","me","ms"]
- },
- "text/turtle": {
- "source": "iana",
- "charset": "UTF-8",
- "extensions": ["ttl"]
- },
- "text/ulpfec": {
- "source": "iana"
- },
- "text/uri-list": {
- "source": "iana",
- "compressible": true,
- "extensions": ["uri","uris","urls"]
- },
- "text/vcard": {
- "source": "iana",
- "compressible": true,
- "extensions": ["vcard"]
- },
- "text/vnd.a": {
- "source": "iana"
- },
- "text/vnd.abc": {
- "source": "iana"
- },
- "text/vnd.ascii-art": {
- "source": "iana"
- },
- "text/vnd.curl": {
- "source": "iana",
- "extensions": ["curl"]
- },
- "text/vnd.curl.dcurl": {
- "source": "apache",
- "extensions": ["dcurl"]
- },
- "text/vnd.curl.mcurl": {
- "source": "apache",
- "extensions": ["mcurl"]
- },
- "text/vnd.curl.scurl": {
- "source": "apache",
- "extensions": ["scurl"]
- },
- "text/vnd.debian.copyright": {
- "source": "iana",
- "charset": "UTF-8"
- },
- "text/vnd.dmclientscript": {
- "source": "iana"
- },
- "text/vnd.dvb.subtitle": {
- "source": "iana",
- "extensions": ["sub"]
- },
- "text/vnd.esmertec.theme-descriptor": {
- "source": "iana",
- "charset": "UTF-8"
- },
- "text/vnd.familysearch.gedcom": {
- "source": "iana",
- "extensions": ["ged"]
- },
- "text/vnd.ficlab.flt": {
- "source": "iana"
- },
- "text/vnd.fly": {
- "source": "iana",
- "extensions": ["fly"]
- },
- "text/vnd.fmi.flexstor": {
- "source": "iana",
- "extensions": ["flx"]
- },
- "text/vnd.gml": {
- "source": "iana"
- },
- "text/vnd.graphviz": {
- "source": "iana",
- "extensions": ["gv"]
- },
- "text/vnd.hans": {
- "source": "iana"
- },
- "text/vnd.hgl": {
- "source": "iana"
- },
- "text/vnd.in3d.3dml": {
- "source": "iana",
- "extensions": ["3dml"]
- },
- "text/vnd.in3d.spot": {
- "source": "iana",
- "extensions": ["spot"]
- },
- "text/vnd.iptc.newsml": {
- "source": "iana"
- },
- "text/vnd.iptc.nitf": {
- "source": "iana"
- },
- "text/vnd.latex-z": {
- "source": "iana"
- },
- "text/vnd.motorola.reflex": {
- "source": "iana"
- },
- "text/vnd.ms-mediapackage": {
- "source": "iana"
- },
- "text/vnd.net2phone.commcenter.command": {
- "source": "iana"
- },
- "text/vnd.radisys.msml-basic-layout": {
- "source": "iana"
- },
- "text/vnd.senx.warpscript": {
- "source": "iana"
- },
- "text/vnd.si.uricatalogue": {
- "source": "iana"
- },
- "text/vnd.sosi": {
- "source": "iana"
- },
- "text/vnd.sun.j2me.app-descriptor": {
- "source": "iana",
- "charset": "UTF-8",
- "extensions": ["jad"]
- },
- "text/vnd.trolltech.linguist": {
- "source": "iana",
- "charset": "UTF-8"
- },
- "text/vnd.wap.si": {
- "source": "iana"
- },
- "text/vnd.wap.sl": {
- "source": "iana"
- },
- "text/vnd.wap.wml": {
- "source": "iana",
- "extensions": ["wml"]
- },
- "text/vnd.wap.wmlscript": {
- "source": "iana",
- "extensions": ["wmls"]
- },
- "text/vtt": {
- "source": "iana",
- "charset": "UTF-8",
- "compressible": true,
- "extensions": ["vtt"]
- },
- "text/x-asm": {
- "source": "apache",
- "extensions": ["s","asm"]
- },
- "text/x-c": {
- "source": "apache",
- "extensions": ["c","cc","cxx","cpp","h","hh","dic"]
- },
- "text/x-component": {
- "source": "nginx",
- "extensions": ["htc"]
- },
- "text/x-fortran": {
- "source": "apache",
- "extensions": ["f","for","f77","f90"]
- },
- "text/x-gwt-rpc": {
- "compressible": true
- },
- "text/x-handlebars-template": {
- "extensions": ["hbs"]
- },
- "text/x-java-source": {
- "source": "apache",
- "extensions": ["java"]
- },
- "text/x-jquery-tmpl": {
- "compressible": true
- },
- "text/x-lua": {
- "extensions": ["lua"]
- },
- "text/x-markdown": {
- "compressible": true,
- "extensions": ["mkd"]
- },
- "text/x-nfo": {
- "source": "apache",
- "extensions": ["nfo"]
- },
- "text/x-opml": {
- "source": "apache",
- "extensions": ["opml"]
- },
- "text/x-org": {
- "compressible": true,
- "extensions": ["org"]
- },
- "text/x-pascal": {
- "source": "apache",
- "extensions": ["p","pas"]
- },
- "text/x-processing": {
- "compressible": true,
- "extensions": ["pde"]
- },
- "text/x-sass": {
- "extensions": ["sass"]
- },
- "text/x-scss": {
- "extensions": ["scss"]
- },
- "text/x-setext": {
- "source": "apache",
- "extensions": ["etx"]
- },
- "text/x-sfv": {
- "source": "apache",
- "extensions": ["sfv"]
- },
- "text/x-suse-ymp": {
- "compressible": true,
- "extensions": ["ymp"]
- },
- "text/x-uuencode": {
- "source": "apache",
- "extensions": ["uu"]
- },
- "text/x-vcalendar": {
- "source": "apache",
- "extensions": ["vcs"]
- },
- "text/x-vcard": {
- "source": "apache",
- "extensions": ["vcf"]
- },
- "text/xml": {
- "source": "iana",
- "compressible": true,
- "extensions": ["xml"]
- },
- "text/xml-external-parsed-entity": {
- "source": "iana"
- },
- "text/yaml": {
- "compressible": true,
- "extensions": ["yaml","yml"]
- },
- "video/1d-interleaved-parityfec": {
- "source": "iana"
- },
- "video/3gpp": {
- "source": "iana",
- "extensions": ["3gp","3gpp"]
- },
- "video/3gpp-tt": {
- "source": "iana"
- },
- "video/3gpp2": {
- "source": "iana",
- "extensions": ["3g2"]
- },
- "video/av1": {
- "source": "iana"
- },
- "video/bmpeg": {
- "source": "iana"
- },
- "video/bt656": {
- "source": "iana"
- },
- "video/celb": {
- "source": "iana"
- },
- "video/dv": {
- "source": "iana"
- },
- "video/encaprtp": {
- "source": "iana"
- },
- "video/ffv1": {
- "source": "iana"
- },
- "video/flexfec": {
- "source": "iana"
- },
- "video/h261": {
- "source": "iana",
- "extensions": ["h261"]
- },
- "video/h263": {
- "source": "iana",
- "extensions": ["h263"]
- },
- "video/h263-1998": {
- "source": "iana"
- },
- "video/h263-2000": {
- "source": "iana"
- },
- "video/h264": {
- "source": "iana",
- "extensions": ["h264"]
- },
- "video/h264-rcdo": {
- "source": "iana"
- },
- "video/h264-svc": {
- "source": "iana"
- },
- "video/h265": {
- "source": "iana"
- },
- "video/iso.segment": {
- "source": "iana",
- "extensions": ["m4s"]
- },
- "video/jpeg": {
- "source": "iana",
- "extensions": ["jpgv"]
- },
- "video/jpeg2000": {
- "source": "iana"
- },
- "video/jpm": {
- "source": "apache",
- "extensions": ["jpm","jpgm"]
- },
- "video/jxsv": {
- "source": "iana"
- },
- "video/mj2": {
- "source": "iana",
- "extensions": ["mj2","mjp2"]
- },
- "video/mp1s": {
- "source": "iana"
- },
- "video/mp2p": {
- "source": "iana"
- },
- "video/mp2t": {
- "source": "iana",
- "extensions": ["ts"]
- },
- "video/mp4": {
- "source": "iana",
- "compressible": false,
- "extensions": ["mp4","mp4v","mpg4"]
- },
- "video/mp4v-es": {
- "source": "iana"
- },
- "video/mpeg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["mpeg","mpg","mpe","m1v","m2v"]
- },
- "video/mpeg4-generic": {
- "source": "iana"
- },
- "video/mpv": {
- "source": "iana"
- },
- "video/nv": {
- "source": "iana"
- },
- "video/ogg": {
- "source": "iana",
- "compressible": false,
- "extensions": ["ogv"]
- },
- "video/parityfec": {
- "source": "iana"
- },
- "video/pointer": {
- "source": "iana"
- },
- "video/quicktime": {
- "source": "iana",
- "compressible": false,
- "extensions": ["qt","mov"]
- },
- "video/raptorfec": {
- "source": "iana"
- },
- "video/raw": {
- "source": "iana"
- },
- "video/rtp-enc-aescm128": {
- "source": "iana"
- },
- "video/rtploopback": {
- "source": "iana"
- },
- "video/rtx": {
- "source": "iana"
- },
- "video/scip": {
- "source": "iana"
- },
- "video/smpte291": {
- "source": "iana"
- },
- "video/smpte292m": {
- "source": "iana"
- },
- "video/ulpfec": {
- "source": "iana"
- },
- "video/vc1": {
- "source": "iana"
- },
- "video/vc2": {
- "source": "iana"
- },
- "video/vnd.cctv": {
- "source": "iana"
- },
- "video/vnd.dece.hd": {
- "source": "iana",
- "extensions": ["uvh","uvvh"]
- },
- "video/vnd.dece.mobile": {
- "source": "iana",
- "extensions": ["uvm","uvvm"]
- },
- "video/vnd.dece.mp4": {
- "source": "iana"
- },
- "video/vnd.dece.pd": {
- "source": "iana",
- "extensions": ["uvp","uvvp"]
- },
- "video/vnd.dece.sd": {
- "source": "iana",
- "extensions": ["uvs","uvvs"]
- },
- "video/vnd.dece.video": {
- "source": "iana",
- "extensions": ["uvv","uvvv"]
- },
- "video/vnd.directv.mpeg": {
- "source": "iana"
- },
- "video/vnd.directv.mpeg-tts": {
- "source": "iana"
- },
- "video/vnd.dlna.mpeg-tts": {
- "source": "iana"
- },
- "video/vnd.dvb.file": {
- "source": "iana",
- "extensions": ["dvb"]
- },
- "video/vnd.fvt": {
- "source": "iana",
- "extensions": ["fvt"]
- },
- "video/vnd.hns.video": {
- "source": "iana"
- },
- "video/vnd.iptvforum.1dparityfec-1010": {
- "source": "iana"
- },
- "video/vnd.iptvforum.1dparityfec-2005": {
- "source": "iana"
- },
- "video/vnd.iptvforum.2dparityfec-1010": {
- "source": "iana"
- },
- "video/vnd.iptvforum.2dparityfec-2005": {
- "source": "iana"
- },
- "video/vnd.iptvforum.ttsavc": {
- "source": "iana"
- },
- "video/vnd.iptvforum.ttsmpeg2": {
- "source": "iana"
- },
- "video/vnd.motorola.video": {
- "source": "iana"
- },
- "video/vnd.motorola.videop": {
- "source": "iana"
- },
- "video/vnd.mpegurl": {
- "source": "iana",
- "extensions": ["mxu","m4u"]
- },
- "video/vnd.ms-playready.media.pyv": {
- "source": "iana",
- "extensions": ["pyv"]
- },
- "video/vnd.nokia.interleaved-multimedia": {
- "source": "iana"
- },
- "video/vnd.nokia.mp4vr": {
- "source": "iana"
- },
- "video/vnd.nokia.videovoip": {
- "source": "iana"
- },
- "video/vnd.objectvideo": {
- "source": "iana"
- },
- "video/vnd.radgamettools.bink": {
- "source": "iana"
- },
- "video/vnd.radgamettools.smacker": {
- "source": "iana"
- },
- "video/vnd.sealed.mpeg1": {
- "source": "iana"
- },
- "video/vnd.sealed.mpeg4": {
- "source": "iana"
- },
- "video/vnd.sealed.swf": {
- "source": "iana"
- },
- "video/vnd.sealedmedia.softseal.mov": {
- "source": "iana"
- },
- "video/vnd.uvvu.mp4": {
- "source": "iana",
- "extensions": ["uvu","uvvu"]
- },
- "video/vnd.vivo": {
- "source": "iana",
- "extensions": ["viv"]
- },
- "video/vnd.youtube.yt": {
- "source": "iana"
- },
- "video/vp8": {
- "source": "iana"
- },
- "video/vp9": {
- "source": "iana"
- },
- "video/webm": {
- "source": "apache",
- "compressible": false,
- "extensions": ["webm"]
- },
- "video/x-f4v": {
- "source": "apache",
- "extensions": ["f4v"]
- },
- "video/x-fli": {
- "source": "apache",
- "extensions": ["fli"]
- },
- "video/x-flv": {
- "source": "apache",
- "compressible": false,
- "extensions": ["flv"]
- },
- "video/x-m4v": {
- "source": "apache",
- "extensions": ["m4v"]
- },
- "video/x-matroska": {
- "source": "apache",
- "compressible": false,
- "extensions": ["mkv","mk3d","mks"]
- },
- "video/x-mng": {
- "source": "apache",
- "extensions": ["mng"]
- },
- "video/x-ms-asf": {
- "source": "apache",
- "extensions": ["asf","asx"]
- },
- "video/x-ms-vob": {
- "source": "apache",
- "extensions": ["vob"]
- },
- "video/x-ms-wm": {
- "source": "apache",
- "extensions": ["wm"]
- },
- "video/x-ms-wmv": {
- "source": "apache",
- "compressible": false,
- "extensions": ["wmv"]
- },
- "video/x-ms-wmx": {
- "source": "apache",
- "extensions": ["wmx"]
- },
- "video/x-ms-wvx": {
- "source": "apache",
- "extensions": ["wvx"]
- },
- "video/x-msvideo": {
- "source": "apache",
- "extensions": ["avi"]
- },
- "video/x-sgi-movie": {
- "source": "apache",
- "extensions": ["movie"]
- },
- "video/x-smv": {
- "source": "apache",
- "extensions": ["smv"]
- },
- "x-conference/x-cooltalk": {
- "source": "apache",
- "extensions": ["ice"]
- },
- "x-shader/x-fragment": {
- "compressible": true
- },
- "x-shader/x-vertex": {
- "compressible": true
- }
-}
diff --git a/node_modules/mime-db/index.js b/node_modules/mime-db/index.js
deleted file mode 100644
index ec2be30..0000000
--- a/node_modules/mime-db/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/*!
- * mime-db
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015-2022 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-/**
- * Module exports.
- */
-
-module.exports = require('./db.json')
diff --git a/node_modules/mime-db/package.json b/node_modules/mime-db/package.json
deleted file mode 100644
index 32c14b8..0000000
--- a/node_modules/mime-db/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "name": "mime-db",
- "description": "Media Type Database",
- "version": "1.52.0",
- "contributors": [
- "Douglas Christopher Wilson ",
- "Jonathan Ong (http://jongleberry.com)",
- "Robert Kieffer (http://github.com/broofa)"
- ],
- "license": "MIT",
- "keywords": [
- "mime",
- "db",
- "type",
- "types",
- "database",
- "charset",
- "charsets"
- ],
- "repository": "jshttp/mime-db",
- "devDependencies": {
- "bluebird": "3.7.2",
- "co": "4.6.0",
- "cogent": "1.0.1",
- "csv-parse": "4.16.3",
- "eslint": "7.32.0",
- "eslint-config-standard": "15.0.1",
- "eslint-plugin-import": "2.25.4",
- "eslint-plugin-markdown": "2.2.1",
- "eslint-plugin-node": "11.1.0",
- "eslint-plugin-promise": "5.1.1",
- "eslint-plugin-standard": "4.1.0",
- "gnode": "0.1.2",
- "media-typer": "1.1.0",
- "mocha": "9.2.1",
- "nyc": "15.1.0",
- "raw-body": "2.5.0",
- "stream-to-array": "2.3.0"
- },
- "files": [
- "HISTORY.md",
- "LICENSE",
- "README.md",
- "db.json",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "build": "node scripts/build",
- "fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx",
- "lint": "eslint .",
- "test": "mocha --reporter spec --bail --check-leaks test/",
- "test-ci": "nyc --reporter=lcov --reporter=text npm test",
- "test-cov": "nyc --reporter=html --reporter=text npm test",
- "update": "npm run fetch && npm run build",
- "version": "node scripts/version-history.js && git add HISTORY.md"
- }
-}
diff --git a/node_modules/mime-types/HISTORY.md b/node_modules/mime-types/HISTORY.md
deleted file mode 100644
index c5043b7..0000000
--- a/node_modules/mime-types/HISTORY.md
+++ /dev/null
@@ -1,397 +0,0 @@
-2.1.35 / 2022-03-12
-===================
-
- * deps: mime-db@1.52.0
- - Add extensions from IANA for more `image/*` types
- - Add extension `.asc` to `application/pgp-keys`
- - Add extensions to various XML types
- - Add new upstream MIME types
-
-2.1.34 / 2021-11-08
-===================
-
- * deps: mime-db@1.51.0
- - Add new upstream MIME types
-
-2.1.33 / 2021-10-01
-===================
-
- * deps: mime-db@1.50.0
- - Add deprecated iWorks mime types and extensions
- - Add new upstream MIME types
-
-2.1.32 / 2021-07-27
-===================
-
- * deps: mime-db@1.49.0
- - Add extension `.trig` to `application/trig`
- - Add new upstream MIME types
-
-2.1.31 / 2021-06-01
-===================
-
- * deps: mime-db@1.48.0
- - Add extension `.mvt` to `application/vnd.mapbox-vector-tile`
- - Add new upstream MIME types
-
-2.1.30 / 2021-04-02
-===================
-
- * deps: mime-db@1.47.0
- - Add extension `.amr` to `audio/amr`
- - Remove ambigious extensions from IANA for `application/*+xml` types
- - Update primary extension to `.es` for `application/ecmascript`
-
-2.1.29 / 2021-02-17
-===================
-
- * deps: mime-db@1.46.0
- - Add extension `.amr` to `audio/amr`
- - Add extension `.m4s` to `video/iso.segment`
- - Add extension `.opus` to `audio/ogg`
- - Add new upstream MIME types
-
-2.1.28 / 2021-01-01
-===================
-
- * deps: mime-db@1.45.0
- - Add `application/ubjson` with extension `.ubj`
- - Add `image/avif` with extension `.avif`
- - Add `image/ktx2` with extension `.ktx2`
- - Add extension `.dbf` to `application/vnd.dbf`
- - Add extension `.rar` to `application/vnd.rar`
- - Add extension `.td` to `application/urc-targetdesc+xml`
- - Add new upstream MIME types
- - Fix extension of `application/vnd.apple.keynote` to be `.key`
-
-2.1.27 / 2020-04-23
-===================
-
- * deps: mime-db@1.44.0
- - Add charsets from IANA
- - Add extension `.cjs` to `application/node`
- - Add new upstream MIME types
-
-2.1.26 / 2020-01-05
-===================
-
- * deps: mime-db@1.43.0
- - Add `application/x-keepass2` with extension `.kdbx`
- - Add extension `.mxmf` to `audio/mobile-xmf`
- - Add extensions from IANA for `application/*+xml` types
- - Add new upstream MIME types
-
-2.1.25 / 2019-11-12
-===================
-
- * deps: mime-db@1.42.0
- - Add new upstream MIME types
- - Add `application/toml` with extension `.toml`
- - Add `image/vnd.ms-dds` with extension `.dds`
-
-2.1.24 / 2019-04-20
-===================
-
- * deps: mime-db@1.40.0
- - Add extensions from IANA for `model/*` types
- - Add `text/mdx` with extension `.mdx`
-
-2.1.23 / 2019-04-17
-===================
-
- * deps: mime-db@~1.39.0
- - Add extensions `.siv` and `.sieve` to `application/sieve`
- - Add new upstream MIME types
-
-2.1.22 / 2019-02-14
-===================
-
- * deps: mime-db@~1.38.0
- - Add extension `.nq` to `application/n-quads`
- - Add extension `.nt` to `application/n-triples`
- - Add new upstream MIME types
-
-2.1.21 / 2018-10-19
-===================
-
- * deps: mime-db@~1.37.0
- - Add extensions to HEIC image types
- - Add new upstream MIME types
-
-2.1.20 / 2018-08-26
-===================
-
- * deps: mime-db@~1.36.0
- - Add Apple file extensions from IANA
- - Add extensions from IANA for `image/*` types
- - Add new upstream MIME types
-
-2.1.19 / 2018-07-17
-===================
-
- * deps: mime-db@~1.35.0
- - Add extension `.csl` to `application/vnd.citationstyles.style+xml`
- - Add extension `.es` to `application/ecmascript`
- - Add extension `.owl` to `application/rdf+xml`
- - Add new upstream MIME types
- - Add UTF-8 as default charset for `text/turtle`
-
-2.1.18 / 2018-02-16
-===================
-
- * deps: mime-db@~1.33.0
- - Add `application/raml+yaml` with extension `.raml`
- - Add `application/wasm` with extension `.wasm`
- - Add `text/shex` with extension `.shex`
- - Add extensions for JPEG-2000 images
- - Add extensions from IANA for `message/*` types
- - Add new upstream MIME types
- - Update font MIME types
- - Update `text/hjson` to registered `application/hjson`
-
-2.1.17 / 2017-09-01
-===================
-
- * deps: mime-db@~1.30.0
- - Add `application/vnd.ms-outlook`
- - Add `application/x-arj`
- - Add extension `.mjs` to `application/javascript`
- - Add glTF types and extensions
- - Add new upstream MIME types
- - Add `text/x-org`
- - Add VirtualBox MIME types
- - Fix `source` records for `video/*` types that are IANA
- - Update `font/opentype` to registered `font/otf`
-
-2.1.16 / 2017-07-24
-===================
-
- * deps: mime-db@~1.29.0
- - Add `application/fido.trusted-apps+json`
- - Add extension `.wadl` to `application/vnd.sun.wadl+xml`
- - Add extension `.gz` to `application/gzip`
- - Add new upstream MIME types
- - Update extensions `.md` and `.markdown` to be `text/markdown`
-
-2.1.15 / 2017-03-23
-===================
-
- * deps: mime-db@~1.27.0
- - Add new mime types
- - Add `image/apng`
-
-2.1.14 / 2017-01-14
-===================
-
- * deps: mime-db@~1.26.0
- - Add new mime types
-
-2.1.13 / 2016-11-18
-===================
-
- * deps: mime-db@~1.25.0
- - Add new mime types
-
-2.1.12 / 2016-09-18
-===================
-
- * deps: mime-db@~1.24.0
- - Add new mime types
- - Add `audio/mp3`
-
-2.1.11 / 2016-05-01
-===================
-
- * deps: mime-db@~1.23.0
- - Add new mime types
-
-2.1.10 / 2016-02-15
-===================
-
- * deps: mime-db@~1.22.0
- - Add new mime types
- - Fix extension of `application/dash+xml`
- - Update primary extension for `audio/mp4`
-
-2.1.9 / 2016-01-06
-==================
-
- * deps: mime-db@~1.21.0
- - Add new mime types
-
-2.1.8 / 2015-11-30
-==================
-
- * deps: mime-db@~1.20.0
- - Add new mime types
-
-2.1.7 / 2015-09-20
-==================
-
- * deps: mime-db@~1.19.0
- - Add new mime types
-
-2.1.6 / 2015-09-03
-==================
-
- * deps: mime-db@~1.18.0
- - Add new mime types
-
-2.1.5 / 2015-08-20
-==================
-
- * deps: mime-db@~1.17.0
- - Add new mime types
-
-2.1.4 / 2015-07-30
-==================
-
- * deps: mime-db@~1.16.0
- - Add new mime types
-
-2.1.3 / 2015-07-13
-==================
-
- * deps: mime-db@~1.15.0
- - Add new mime types
-
-2.1.2 / 2015-06-25
-==================
-
- * deps: mime-db@~1.14.0
- - Add new mime types
-
-2.1.1 / 2015-06-08
-==================
-
- * perf: fix deopt during mapping
-
-2.1.0 / 2015-06-07
-==================
-
- * Fix incorrectly treating extension-less file name as extension
- - i.e. `'path/to/json'` will no longer return `application/json`
- * Fix `.charset(type)` to accept parameters
- * Fix `.charset(type)` to match case-insensitive
- * Improve generation of extension to MIME mapping
- * Refactor internals for readability and no argument reassignment
- * Prefer `application/*` MIME types from the same source
- * Prefer any type over `application/octet-stream`
- * deps: mime-db@~1.13.0
- - Add nginx as a source
- - Add new mime types
-
-2.0.14 / 2015-06-06
-===================
-
- * deps: mime-db@~1.12.0
- - Add new mime types
-
-2.0.13 / 2015-05-31
-===================
-
- * deps: mime-db@~1.11.0
- - Add new mime types
-
-2.0.12 / 2015-05-19
-===================
-
- * deps: mime-db@~1.10.0
- - Add new mime types
-
-2.0.11 / 2015-05-05
-===================
-
- * deps: mime-db@~1.9.1
- - Add new mime types
-
-2.0.10 / 2015-03-13
-===================
-
- * deps: mime-db@~1.8.0
- - Add new mime types
-
-2.0.9 / 2015-02-09
-==================
-
- * deps: mime-db@~1.7.0
- - Add new mime types
- - Community extensions ownership transferred from `node-mime`
-
-2.0.8 / 2015-01-29
-==================
-
- * deps: mime-db@~1.6.0
- - Add new mime types
-
-2.0.7 / 2014-12-30
-==================
-
- * deps: mime-db@~1.5.0
- - Add new mime types
- - Fix various invalid MIME type entries
-
-2.0.6 / 2014-12-30
-==================
-
- * deps: mime-db@~1.4.0
- - Add new mime types
- - Fix various invalid MIME type entries
- - Remove example template MIME types
-
-2.0.5 / 2014-12-29
-==================
-
- * deps: mime-db@~1.3.1
- - Fix missing extensions
-
-2.0.4 / 2014-12-10
-==================
-
- * deps: mime-db@~1.3.0
- - Add new mime types
-
-2.0.3 / 2014-11-09
-==================
-
- * deps: mime-db@~1.2.0
- - Add new mime types
-
-2.0.2 / 2014-09-28
-==================
-
- * deps: mime-db@~1.1.0
- - Add new mime types
- - Update charsets
-
-2.0.1 / 2014-09-07
-==================
-
- * Support Node.js 0.6
-
-2.0.0 / 2014-09-02
-==================
-
- * Use `mime-db`
- * Remove `.define()`
-
-1.0.2 / 2014-08-04
-==================
-
- * Set charset=utf-8 for `text/javascript`
-
-1.0.1 / 2014-06-24
-==================
-
- * Add `text/jsx` type
-
-1.0.0 / 2014-05-12
-==================
-
- * Return `false` for unknown types
- * Set charset=utf-8 for `application/json`
-
-0.1.0 / 2014-05-02
-==================
-
- * Initial release
diff --git a/node_modules/mime-types/LICENSE b/node_modules/mime-types/LICENSE
deleted file mode 100644
index 0616607..0000000
--- a/node_modules/mime-types/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 Jonathan Ong
-Copyright (c) 2015 Douglas Christopher Wilson
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/mime-types/README.md b/node_modules/mime-types/README.md
deleted file mode 100644
index 48d2fb4..0000000
--- a/node_modules/mime-types/README.md
+++ /dev/null
@@ -1,113 +0,0 @@
-# mime-types
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][ci-image]][ci-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-The ultimate javascript content-type utility.
-
-Similar to [the `mime@1.x` module](https://www.npmjs.com/package/mime), except:
-
-- __No fallbacks.__ Instead of naively returning the first available type,
- `mime-types` simply returns `false`, so do
- `var type = mime.lookup('unrecognized') || 'application/octet-stream'`.
-- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`.
-- No `.define()` functionality
-- Bug fixes for `.lookup(path)`
-
-Otherwise, the API is compatible with `mime` 1.x.
-
-## Install
-
-This is a [Node.js](https://nodejs.org/en/) module available through the
-[npm registry](https://www.npmjs.com/). Installation is done using the
-[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
-
-```sh
-$ npm install mime-types
-```
-
-## Adding Types
-
-All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db),
-so open a PR there if you'd like to add mime types.
-
-## API
-
-```js
-var mime = require('mime-types')
-```
-
-All functions return `false` if input is invalid or not found.
-
-### mime.lookup(path)
-
-Lookup the content-type associated with a file.
-
-```js
-mime.lookup('json') // 'application/json'
-mime.lookup('.md') // 'text/markdown'
-mime.lookup('file.html') // 'text/html'
-mime.lookup('folder/file.js') // 'application/javascript'
-mime.lookup('folder/.htaccess') // false
-
-mime.lookup('cats') // false
-```
-
-### mime.contentType(type)
-
-Create a full content-type header given a content-type or extension.
-When given an extension, `mime.lookup` is used to get the matching
-content-type, otherwise the given content-type is used. Then if the
-content-type does not already have a `charset` parameter, `mime.charset`
-is used to get the default charset and add to the returned content-type.
-
-```js
-mime.contentType('markdown') // 'text/x-markdown; charset=utf-8'
-mime.contentType('file.json') // 'application/json; charset=utf-8'
-mime.contentType('text/html') // 'text/html; charset=utf-8'
-mime.contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1'
-
-// from a full path
-mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8'
-```
-
-### mime.extension(type)
-
-Get the default extension for a content-type.
-
-```js
-mime.extension('application/octet-stream') // 'bin'
-```
-
-### mime.charset(type)
-
-Lookup the implied default charset of a content-type.
-
-```js
-mime.charset('text/markdown') // 'UTF-8'
-```
-
-### var type = mime.types[extension]
-
-A map of content-types by extension.
-
-### [extensions...] = mime.extensions[type]
-
-A map of extensions by content-type.
-
-## License
-
-[MIT](LICENSE)
-
-[ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci
-[ci-url]: https://github.com/jshttp/mime-types/actions/workflows/ci.yml
-[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master
-[coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master
-[node-version-image]: https://badgen.net/npm/node/mime-types
-[node-version-url]: https://nodejs.org/en/download
-[npm-downloads-image]: https://badgen.net/npm/dm/mime-types
-[npm-url]: https://npmjs.org/package/mime-types
-[npm-version-image]: https://badgen.net/npm/v/mime-types
diff --git a/node_modules/mime-types/index.js b/node_modules/mime-types/index.js
deleted file mode 100644
index b9f34d5..0000000
--- a/node_modules/mime-types/index.js
+++ /dev/null
@@ -1,188 +0,0 @@
-/*!
- * mime-types
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module dependencies.
- * @private
- */
-
-var db = require('mime-db')
-var extname = require('path').extname
-
-/**
- * Module variables.
- * @private
- */
-
-var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/
-var TEXT_TYPE_REGEXP = /^text\//i
-
-/**
- * Module exports.
- * @public
- */
-
-exports.charset = charset
-exports.charsets = { lookup: charset }
-exports.contentType = contentType
-exports.extension = extension
-exports.extensions = Object.create(null)
-exports.lookup = lookup
-exports.types = Object.create(null)
-
-// Populate the extensions/types maps
-populateMaps(exports.extensions, exports.types)
-
-/**
- * Get the default charset for a MIME type.
- *
- * @param {string} type
- * @return {boolean|string}
- */
-
-function charset (type) {
- if (!type || typeof type !== 'string') {
- return false
- }
-
- // TODO: use media-typer
- var match = EXTRACT_TYPE_REGEXP.exec(type)
- var mime = match && db[match[1].toLowerCase()]
-
- if (mime && mime.charset) {
- return mime.charset
- }
-
- // default text/* to utf-8
- if (match && TEXT_TYPE_REGEXP.test(match[1])) {
- return 'UTF-8'
- }
-
- return false
-}
-
-/**
- * Create a full Content-Type header given a MIME type or extension.
- *
- * @param {string} str
- * @return {boolean|string}
- */
-
-function contentType (str) {
- // TODO: should this even be in this module?
- if (!str || typeof str !== 'string') {
- return false
- }
-
- var mime = str.indexOf('/') === -1
- ? exports.lookup(str)
- : str
-
- if (!mime) {
- return false
- }
-
- // TODO: use content-type or other module
- if (mime.indexOf('charset') === -1) {
- var charset = exports.charset(mime)
- if (charset) mime += '; charset=' + charset.toLowerCase()
- }
-
- return mime
-}
-
-/**
- * Get the default extension for a MIME type.
- *
- * @param {string} type
- * @return {boolean|string}
- */
-
-function extension (type) {
- if (!type || typeof type !== 'string') {
- return false
- }
-
- // TODO: use media-typer
- var match = EXTRACT_TYPE_REGEXP.exec(type)
-
- // get extensions
- var exts = match && exports.extensions[match[1].toLowerCase()]
-
- if (!exts || !exts.length) {
- return false
- }
-
- return exts[0]
-}
-
-/**
- * Lookup the MIME type for a file path/extension.
- *
- * @param {string} path
- * @return {boolean|string}
- */
-
-function lookup (path) {
- if (!path || typeof path !== 'string') {
- return false
- }
-
- // get the extension ("ext" or ".ext" or full path)
- var extension = extname('x.' + path)
- .toLowerCase()
- .substr(1)
-
- if (!extension) {
- return false
- }
-
- return exports.types[extension] || false
-}
-
-/**
- * Populate the extensions and types maps.
- * @private
- */
-
-function populateMaps (extensions, types) {
- // source preference (least -> most)
- var preference = ['nginx', 'apache', undefined, 'iana']
-
- Object.keys(db).forEach(function forEachMimeType (type) {
- var mime = db[type]
- var exts = mime.extensions
-
- if (!exts || !exts.length) {
- return
- }
-
- // mime -> extensions
- extensions[type] = exts
-
- // extension -> mime
- for (var i = 0; i < exts.length; i++) {
- var extension = exts[i]
-
- if (types[extension]) {
- var from = preference.indexOf(db[types[extension]].source)
- var to = preference.indexOf(mime.source)
-
- if (types[extension] !== 'application/octet-stream' &&
- (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {
- // skip the remapping
- continue
- }
- }
-
- // set the extension -> mime
- types[extension] = type
- }
- })
-}
diff --git a/node_modules/mime-types/package.json b/node_modules/mime-types/package.json
deleted file mode 100644
index bbef696..0000000
--- a/node_modules/mime-types/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "mime-types",
- "description": "The ultimate javascript content-type utility.",
- "version": "2.1.35",
- "contributors": [
- "Douglas Christopher Wilson ",
- "Jeremiah Senkpiel (https://searchbeam.jit.su)",
- "Jonathan Ong (http://jongleberry.com)"
- ],
- "license": "MIT",
- "keywords": [
- "mime",
- "types"
- ],
- "repository": "jshttp/mime-types",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "devDependencies": {
- "eslint": "7.32.0",
- "eslint-config-standard": "14.1.1",
- "eslint-plugin-import": "2.25.4",
- "eslint-plugin-markdown": "2.2.1",
- "eslint-plugin-node": "11.1.0",
- "eslint-plugin-promise": "5.2.0",
- "eslint-plugin-standard": "4.1.0",
- "mocha": "9.2.2",
- "nyc": "15.1.0"
- },
- "files": [
- "HISTORY.md",
- "LICENSE",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "lint": "eslint .",
- "test": "mocha --reporter spec test/test.js",
- "test-ci": "nyc --reporter=lcov --reporter=text npm test",
- "test-cov": "nyc --reporter=html --reporter=text npm test"
- }
-}
diff --git a/node_modules/mime/.npmignore b/node_modules/mime/.npmignore
deleted file mode 100644
index e69de29..0000000
diff --git a/node_modules/mime/CHANGELOG.md b/node_modules/mime/CHANGELOG.md
deleted file mode 100644
index f127535..0000000
--- a/node_modules/mime/CHANGELOG.md
+++ /dev/null
@@ -1,164 +0,0 @@
-# Changelog
-
-## v1.6.0 (24/11/2017)
-*No changelog for this release.*
-
----
-
-## v2.0.4 (24/11/2017)
-- [**closed**] Switch to mime-score module for resolving extension contention issues. [#182](https://github.com/broofa/node-mime/issues/182)
-- [**closed**] Update mime-db to 1.31.0 in v1.x branch [#181](https://github.com/broofa/node-mime/issues/181)
-
----
-
-## v1.5.0 (22/11/2017)
-- [**closed**] need ES5 version ready in npm package [#179](https://github.com/broofa/node-mime/issues/179)
-- [**closed**] mime-db no trace of iWork - pages / numbers / etc. [#178](https://github.com/broofa/node-mime/issues/178)
-- [**closed**] How it works in brownser ? [#176](https://github.com/broofa/node-mime/issues/176)
-- [**closed**] Missing `./Mime` [#175](https://github.com/broofa/node-mime/issues/175)
-- [**closed**] Vulnerable Regular Expression [#167](https://github.com/broofa/node-mime/issues/167)
-
----
-
-## v2.0.3 (25/09/2017)
-*No changelog for this release.*
-
----
-
-## v1.4.1 (25/09/2017)
-- [**closed**] Issue when bundling with webpack [#172](https://github.com/broofa/node-mime/issues/172)
-
----
-
-## v2.0.2 (15/09/2017)
-- [**V2**] fs.readFileSync is not a function [#165](https://github.com/broofa/node-mime/issues/165)
-- [**closed**] The extension for video/quicktime should map to .mov, not .qt [#164](https://github.com/broofa/node-mime/issues/164)
-- [**V2**] [v2 Feedback request] Mime class API [#163](https://github.com/broofa/node-mime/issues/163)
-- [**V2**] [v2 Feedback request] Resolving conflicts over extensions [#162](https://github.com/broofa/node-mime/issues/162)
-- [**V2**] Allow callers to load module with official, full, or no defined types. [#161](https://github.com/broofa/node-mime/issues/161)
-- [**V2**] Use "facets" to resolve extension conflicts [#160](https://github.com/broofa/node-mime/issues/160)
-- [**V2**] Remove fs and path dependencies [#152](https://github.com/broofa/node-mime/issues/152)
-- [**V2**] Default content-type should not be application/octet-stream [#139](https://github.com/broofa/node-mime/issues/139)
-- [**V2**] reset mime-types [#124](https://github.com/broofa/node-mime/issues/124)
-- [**V2**] Extensionless paths should return null or false [#113](https://github.com/broofa/node-mime/issues/113)
-
----
-
-## v2.0.1 (14/09/2017)
-- [**closed**] Changelog for v2.0 does not mention breaking changes [#171](https://github.com/broofa/node-mime/issues/171)
-- [**closed**] MIME breaking with 'class' declaration as it is without 'use strict mode' [#170](https://github.com/broofa/node-mime/issues/170)
-
----
-
-## v2.0.0 (12/09/2017)
-- [**closed**] woff and woff2 [#168](https://github.com/broofa/node-mime/issues/168)
-
----
-
-## v1.4.0 (28/08/2017)
-- [**closed**] support for ac3 voc files [#159](https://github.com/broofa/node-mime/issues/159)
-- [**closed**] Help understanding change from application/xml to text/xml [#158](https://github.com/broofa/node-mime/issues/158)
-- [**closed**] no longer able to override mimetype [#157](https://github.com/broofa/node-mime/issues/157)
-- [**closed**] application/vnd.adobe.photoshop [#147](https://github.com/broofa/node-mime/issues/147)
-- [**closed**] Directories should appear as something other than application/octet-stream [#135](https://github.com/broofa/node-mime/issues/135)
-- [**closed**] requested features [#131](https://github.com/broofa/node-mime/issues/131)
-- [**closed**] Make types.json loading optional? [#129](https://github.com/broofa/node-mime/issues/129)
-- [**closed**] Cannot find module './types.json' [#120](https://github.com/broofa/node-mime/issues/120)
-- [**V2**] .wav files show up as "audio/x-wav" instead of "audio/x-wave" [#118](https://github.com/broofa/node-mime/issues/118)
-- [**closed**] Don't be a pain in the ass for node community [#108](https://github.com/broofa/node-mime/issues/108)
-- [**closed**] don't make default_type global [#78](https://github.com/broofa/node-mime/issues/78)
-- [**closed**] mime.extension() fails if the content-type is parameterized [#74](https://github.com/broofa/node-mime/issues/74)
-
----
-
-## v1.3.6 (11/05/2017)
-- [**closed**] .md should be text/markdown as of March 2016 [#154](https://github.com/broofa/node-mime/issues/154)
-- [**closed**] Error while installing mime [#153](https://github.com/broofa/node-mime/issues/153)
-- [**closed**] application/manifest+json [#149](https://github.com/broofa/node-mime/issues/149)
-- [**closed**] Dynamic adaptive streaming over HTTP (DASH) file extension typo [#141](https://github.com/broofa/node-mime/issues/141)
-- [**closed**] charsets image/png undefined [#140](https://github.com/broofa/node-mime/issues/140)
-- [**closed**] Mime-db dependency out of date [#130](https://github.com/broofa/node-mime/issues/130)
-- [**closed**] how to support plist? [#126](https://github.com/broofa/node-mime/issues/126)
-- [**closed**] how does .types file format look like? [#123](https://github.com/broofa/node-mime/issues/123)
-- [**closed**] Feature: support for expanding MIME patterns [#121](https://github.com/broofa/node-mime/issues/121)
-- [**closed**] DEBUG_MIME doesn't work [#117](https://github.com/broofa/node-mime/issues/117)
-
----
-
-## v1.3.4 (06/02/2015)
-*No changelog for this release.*
-
----
-
-## v1.3.3 (06/02/2015)
-*No changelog for this release.*
-
----
-
-## v1.3.1 (05/02/2015)
-- [**closed**] Consider adding support for Handlebars .hbs file ending [#111](https://github.com/broofa/node-mime/issues/111)
-- [**closed**] Consider adding support for hjson. [#110](https://github.com/broofa/node-mime/issues/110)
-- [**closed**] Add mime type for Opus audio files [#94](https://github.com/broofa/node-mime/issues/94)
-- [**closed**] Consider making the `Requesting New Types` information more visible [#77](https://github.com/broofa/node-mime/issues/77)
-
----
-
-## v1.3.0 (05/02/2015)
-- [**closed**] Add common name? [#114](https://github.com/broofa/node-mime/issues/114)
-- [**closed**] application/x-yaml [#104](https://github.com/broofa/node-mime/issues/104)
-- [**closed**] Add mime type for WOFF file format 2.0 [#102](https://github.com/broofa/node-mime/issues/102)
-- [**closed**] application/x-msi for .msi [#99](https://github.com/broofa/node-mime/issues/99)
-- [**closed**] Add mimetype for gettext translation files [#98](https://github.com/broofa/node-mime/issues/98)
-- [**closed**] collaborators [#88](https://github.com/broofa/node-mime/issues/88)
-- [**closed**] getting errot in installation of mime module...any1 can help? [#87](https://github.com/broofa/node-mime/issues/87)
-- [**closed**] should application/json's charset be utf8? [#86](https://github.com/broofa/node-mime/issues/86)
-- [**closed**] Add "license" and "licenses" to package.json [#81](https://github.com/broofa/node-mime/issues/81)
-- [**closed**] lookup with extension-less file on Windows returns wrong type [#68](https://github.com/broofa/node-mime/issues/68)
-
----
-
-## v1.2.11 (15/08/2013)
-- [**closed**] Update mime.types [#65](https://github.com/broofa/node-mime/issues/65)
-- [**closed**] Publish a new version [#63](https://github.com/broofa/node-mime/issues/63)
-- [**closed**] README should state upfront that "application/octet-stream" is default for unknown extension [#55](https://github.com/broofa/node-mime/issues/55)
-- [**closed**] Suggested improvement to the charset API [#52](https://github.com/broofa/node-mime/issues/52)
-
----
-
-## v1.2.10 (25/07/2013)
-- [**closed**] Mime type for woff files should be application/font-woff and not application/x-font-woff [#62](https://github.com/broofa/node-mime/issues/62)
-- [**closed**] node.types in conflict with mime.types [#51](https://github.com/broofa/node-mime/issues/51)
-
----
-
-## v1.2.9 (17/01/2013)
-- [**closed**] Please update "mime" NPM [#49](https://github.com/broofa/node-mime/issues/49)
-- [**closed**] Please add semicolon [#46](https://github.com/broofa/node-mime/issues/46)
-- [**closed**] parse full mime types [#43](https://github.com/broofa/node-mime/issues/43)
-
----
-
-## v1.2.8 (10/01/2013)
-- [**closed**] /js directory mime is application/javascript. Is it correct? [#47](https://github.com/broofa/node-mime/issues/47)
-- [**closed**] Add mime types for lua code. [#45](https://github.com/broofa/node-mime/issues/45)
-
----
-
-## v1.2.7 (19/10/2012)
-- [**closed**] cannot install 1.2.7 via npm [#41](https://github.com/broofa/node-mime/issues/41)
-- [**closed**] Transfer ownership to @broofa [#36](https://github.com/broofa/node-mime/issues/36)
-- [**closed**] it's wrong to set charset to UTF-8 for text [#30](https://github.com/broofa/node-mime/issues/30)
-- [**closed**] Allow multiple instances of MIME types container [#27](https://github.com/broofa/node-mime/issues/27)
-
----
-
-## v1.2.5 (16/02/2012)
-- [**closed**] When looking up a types, check hasOwnProperty [#23](https://github.com/broofa/node-mime/issues/23)
-- [**closed**] Bump version to 1.2.2 [#18](https://github.com/broofa/node-mime/issues/18)
-- [**closed**] No license [#16](https://github.com/broofa/node-mime/issues/16)
-- [**closed**] Some types missing that are used by html5/css3 [#13](https://github.com/broofa/node-mime/issues/13)
-- [**closed**] npm install fails for 1.2.1 [#12](https://github.com/broofa/node-mime/issues/12)
-- [**closed**] image/pjpeg + image/x-png [#10](https://github.com/broofa/node-mime/issues/10)
-- [**closed**] symlink [#8](https://github.com/broofa/node-mime/issues/8)
-- [**closed**] gzip [#2](https://github.com/broofa/node-mime/issues/2)
-- [**closed**] ALL CAPS filenames return incorrect mime type [#1](https://github.com/broofa/node-mime/issues/1)
diff --git a/node_modules/mime/LICENSE b/node_modules/mime/LICENSE
deleted file mode 100644
index d3f46f7..0000000
--- a/node_modules/mime/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2010 Benjamin Thomas, Robert Kieffer
-
-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/mime/README.md b/node_modules/mime/README.md
deleted file mode 100644
index 506fbe5..0000000
--- a/node_modules/mime/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# mime
-
-Comprehensive MIME type mapping API based on mime-db module.
-
-## Install
-
-Install with [npm](http://github.com/isaacs/npm):
-
- npm install mime
-
-## Contributing / Testing
-
- npm run test
-
-## Command Line
-
- mime [path_string]
-
-E.g.
-
- > mime scripts/jquery.js
- application/javascript
-
-## API - Queries
-
-### mime.lookup(path)
-Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.
-
-```js
-var mime = require('mime');
-
-mime.lookup('/path/to/file.txt'); // => 'text/plain'
-mime.lookup('file.txt'); // => 'text/plain'
-mime.lookup('.TXT'); // => 'text/plain'
-mime.lookup('htm'); // => 'text/html'
-```
-
-### mime.default_type
-Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)
-
-### mime.extension(type)
-Get the default extension for `type`
-
-```js
-mime.extension('text/html'); // => 'html'
-mime.extension('application/octet-stream'); // => 'bin'
-```
-
-### mime.charsets.lookup()
-
-Map mime-type to charset
-
-```js
-mime.charsets.lookup('text/plain'); // => 'UTF-8'
-```
-
-(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)
-
-## API - Defining Custom Types
-
-Custom type mappings can be added on a per-project basis via the following APIs.
-
-### mime.define()
-
-Add custom mime/extension mappings
-
-```js
-mime.define({
- 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],
- 'application/x-my-type': ['x-mt', 'x-mtt'],
- // etc ...
-});
-
-mime.lookup('x-sft'); // => 'text/x-some-format'
-```
-
-The first entry in the extensions array is returned by `mime.extension()`. E.g.
-
-```js
-mime.extension('text/x-some-format'); // => 'x-sf'
-```
-
-### mime.load(filepath)
-
-Load mappings from an Apache ".types" format file
-
-```js
-mime.load('./my_project.types');
-```
-The .types file format is simple - See the `types` dir for examples.
diff --git a/node_modules/mime/cli.js b/node_modules/mime/cli.js
deleted file mode 100755
index 20b1ffe..0000000
--- a/node_modules/mime/cli.js
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env node
-
-var mime = require('./mime.js');
-var file = process.argv[2];
-var type = mime.lookup(file);
-
-process.stdout.write(type + '\n');
-
diff --git a/node_modules/mime/mime.js b/node_modules/mime/mime.js
deleted file mode 100644
index d7efbde..0000000
--- a/node_modules/mime/mime.js
+++ /dev/null
@@ -1,108 +0,0 @@
-var path = require('path');
-var fs = require('fs');
-
-function Mime() {
- // Map of extension -> mime type
- this.types = Object.create(null);
-
- // Map of mime type -> extension
- this.extensions = Object.create(null);
-}
-
-/**
- * Define mimetype -> extension mappings. Each key is a mime-type that maps
- * to an array of extensions associated with the type. The first extension is
- * used as the default extension for the type.
- *
- * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});
- *
- * @param map (Object) type definitions
- */
-Mime.prototype.define = function (map) {
- for (var type in map) {
- var exts = map[type];
- for (var i = 0; i < exts.length; i++) {
- if (process.env.DEBUG_MIME && this.types[exts[i]]) {
- console.warn((this._loading || "define()").replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' +
- this.types[exts[i]] + ' to ' + type);
- }
-
- this.types[exts[i]] = type;
- }
-
- // Default extension is the first one we encounter
- if (!this.extensions[type]) {
- this.extensions[type] = exts[0];
- }
- }
-};
-
-/**
- * Load an Apache2-style ".types" file
- *
- * This may be called multiple times (it's expected). Where files declare
- * overlapping types/extensions, the last file wins.
- *
- * @param file (String) path of file to load.
- */
-Mime.prototype.load = function(file) {
- this._loading = file;
- // Read file and split into lines
- var map = {},
- content = fs.readFileSync(file, 'ascii'),
- lines = content.split(/[\r\n]+/);
-
- lines.forEach(function(line) {
- // Clean up whitespace/comments, and split into fields
- var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/);
- map[fields.shift()] = fields;
- });
-
- this.define(map);
-
- this._loading = null;
-};
-
-/**
- * Lookup a mime type based on extension
- */
-Mime.prototype.lookup = function(path, fallback) {
- var ext = path.replace(/^.*[\.\/\\]/, '').toLowerCase();
-
- return this.types[ext] || fallback || this.default_type;
-};
-
-/**
- * Return file extension associated with a mime type
- */
-Mime.prototype.extension = function(mimeType) {
- var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase();
- return this.extensions[type];
-};
-
-// Default instance
-var mime = new Mime();
-
-// Define built-in types
-mime.define(require('./types.json'));
-
-// Default type
-mime.default_type = mime.lookup('bin');
-
-//
-// Additional API specific to the default instance
-//
-
-mime.Mime = Mime;
-
-/**
- * Lookup a charset based on mime type.
- */
-mime.charsets = {
- lookup: function(mimeType, fallback) {
- // Assume text types are utf8
- return (/^text\/|^application\/(javascript|json)/).test(mimeType) ? 'UTF-8' : fallback;
- }
-};
-
-module.exports = mime;
diff --git a/node_modules/mime/package.json b/node_modules/mime/package.json
deleted file mode 100644
index 6bd24bc..0000000
--- a/node_modules/mime/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "author": {
- "name": "Robert Kieffer",
- "url": "http://github.com/broofa",
- "email": "robert@broofa.com"
- },
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- },
- "contributors": [
- {
- "name": "Benjamin Thomas",
- "url": "http://github.com/bentomas",
- "email": "benjamin@benjaminthomas.org"
- }
- ],
- "description": "A comprehensive library for mime-type mapping",
- "license": "MIT",
- "dependencies": {},
- "devDependencies": {
- "github-release-notes": "0.13.1",
- "mime-db": "1.31.0",
- "mime-score": "1.1.0"
- },
- "scripts": {
- "prepare": "node src/build.js",
- "changelog": "gren changelog --tags=all --generate --override",
- "test": "node src/test.js"
- },
- "keywords": [
- "util",
- "mime"
- ],
- "main": "mime.js",
- "name": "mime",
- "repository": {
- "url": "https://github.com/broofa/node-mime",
- "type": "git"
- },
- "version": "1.6.0"
-}
diff --git a/node_modules/mime/src/build.js b/node_modules/mime/src/build.js
deleted file mode 100755
index 4928e48..0000000
--- a/node_modules/mime/src/build.js
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env node
-
-'use strict';
-
-const fs = require('fs');
-const path = require('path');
-const mimeScore = require('mime-score');
-
-let db = require('mime-db');
-let chalk = require('chalk');
-
-const STANDARD_FACET_SCORE = 900;
-
-const byExtension = {};
-
-// Clear out any conflict extensions in mime-db
-for (let type in db) {
- let entry = db[type];
- entry.type = type;
-
- if (!entry.extensions) continue;
-
- entry.extensions.forEach(ext => {
- if (ext in byExtension) {
- const e0 = entry;
- const e1 = byExtension[ext];
- e0.pri = mimeScore(e0.type, e0.source);
- e1.pri = mimeScore(e1.type, e1.source);
-
- let drop = e0.pri < e1.pri ? e0 : e1;
- let keep = e0.pri >= e1.pri ? e0 : e1;
- drop.extensions = drop.extensions.filter(e => e !== ext);
-
- console.log(`${ext}: Keeping ${chalk.green(keep.type)} (${keep.pri}), dropping ${chalk.red(drop.type)} (${drop.pri})`);
- }
- byExtension[ext] = entry;
- });
-}
-
-function writeTypesFile(types, path) {
- fs.writeFileSync(path, JSON.stringify(types));
-}
-
-// Segregate into standard and non-standard types based on facet per
-// https://tools.ietf.org/html/rfc6838#section-3.1
-const types = {};
-
-Object.keys(db).sort().forEach(k => {
- const entry = db[k];
- types[entry.type] = entry.extensions;
-});
-
-writeTypesFile(types, path.join(__dirname, '..', 'types.json'));
diff --git a/node_modules/mime/src/test.js b/node_modules/mime/src/test.js
deleted file mode 100644
index 42958a2..0000000
--- a/node_modules/mime/src/test.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Usage: node test.js
- */
-
-var mime = require('../mime');
-var assert = require('assert');
-var path = require('path');
-
-//
-// Test mime lookups
-//
-
-assert.equal('text/plain', mime.lookup('text.txt')); // normal file
-assert.equal('text/plain', mime.lookup('TEXT.TXT')); // uppercase
-assert.equal('text/plain', mime.lookup('dir/text.txt')); // dir + file
-assert.equal('text/plain', mime.lookup('.text.txt')); // hidden file
-assert.equal('text/plain', mime.lookup('.txt')); // nameless
-assert.equal('text/plain', mime.lookup('txt')); // extension-only
-assert.equal('text/plain', mime.lookup('/txt')); // extension-less ()
-assert.equal('text/plain', mime.lookup('\\txt')); // Windows, extension-less
-assert.equal('application/octet-stream', mime.lookup('text.nope')); // unrecognized
-assert.equal('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default
-
-//
-// Test extensions
-//
-
-assert.equal('txt', mime.extension(mime.types.text));
-assert.equal('html', mime.extension(mime.types.htm));
-assert.equal('bin', mime.extension('application/octet-stream'));
-assert.equal('bin', mime.extension('application/octet-stream '));
-assert.equal('html', mime.extension(' text/html; charset=UTF-8'));
-assert.equal('html', mime.extension('text/html; charset=UTF-8 '));
-assert.equal('html', mime.extension('text/html; charset=UTF-8'));
-assert.equal('html', mime.extension('text/html ; charset=UTF-8'));
-assert.equal('html', mime.extension('text/html;charset=UTF-8'));
-assert.equal('html', mime.extension('text/Html;charset=UTF-8'));
-assert.equal(undefined, mime.extension('unrecognized'));
-
-//
-// Test node.types lookups
-//
-
-assert.equal('font/woff', mime.lookup('file.woff'));
-assert.equal('application/octet-stream', mime.lookup('file.buffer'));
-// TODO: Uncomment once #157 is resolved
-// assert.equal('audio/mp4', mime.lookup('file.m4a'));
-assert.equal('font/otf', mime.lookup('file.otf'));
-
-//
-// Test charsets
-//
-
-assert.equal('UTF-8', mime.charsets.lookup('text/plain'));
-assert.equal('UTF-8', mime.charsets.lookup(mime.types.js));
-assert.equal('UTF-8', mime.charsets.lookup(mime.types.json));
-assert.equal(undefined, mime.charsets.lookup(mime.types.bin));
-assert.equal('fallback', mime.charsets.lookup('application/octet-stream', 'fallback'));
-
-console.log('\nAll tests passed');
diff --git a/node_modules/mime/types.json b/node_modules/mime/types.json
deleted file mode 100644
index bec78ab..0000000
--- a/node_modules/mime/types.json
+++ /dev/null
@@ -1 +0,0 @@
-{"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":[],"application/font-woff2":[],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":[],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":[],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":[],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":[],"application/x-msdownload":["com","bat"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":[],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":[],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":[],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":[],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":[],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":[],"audio/x-wav":[],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":[],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":[],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":[],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":[],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":[],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}
\ No newline at end of file
diff --git a/node_modules/mixin-deep/LICENSE b/node_modules/mixin-deep/LICENSE
deleted file mode 100644
index 99c9369..0000000
--- a/node_modules/mixin-deep/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2015, 2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/mixin-deep/README.md b/node_modules/mixin-deep/README.md
deleted file mode 100644
index 111bde0..0000000
--- a/node_modules/mixin-deep/README.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# mixin-deep [](https://www.npmjs.com/package/mixin-deep) [](https://npmjs.org/package/mixin-deep) [](https://npmjs.org/package/mixin-deep) [](https://travis-ci.org/jonschlinkert/mixin-deep)
-
-> Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save mixin-deep
-```
-
-## Usage
-
-```js
-var mixinDeep = require('mixin-deep');
-
-mixinDeep({a: {aa: 'aa'}}, {a: {bb: 'bb'}}, {a: {cc: 'cc'}});
-//=> { a: { aa: 'aa', bb: 'bb', cc: 'cc' } }
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [defaults-deep](https://www.npmjs.com/package/defaults-deep): Like `extend` but recursively copies only the missing properties/values to the target object. | [homepage](https://github.com/jonschlinkert/defaults-deep "Like `extend` but recursively copies only the missing properties/values to the target object.")
-* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.")
-* [merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep "Recursively merge values in a javascript object.")
-* [mixin-object](https://www.npmjs.com/package/mixin-object): Mixin the own and inherited properties of other objects onto the first object. Pass an… [more](https://github.com/jonschlinkert/mixin-object) | [homepage](https://github.com/jonschlinkert/mixin-object "Mixin the own and inherited properties of other objects onto the first object. Pass an empty object as the first arg to shallow clone.")
-
-### Author
-
-**Jon Schlinkert**
-
-* [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert)
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on December 09, 2017._
\ No newline at end of file
diff --git a/node_modules/mixin-deep/index.js b/node_modules/mixin-deep/index.js
deleted file mode 100644
index 47face2..0000000
--- a/node_modules/mixin-deep/index.js
+++ /dev/null
@@ -1,64 +0,0 @@
-'use strict';
-
-var isExtendable = require('is-extendable');
-var forIn = require('for-in');
-
-function mixinDeep(target, objects) {
- var len = arguments.length, i = 0;
- while (++i < len) {
- var obj = arguments[i];
- if (isObject(obj)) {
- forIn(obj, copy, target);
- }
- }
- return target;
-}
-
-/**
- * Copy properties from the source object to the
- * target object.
- *
- * @param {*} `val`
- * @param {String} `key`
- */
-
-function copy(val, key) {
- if (!isValidKey(key)) {
- return;
- }
-
- var obj = this[key];
- if (isObject(val) && isObject(obj)) {
- mixinDeep(obj, val);
- } else {
- this[key] = val;
- }
-}
-
-/**
- * Returns true if `val` is an object or function.
- *
- * @param {any} val
- * @return {Boolean}
- */
-
-function isObject(val) {
- return isExtendable(val) && !Array.isArray(val);
-}
-
-/**
- * Returns true if `key` is a valid key to use when extending objects.
- *
- * @param {String} `key`
- * @return {Boolean}
- */
-
-function isValidKey(key) {
- return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';
-};
-
-/**
- * Expose `mixinDeep`
- */
-
-module.exports = mixinDeep;
diff --git a/node_modules/mixin-deep/node_modules/is-extendable/LICENSE b/node_modules/mixin-deep/node_modules/is-extendable/LICENSE
deleted file mode 100644
index c0d7f13..0000000
--- a/node_modules/mixin-deep/node_modules/is-extendable/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/mixin-deep/node_modules/is-extendable/README.md b/node_modules/mixin-deep/node_modules/is-extendable/README.md
deleted file mode 100644
index 875b56a..0000000
--- a/node_modules/mixin-deep/node_modules/is-extendable/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# is-extendable [](https://www.npmjs.com/package/is-extendable) [](https://npmjs.org/package/is-extendable) [](https://npmjs.org/package/is-extendable) [](https://travis-ci.org/jonschlinkert/is-extendable)
-
-> Returns true if a value is a plain object, array or function.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save is-extendable
-```
-
-## Usage
-
-```js
-var isExtendable = require('is-extendable');
-```
-
-Returns true if the value is any of the following:
-
-* array
-* plain object
-* function
-
-## Notes
-
-All objects in JavaScript can have keys, but it's a pain to check for this, since we ether need to verify that the value is not `null` or `undefined` and:
-
-* the value is not a primitive, or
-* that the object is a plain object, function or array
-
-Also note that an `extendable` object is not the same as an [extensible object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible), which is one that (in es6) is not sealed, frozen, or marked as non-extensible using `preventExtensions`.
-
-## Release history
-
-### v1.0.0 - 2017/07/20
-
-**Breaking changes**
-
-* No longer considers date, regex or error objects to be extendable
-
-## About
-
-### Related projects
-
-* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target… [more](https://github.com/jonschlinkert/assign-deep) | [homepage](https://github.com/jonschlinkert/assign-deep "Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target (first) object.")
-* [is-equal-shallow](https://www.npmjs.com/package/is-equal-shallow): Does a shallow comparison of two objects, returning false if the keys or values differ. | [homepage](https://github.com/jonschlinkert/is-equal-shallow "Does a shallow comparison of two objects, returning false if the keys or values differ.")
-* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
-* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 20, 2017._
\ No newline at end of file
diff --git a/node_modules/mixin-deep/node_modules/is-extendable/index.d.ts b/node_modules/mixin-deep/node_modules/is-extendable/index.d.ts
deleted file mode 100644
index b96d507..0000000
--- a/node_modules/mixin-deep/node_modules/is-extendable/index.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export = isExtendable;
-
-declare function isExtendable(val: any): boolean;
-
-declare namespace isExtendable {}
diff --git a/node_modules/mixin-deep/node_modules/is-extendable/index.js b/node_modules/mixin-deep/node_modules/is-extendable/index.js
deleted file mode 100644
index a8b26ad..0000000
--- a/node_modules/mixin-deep/node_modules/is-extendable/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*!
- * is-extendable
- *
- * Copyright (c) 2015-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-var isPlainObject = require('is-plain-object');
-
-module.exports = function isExtendable(val) {
- return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);
-};
diff --git a/node_modules/mixin-deep/node_modules/is-extendable/package.json b/node_modules/mixin-deep/node_modules/is-extendable/package.json
deleted file mode 100644
index 2aaab65..0000000
--- a/node_modules/mixin-deep/node_modules/is-extendable/package.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "name": "is-extendable",
- "description": "Returns true if a value is a plain object, array or function.",
- "version": "1.0.1",
- "homepage": "https://github.com/jonschlinkert/is-extendable",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/is-extendable",
- "bugs": {
- "url": "https://github.com/jonschlinkert/is-extendable/issues"
- },
- "license": "MIT",
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "main": "index.js",
- "types": "index.d.ts",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "devDependencies": {
- "gulp-format-md": "^1.0.0",
- "mocha": "^3.4.2"
- },
- "keywords": [
- "array",
- "assign",
- "check",
- "date",
- "extend",
- "extendable",
- "extensible",
- "function",
- "is",
- "object",
- "regex",
- "test"
- ],
- "verb": {
- "related": {
- "list": [
- "assign-deep",
- "is-equal-shallow",
- "is-plain-object",
- "isobject",
- "kind-of"
- ]
- },
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/mixin-deep/package.json b/node_modules/mixin-deep/package.json
deleted file mode 100644
index 0581c46..0000000
--- a/node_modules/mixin-deep/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "name": "mixin-deep",
- "description": "Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.",
- "version": "1.3.2",
- "homepage": "https://github.com/jonschlinkert/mixin-deep",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/mixin-deep",
- "bugs": {
- "url": "https://github.com/jonschlinkert/mixin-deep/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "devDependencies": {
- "gulp-format-md": "^1.0.0",
- "mocha": "^3.5.3",
- "should": "^13.1.3"
- },
- "keywords": [
- "deep",
- "extend",
- "key",
- "keys",
- "merge",
- "mixin",
- "object",
- "prop",
- "properties",
- "util",
- "values"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "defaults-deep",
- "extend-shallow",
- "merge-deep",
- "mixin-object"
- ]
- },
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/morgan/HISTORY.md b/node_modules/morgan/HISTORY.md
deleted file mode 100644
index 436db47..0000000
--- a/node_modules/morgan/HISTORY.md
+++ /dev/null
@@ -1,215 +0,0 @@
-1.10.0 / 2020-03-20
-===================
-
- * Add `:total-time` token
- * Fix trailing space in colored status code for `dev` format
- * deps: basic-auth@~2.0.1
- - deps: safe-buffer@5.1.2
- * deps: depd@~2.0.0
- - Replace internal `eval` usage with `Function` constructor
- - Use instance methods on `process` to check for listeners
- * deps: on-headers@~1.0.2
- - Fix `res.writeHead` patch missing return value
-
-1.9.1 / 2018-09-10
-==================
-
- * Fix using special characters in format
- * deps: depd@~1.1.2
- - perf: remove argument reassignment
-
-1.9.0 / 2017-09-26
-==================
-
- * Use `res.headersSent` when available
- * deps: basic-auth@~2.0.0
- - Use `safe-buffer` for improved Buffer API
- * deps: debug@2.6.9
- * deps: depd@~1.1.1
- - Remove unnecessary `Buffer` loading
-
-1.8.2 / 2017-05-23
-==================
-
- * deps: debug@2.6.8
- - Fix `DEBUG_MAX_ARRAY_LENGTH`
- - deps: ms@2.0.0
-
-1.8.1 / 2017-02-04
-==================
-
- * deps: debug@2.6.1
- - Fix deprecation messages in WebStorm and other editors
- - Undeprecate `DEBUG_FD` set to `1` or `2`
-
-1.8.0 / 2017-02-04
-==================
-
- * Fix sending unnecessary `undefined` argument to token functions
- * deps: basic-auth@~1.1.0
- * deps: debug@2.6.0
- - Allow colors in workers
- - Deprecated `DEBUG_FD` environment variable
- - Fix error when running under React Native
- - Use same color for same namespace
- - deps: ms@0.7.2
- * perf: enable strict mode in compiled functions
-
-1.7.0 / 2016-02-18
-==================
-
- * Add `digits` argument to `response-time` token
- * deps: depd@~1.1.0
- - Enable strict mode in more places
- - Support web browser loading
- * deps: on-headers@~1.0.1
- - perf: enable strict mode
-
-1.6.1 / 2015-07-03
-==================
-
- * deps: basic-auth@~1.0.3
-
-1.6.0 / 2015-06-12
-==================
-
- * Add `morgan.compile(format)` export
- * Do not color 1xx status codes in `dev` format
- * Fix `response-time` token to not include response latency
- * Fix `status` token incorrectly displaying before response in `dev` format
- * Fix token return values to be `undefined` or a string
- * Improve representation of multiple headers in `req` and `res` tokens
- * Use `res.getHeader` in `res` token
- * deps: basic-auth@~1.0.2
- - perf: enable strict mode
- - perf: hoist regular expression
- - perf: parse with regular expressions
- - perf: remove argument reassignment
- * deps: on-finished@~2.3.0
- - Add defined behavior for HTTP `CONNECT` requests
- - Add defined behavior for HTTP `Upgrade` requests
- - deps: ee-first@1.1.1
- * pref: enable strict mode
- * pref: reduce function closure scopes
- * pref: remove dynamic compile on every request for `dev` format
- * pref: remove an argument reassignment
- * pref: skip function call without `skip` option
-
-1.5.3 / 2015-05-10
-==================
-
- * deps: basic-auth@~1.0.1
- * deps: debug@~2.2.0
- - deps: ms@0.7.1
- * deps: depd@~1.0.1
- * deps: on-finished@~2.2.1
- - Fix `isFinished(req)` when data buffered
-
-1.5.2 / 2015-03-15
-==================
-
- * deps: debug@~2.1.3
- - Fix high intensity foreground color for bold
- - deps: ms@0.7.0
-
-1.5.1 / 2014-12-31
-==================
-
- * deps: debug@~2.1.1
- * deps: on-finished@~2.2.0
-
-1.5.0 / 2014-11-06
-==================
-
- * Add multiple date formats
- - `clf` for the common log format
- - `iso` for the common ISO 8601 date time format
- - `web` for the common RFC 1123 date time format
- * Deprecate `buffer` option
- * Fix date format in `common` and `combined` formats
- * Fix token arguments to accept values with `"`
-
-1.4.1 / 2014-10-22
-==================
-
- * deps: on-finished@~2.1.1
- - Fix handling of pipelined requests
-
-1.4.0 / 2014-10-16
-==================
-
- * Add `debug` messages
- * deps: depd@~1.0.0
-
-1.3.2 / 2014-09-27
-==================
-
- * Fix `req.ip` integration when `immediate: false`
-
-1.3.1 / 2014-09-14
-==================
-
- * Remove un-used `bytes` dependency
- * deps: depd@0.4.5
-
-1.3.0 / 2014-09-01
-==================
-
- * Assert if `format` is not a function or string
-
-1.2.3 / 2014-08-16
-==================
-
- * deps: on-finished@2.1.0
-
-1.2.2 / 2014-07-27
-==================
-
- * deps: depd@0.4.4
- - Work-around v8 generating empty stack traces
-
-1.2.1 / 2014-07-26
-==================
-
- * deps: depd@0.4.3
- - Fix exception when global `Error.stackTraceLimit` is too low
-
-1.2.0 / 2014-07-19
-==================
-
- * Add `:remote-user` token
- * Add `combined` log format
- * Add `common` log format
- * Add `morgan(format, options)` function signature
- * Deprecate `default` format -- use `combined` format instead
- * Deprecate not providing a format
- * Remove non-standard grey color from `dev` format
-
-1.1.1 / 2014-05-20
-==================
-
- * simplify method to get remote address
-
-1.1.0 / 2014-05-18
-==================
-
- * "dev" format will use same tokens as other formats
- * `:response-time` token is now empty when immediate used
- * `:response-time` token is now monotonic
- * `:response-time` token has precision to 1 μs
- * fix `:status` + immediate output in node.js 0.8
- * improve `buffer` option to prevent indefinite event loop holding
- * deps: bytes@1.0.0
- - add negative support
-
-1.0.1 / 2014-05-04
-==================
-
- * Make buffer unique per morgan instance
- * deps: bytes@0.3.0
- * added terabyte support
-
-1.0.0 / 2014-02-08
-==================
-
- * Initial release
diff --git a/node_modules/morgan/LICENSE b/node_modules/morgan/LICENSE
deleted file mode 100644
index 3fefed9..0000000
--- a/node_modules/morgan/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 Jonathan Ong
-Copyright (c) 2014-2017 Douglas Christopher Wilson
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/morgan/README.md b/node_modules/morgan/README.md
deleted file mode 100644
index fc1c4b4..0000000
--- a/node_modules/morgan/README.md
+++ /dev/null
@@ -1,417 +0,0 @@
-# morgan
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Build Status][travis-image]][travis-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-HTTP request logger middleware for node.js
-
-> Named after [Dexter](http://en.wikipedia.org/wiki/Dexter_Morgan), a show you should not watch until completion.
-
-## API
-
-
-
-```js
-var morgan = require('morgan')
-```
-
-### morgan(format, options)
-
-Create a new morgan logger middleware function using the given `format` and `options`.
-The `format` argument may be a string of a predefined name (see below for the names),
-a string of a format string, or a function that will produce a log entry.
-
-The `format` function will be called with three arguments `tokens`, `req`, and `res`,
-where `tokens` is an object with all defined tokens, `req` is the HTTP request and `res`
-is the HTTP response. The function is expected to return a string that will be the log
-line, or `undefined` / `null` to skip logging.
-
-#### Using a predefined format string
-
-
-
-```js
-morgan('tiny')
-```
-
-#### Using format string of predefined tokens
-
-
-
-```js
-morgan(':method :url :status :res[content-length] - :response-time ms')
-```
-
-#### Using a custom format function
-
-
-
-``` js
-morgan(function (tokens, req, res) {
- return [
- tokens.method(req, res),
- tokens.url(req, res),
- tokens.status(req, res),
- tokens.res(req, res, 'content-length'), '-',
- tokens['response-time'](req, res), 'ms'
- ].join(' ')
-})
-```
-
-#### Options
-
-Morgan accepts these properties in the options object.
-
-##### immediate
-
-Write log line on request instead of response. This means that a requests will
-be logged even if the server crashes, _but data from the response (like the
-response code, content length, etc.) cannot be logged_.
-
-##### skip
-
-Function to determine if logging is skipped, defaults to `false`. This function
-will be called as `skip(req, res)`.
-
-
-
-```js
-// EXAMPLE: only log error responses
-morgan('combined', {
- skip: function (req, res) { return res.statusCode < 400 }
-})
-```
-
-##### stream
-
-Output stream for writing log lines, defaults to `process.stdout`.
-
-#### Predefined Formats
-
-There are various pre-defined formats provided:
-
-##### combined
-
-Standard Apache combined log output.
-
-```
-:remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"
-```
-
-##### common
-
-Standard Apache common log output.
-
-```
-:remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length]
-```
-
-##### dev
-
-Concise output colored by response status for development use. The `:status`
-token will be colored green for success codes, red for server error codes,
-yellow for client error codes, cyan for redirection codes, and uncolored
-for information codes.
-
-```
-:method :url :status :response-time ms - :res[content-length]
-```
-
-##### short
-
-Shorter than default, also including response time.
-
-```
-:remote-addr :remote-user :method :url HTTP/:http-version :status :res[content-length] - :response-time ms
-```
-
-##### tiny
-
-The minimal output.
-
-```
-:method :url :status :res[content-length] - :response-time ms
-```
-
-#### Tokens
-
-##### Creating new tokens
-
-To define a token, simply invoke `morgan.token()` with the name and a callback function.
-This callback function is expected to return a string value. The value returned is then
-available as ":type" in this case:
-
-
-
-```js
-morgan.token('type', function (req, res) { return req.headers['content-type'] })
-```
-
-Calling `morgan.token()` using the same name as an existing token will overwrite that
-token definition.
-
-The token function is expected to be called with the arguments `req` and `res`, representing
-the HTTP request and HTTP response. Additionally, the token can accept further arguments of
-it's choosing to customize behavior.
-
-##### :date[format]
-
-The current date and time in UTC. The available formats are:
-
- - `clf` for the common log format (`"10/Oct/2000:13:55:36 +0000"`)
- - `iso` for the common ISO 8601 date time format (`2000-10-10T13:55:36.000Z`)
- - `web` for the common RFC 1123 date time format (`Tue, 10 Oct 2000 13:55:36 GMT`)
-
-If no format is given, then the default is `web`.
-
-##### :http-version
-
-The HTTP version of the request.
-
-##### :method
-
-The HTTP method of the request.
-
-##### :referrer
-
-The Referrer header of the request. This will use the standard mis-spelled Referer header if exists, otherwise Referrer.
-
-##### :remote-addr
-
-The remote address of the request. This will use `req.ip`, otherwise the standard `req.connection.remoteAddress` value (socket address).
-
-##### :remote-user
-
-The user authenticated as part of Basic auth for the request.
-
-##### :req[header]
-
-The given `header` of the request. If the header is not present, the
-value will be displayed as `"-"` in the log.
-
-##### :res[header]
-
-The given `header` of the response. If the header is not present, the
-value will be displayed as `"-"` in the log.
-
-##### :response-time[digits]
-
-The time between the request coming into `morgan` and when the response
-headers are written, in milliseconds.
-
-The `digits` argument is a number that specifies the number of digits to
-include on the number, defaulting to `3`, which provides microsecond precision.
-
-##### :status
-
-The status code of the response.
-
-If the request/response cycle completes before a response was sent to the
-client (for example, the TCP socket closed prematurely by a client aborting
-the request), then the status will be empty (displayed as `"-"` in the log).
-
-##### :total-time[digits]
-
-The time between the request coming into `morgan` and when the response
-has finished being written out to the connection, in milliseconds.
-
-The `digits` argument is a number that specifies the number of digits to
-include on the number, defaulting to `3`, which provides microsecond precision.
-
-##### :url
-
-The URL of the request. This will use `req.originalUrl` if exists, otherwise `req.url`.
-
-##### :user-agent
-
-The contents of the User-Agent header of the request.
-
-### morgan.compile(format)
-
-Compile a format string into a `format` function for use by `morgan`. A format string
-is a string that represents a single log line and can utilize token syntax.
-Tokens are references by `:token-name`. If tokens accept arguments, they can
-be passed using `[]`, for example: `:token-name[pretty]` would pass the string
-`'pretty'` as an argument to the token `token-name`.
-
-The function returned from `morgan.compile` takes three arguments `tokens`, `req`, and
-`res`, where `tokens` is object with all defined tokens, `req` is the HTTP request and
-`res` is the HTTP response. The function will return a string that will be the log line,
-or `undefined` / `null` to skip logging.
-
-Normally formats are defined using `morgan.format(name, format)`, but for certain
-advanced uses, this compile function is directly available.
-
-## Examples
-
-### express/connect
-
-Simple app that will log all request in the Apache combined format to STDOUT
-
-```js
-var express = require('express')
-var morgan = require('morgan')
-
-var app = express()
-
-app.use(morgan('combined'))
-
-app.get('/', function (req, res) {
- res.send('hello, world!')
-})
-```
-
-### vanilla http server
-
-Simple app that will log all request in the Apache combined format to STDOUT
-
-```js
-var finalhandler = require('finalhandler')
-var http = require('http')
-var morgan = require('morgan')
-
-// create "middleware"
-var logger = morgan('combined')
-
-http.createServer(function (req, res) {
- var done = finalhandler(req, res)
- logger(req, res, function (err) {
- if (err) return done(err)
-
- // respond to request
- res.setHeader('content-type', 'text/plain')
- res.end('hello, world!')
- })
-})
-```
-
-### write logs to a file
-
-#### single file
-
-Simple app that will log all requests in the Apache combined format to the file
-`access.log`.
-
-```js
-var express = require('express')
-var fs = require('fs')
-var morgan = require('morgan')
-var path = require('path')
-
-var app = express()
-
-// create a write stream (in append mode)
-var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' })
-
-// setup the logger
-app.use(morgan('combined', { stream: accessLogStream }))
-
-app.get('/', function (req, res) {
- res.send('hello, world!')
-})
-```
-
-#### log file rotation
-
-Simple app that will log all requests in the Apache combined format to one log
-file per day in the `log/` directory using the
-[rotating-file-stream module](https://www.npmjs.com/package/rotating-file-stream).
-
-```js
-var express = require('express')
-var morgan = require('morgan')
-var path = require('path')
-var rfs = require('rotating-file-stream') // version 2.x
-
-var app = express()
-
-// create a rotating write stream
-var accessLogStream = rfs.createStream('access.log', {
- interval: '1d', // rotate daily
- path: path.join(__dirname, 'log')
-})
-
-// setup the logger
-app.use(morgan('combined', { stream: accessLogStream }))
-
-app.get('/', function (req, res) {
- res.send('hello, world!')
-})
-```
-
-### split / dual logging
-
-The `morgan` middleware can be used as many times as needed, enabling
-combinations like:
-
- * Log entry on request and one on response
- * Log all requests to file, but errors to console
- * ... and more!
-
-Sample app that will log all requests to a file using Apache format, but
-error responses are logged to the console:
-
-```js
-var express = require('express')
-var fs = require('fs')
-var morgan = require('morgan')
-var path = require('path')
-
-var app = express()
-
-// log only 4xx and 5xx responses to console
-app.use(morgan('dev', {
- skip: function (req, res) { return res.statusCode < 400 }
-}))
-
-// log all requests to access.log
-app.use(morgan('common', {
- stream: fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' })
-}))
-
-app.get('/', function (req, res) {
- res.send('hello, world!')
-})
-```
-
-### use custom token formats
-
-Sample app that will use custom token formats. This adds an ID to all requests and displays it using the `:id` token.
-
-```js
-var express = require('express')
-var morgan = require('morgan')
-var uuid = require('node-uuid')
-
-morgan.token('id', function getId (req) {
- return req.id
-})
-
-var app = express()
-
-app.use(assignId)
-app.use(morgan(':id :method :url :response-time'))
-
-app.get('/', function (req, res) {
- res.send('hello, world!')
-})
-
-function assignId (req, res, next) {
- req.id = uuid.v4()
- next()
-}
-```
-
-## License
-
-[MIT](LICENSE)
-
-[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/morgan/master
-[coveralls-url]: https://coveralls.io/r/expressjs/morgan?branch=master
-[npm-downloads-image]: https://badgen.net/npm/dm/morgan
-[npm-url]: https://npmjs.org/package/morgan
-[npm-version-image]: https://badgen.net/npm/v/morgan
-[travis-image]: https://badgen.net/travis/expressjs/morgan/master
-[travis-url]: https://travis-ci.org/expressjs/morgan
diff --git a/node_modules/morgan/index.js b/node_modules/morgan/index.js
deleted file mode 100644
index b33c4f2..0000000
--- a/node_modules/morgan/index.js
+++ /dev/null
@@ -1,544 +0,0 @@
-/*!
- * morgan
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2014-2017 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = morgan
-module.exports.compile = compile
-module.exports.format = format
-module.exports.token = token
-
-/**
- * Module dependencies.
- * @private
- */
-
-var auth = require('basic-auth')
-var debug = require('debug')('morgan')
-var deprecate = require('depd')('morgan')
-var onFinished = require('on-finished')
-var onHeaders = require('on-headers')
-
-/**
- * Array of CLF month names.
- * @private
- */
-
-var CLF_MONTH = [
- 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
- 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
-]
-
-/**
- * Default log buffer duration.
- * @private
- */
-
-var DEFAULT_BUFFER_DURATION = 1000
-
-/**
- * Create a logger middleware.
- *
- * @public
- * @param {String|Function} format
- * @param {Object} [options]
- * @return {Function} middleware
- */
-
-function morgan (format, options) {
- var fmt = format
- var opts = options || {}
-
- if (format && typeof format === 'object') {
- opts = format
- fmt = opts.format || 'default'
-
- // smart deprecation message
- deprecate('morgan(options): use morgan(' + (typeof fmt === 'string' ? JSON.stringify(fmt) : 'format') + ', options) instead')
- }
-
- if (fmt === undefined) {
- deprecate('undefined format: specify a format')
- }
-
- // output on request instead of response
- var immediate = opts.immediate
-
- // check if log entry should be skipped
- var skip = opts.skip || false
-
- // format function
- var formatLine = typeof fmt !== 'function'
- ? getFormatFunction(fmt)
- : fmt
-
- // stream
- var buffer = opts.buffer
- var stream = opts.stream || process.stdout
-
- // buffering support
- if (buffer) {
- deprecate('buffer option')
-
- // flush interval
- var interval = typeof buffer !== 'number'
- ? DEFAULT_BUFFER_DURATION
- : buffer
-
- // swap the stream
- stream = createBufferStream(stream, interval)
- }
-
- return function logger (req, res, next) {
- // request data
- req._startAt = undefined
- req._startTime = undefined
- req._remoteAddress = getip(req)
-
- // response data
- res._startAt = undefined
- res._startTime = undefined
-
- // record request start
- recordStartTime.call(req)
-
- function logRequest () {
- if (skip !== false && skip(req, res)) {
- debug('skip request')
- return
- }
-
- var line = formatLine(morgan, req, res)
-
- if (line == null) {
- debug('skip line')
- return
- }
-
- debug('log request')
- stream.write(line + '\n')
- };
-
- if (immediate) {
- // immediate log
- logRequest()
- } else {
- // record response start
- onHeaders(res, recordStartTime)
-
- // log when response finished
- onFinished(res, logRequest)
- }
-
- next()
- }
-}
-
-/**
- * Apache combined log format.
- */
-
-morgan.format('combined', ':remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"')
-
-/**
- * Apache common log format.
- */
-
-morgan.format('common', ':remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length]')
-
-/**
- * Default format.
- */
-
-morgan.format('default', ':remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"')
-deprecate.property(morgan, 'default', 'default format: use combined format')
-
-/**
- * Short format.
- */
-
-morgan.format('short', ':remote-addr :remote-user :method :url HTTP/:http-version :status :res[content-length] - :response-time ms')
-
-/**
- * Tiny format.
- */
-
-morgan.format('tiny', ':method :url :status :res[content-length] - :response-time ms')
-
-/**
- * dev (colored)
- */
-
-morgan.format('dev', function developmentFormatLine (tokens, req, res) {
- // get the status code if response written
- var status = headersSent(res)
- ? res.statusCode
- : undefined
-
- // get status color
- var color = status >= 500 ? 31 // red
- : status >= 400 ? 33 // yellow
- : status >= 300 ? 36 // cyan
- : status >= 200 ? 32 // green
- : 0 // no color
-
- // get colored function
- var fn = developmentFormatLine[color]
-
- if (!fn) {
- // compile
- fn = developmentFormatLine[color] = compile('\x1b[0m:method :url \x1b[' +
- color + 'm:status\x1b[0m :response-time ms - :res[content-length]\x1b[0m')
- }
-
- return fn(tokens, req, res)
-})
-
-/**
- * request url
- */
-
-morgan.token('url', function getUrlToken (req) {
- return req.originalUrl || req.url
-})
-
-/**
- * request method
- */
-
-morgan.token('method', function getMethodToken (req) {
- return req.method
-})
-
-/**
- * response time in milliseconds
- */
-
-morgan.token('response-time', function getResponseTimeToken (req, res, digits) {
- if (!req._startAt || !res._startAt) {
- // missing request and/or response start time
- return
- }
-
- // calculate diff
- var ms = (res._startAt[0] - req._startAt[0]) * 1e3 +
- (res._startAt[1] - req._startAt[1]) * 1e-6
-
- // return truncated value
- return ms.toFixed(digits === undefined ? 3 : digits)
-})
-
-/**
- * total time in milliseconds
- */
-
-morgan.token('total-time', function getTotalTimeToken (req, res, digits) {
- if (!req._startAt || !res._startAt) {
- // missing request and/or response start time
- return
- }
-
- // time elapsed from request start
- var elapsed = process.hrtime(req._startAt)
-
- // cover to milliseconds
- var ms = (elapsed[0] * 1e3) + (elapsed[1] * 1e-6)
-
- // return truncated value
- return ms.toFixed(digits === undefined ? 3 : digits)
-})
-
-/**
- * current date
- */
-
-morgan.token('date', function getDateToken (req, res, format) {
- var date = new Date()
-
- switch (format || 'web') {
- case 'clf':
- return clfdate(date)
- case 'iso':
- return date.toISOString()
- case 'web':
- return date.toUTCString()
- }
-})
-
-/**
- * response status code
- */
-
-morgan.token('status', function getStatusToken (req, res) {
- return headersSent(res)
- ? String(res.statusCode)
- : undefined
-})
-
-/**
- * normalized referrer
- */
-
-morgan.token('referrer', function getReferrerToken (req) {
- return req.headers.referer || req.headers.referrer
-})
-
-/**
- * remote address
- */
-
-morgan.token('remote-addr', getip)
-
-/**
- * remote user
- */
-
-morgan.token('remote-user', function getRemoteUserToken (req) {
- // parse basic credentials
- var credentials = auth(req)
-
- // return username
- return credentials
- ? credentials.name
- : undefined
-})
-
-/**
- * HTTP version
- */
-
-morgan.token('http-version', function getHttpVersionToken (req) {
- return req.httpVersionMajor + '.' + req.httpVersionMinor
-})
-
-/**
- * UA string
- */
-
-morgan.token('user-agent', function getUserAgentToken (req) {
- return req.headers['user-agent']
-})
-
-/**
- * request header
- */
-
-morgan.token('req', function getRequestToken (req, res, field) {
- // get header
- var header = req.headers[field.toLowerCase()]
-
- return Array.isArray(header)
- ? header.join(', ')
- : header
-})
-
-/**
- * response header
- */
-
-morgan.token('res', function getResponseHeader (req, res, field) {
- if (!headersSent(res)) {
- return undefined
- }
-
- // get header
- var header = res.getHeader(field)
-
- return Array.isArray(header)
- ? header.join(', ')
- : header
-})
-
-/**
- * Format a Date in the common log format.
- *
- * @private
- * @param {Date} dateTime
- * @return {string}
- */
-
-function clfdate (dateTime) {
- var date = dateTime.getUTCDate()
- var hour = dateTime.getUTCHours()
- var mins = dateTime.getUTCMinutes()
- var secs = dateTime.getUTCSeconds()
- var year = dateTime.getUTCFullYear()
-
- var month = CLF_MONTH[dateTime.getUTCMonth()]
-
- return pad2(date) + '/' + month + '/' + year +
- ':' + pad2(hour) + ':' + pad2(mins) + ':' + pad2(secs) +
- ' +0000'
-}
-
-/**
- * Compile a format string into a function.
- *
- * @param {string} format
- * @return {function}
- * @public
- */
-
-function compile (format) {
- if (typeof format !== 'string') {
- throw new TypeError('argument format must be a string')
- }
-
- var fmt = String(JSON.stringify(format))
- var js = ' "use strict"\n return ' + fmt.replace(/:([-\w]{2,})(?:\[([^\]]+)\])?/g, function (_, name, arg) {
- var tokenArguments = 'req, res'
- var tokenFunction = 'tokens[' + String(JSON.stringify(name)) + ']'
-
- if (arg !== undefined) {
- tokenArguments += ', ' + String(JSON.stringify(arg))
- }
-
- return '" +\n (' + tokenFunction + '(' + tokenArguments + ') || "-") + "'
- })
-
- // eslint-disable-next-line no-new-func
- return new Function('tokens, req, res', js)
-}
-
-/**
- * Create a basic buffering stream.
- *
- * @param {object} stream
- * @param {number} interval
- * @public
- */
-
-function createBufferStream (stream, interval) {
- var buf = []
- var timer = null
-
- // flush function
- function flush () {
- timer = null
- stream.write(buf.join(''))
- buf.length = 0
- }
-
- // write function
- function write (str) {
- if (timer === null) {
- timer = setTimeout(flush, interval)
- }
-
- buf.push(str)
- }
-
- // return a minimal "stream"
- return { write: write }
-}
-
-/**
- * Define a format with the given name.
- *
- * @param {string} name
- * @param {string|function} fmt
- * @public
- */
-
-function format (name, fmt) {
- morgan[name] = fmt
- return this
-}
-
-/**
- * Lookup and compile a named format function.
- *
- * @param {string} name
- * @return {function}
- * @public
- */
-
-function getFormatFunction (name) {
- // lookup format
- var fmt = morgan[name] || name || morgan.default
-
- // return compiled format
- return typeof fmt !== 'function'
- ? compile(fmt)
- : fmt
-}
-
-/**
- * Get request IP address.
- *
- * @private
- * @param {IncomingMessage} req
- * @return {string}
- */
-
-function getip (req) {
- return req.ip ||
- req._remoteAddress ||
- (req.connection && req.connection.remoteAddress) ||
- undefined
-}
-
-/**
- * Determine if the response headers have been sent.
- *
- * @param {object} res
- * @returns {boolean}
- * @private
- */
-
-function headersSent (res) {
- // istanbul ignore next: node.js 0.8 support
- return typeof res.headersSent !== 'boolean'
- ? Boolean(res._header)
- : res.headersSent
-}
-
-/**
- * Pad number to two digits.
- *
- * @private
- * @param {number} num
- * @return {string}
- */
-
-function pad2 (num) {
- var str = String(num)
-
- // istanbul ignore next: num is current datetime
- return (str.length === 1 ? '0' : '') + str
-}
-
-/**
- * Record the start time.
- * @private
- */
-
-function recordStartTime () {
- this._startAt = process.hrtime()
- this._startTime = new Date()
-}
-
-/**
- * Define a token function with the given name,
- * and callback fn(req, res).
- *
- * @param {string} name
- * @param {function} fn
- * @public
- */
-
-function token (name, fn) {
- morgan[name] = fn
- return this
-}
diff --git a/node_modules/morgan/package.json b/node_modules/morgan/package.json
deleted file mode 100644
index b25a647..0000000
--- a/node_modules/morgan/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "morgan",
- "description": "HTTP request logger middleware for node.js",
- "version": "1.10.0",
- "contributors": [
- "Douglas Christopher Wilson ",
- "Jonathan Ong (http://jongleberry.com)"
- ],
- "license": "MIT",
- "keywords": [
- "express",
- "http",
- "logger",
- "middleware"
- ],
- "repository": "expressjs/morgan",
- "dependencies": {
- "basic-auth": "~2.0.1",
- "debug": "2.6.9",
- "depd": "~2.0.0",
- "on-finished": "~2.3.0",
- "on-headers": "~1.0.2"
- },
- "devDependencies": {
- "eslint": "6.8.0",
- "eslint-config-standard": "14.1.0",
- "eslint-plugin-import": "2.20.1",
- "eslint-plugin-markdown": "1.0.2",
- "eslint-plugin-node": "9.2.0",
- "eslint-plugin-promise": "4.2.1",
- "eslint-plugin-standard": "4.0.1",
- "mocha": "7.1.1",
- "nyc": "15.0.0",
- "split": "1.0.1",
- "supertest": "4.0.2"
- },
- "files": [
- "LICENSE",
- "HISTORY.md",
- "README.md",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.8.0"
- },
- "scripts": {
- "lint": "eslint --plugin markdown --ext js,md .",
- "test": "mocha --check-leaks --reporter spec --bail",
- "test-ci": "nyc --reporter=text npm test",
- "test-cov": "nyc --reporter=html --reporter=text npm test"
- }
-}
diff --git a/node_modules/ms/index.js b/node_modules/ms/index.js
deleted file mode 100644
index 6a522b1..0000000
--- a/node_modules/ms/index.js
+++ /dev/null
@@ -1,152 +0,0 @@
-/**
- * Helpers.
- */
-
-var s = 1000;
-var m = s * 60;
-var h = m * 60;
-var d = h * 24;
-var y = d * 365.25;
-
-/**
- * Parse or format the given `val`.
- *
- * Options:
- *
- * - `long` verbose formatting [false]
- *
- * @param {String|Number} val
- * @param {Object} [options]
- * @throws {Error} throw an error if val is not a non-empty string or a number
- * @return {String|Number}
- * @api public
- */
-
-module.exports = function(val, options) {
- options = options || {};
- var type = typeof val;
- if (type === 'string' && val.length > 0) {
- return parse(val);
- } else if (type === 'number' && isNaN(val) === false) {
- return options.long ? fmtLong(val) : fmtShort(val);
- }
- throw new Error(
- 'val is not a non-empty string or a valid number. val=' +
- JSON.stringify(val)
- );
-};
-
-/**
- * Parse the given `str` and return milliseconds.
- *
- * @param {String} str
- * @return {Number}
- * @api private
- */
-
-function parse(str) {
- str = String(str);
- if (str.length > 100) {
- return;
- }
- var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
- str
- );
- if (!match) {
- return;
- }
- var n = parseFloat(match[1]);
- var type = (match[2] || 'ms').toLowerCase();
- switch (type) {
- case 'years':
- case 'year':
- case 'yrs':
- case 'yr':
- case 'y':
- return n * y;
- case 'days':
- case 'day':
- case 'd':
- return n * d;
- case 'hours':
- case 'hour':
- case 'hrs':
- case 'hr':
- case 'h':
- return n * h;
- case 'minutes':
- case 'minute':
- case 'mins':
- case 'min':
- case 'm':
- return n * m;
- case 'seconds':
- case 'second':
- case 'secs':
- case 'sec':
- case 's':
- return n * s;
- case 'milliseconds':
- case 'millisecond':
- case 'msecs':
- case 'msec':
- case 'ms':
- return n;
- default:
- return undefined;
- }
-}
-
-/**
- * Short format for `ms`.
- *
- * @param {Number} ms
- * @return {String}
- * @api private
- */
-
-function fmtShort(ms) {
- if (ms >= d) {
- return Math.round(ms / d) + 'd';
- }
- if (ms >= h) {
- return Math.round(ms / h) + 'h';
- }
- if (ms >= m) {
- return Math.round(ms / m) + 'm';
- }
- if (ms >= s) {
- return Math.round(ms / s) + 's';
- }
- return ms + 'ms';
-}
-
-/**
- * Long format for `ms`.
- *
- * @param {Number} ms
- * @return {String}
- * @api private
- */
-
-function fmtLong(ms) {
- return plural(ms, d, 'day') ||
- plural(ms, h, 'hour') ||
- plural(ms, m, 'minute') ||
- plural(ms, s, 'second') ||
- ms + ' ms';
-}
-
-/**
- * Pluralization helper.
- */
-
-function plural(ms, n, name) {
- if (ms < n) {
- return;
- }
- if (ms < n * 1.5) {
- return Math.floor(ms / n) + ' ' + name;
- }
- return Math.ceil(ms / n) + ' ' + name + 's';
-}
diff --git a/node_modules/ms/license.md b/node_modules/ms/license.md
deleted file mode 100644
index 69b6125..0000000
--- a/node_modules/ms/license.md
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Zeit, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/node_modules/ms/package.json b/node_modules/ms/package.json
deleted file mode 100644
index 6a31c81..0000000
--- a/node_modules/ms/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "ms",
- "version": "2.0.0",
- "description": "Tiny milisecond conversion utility",
- "repository": "zeit/ms",
- "main": "./index",
- "files": [
- "index.js"
- ],
- "scripts": {
- "precommit": "lint-staged",
- "lint": "eslint lib/* bin/*",
- "test": "mocha tests.js"
- },
- "eslintConfig": {
- "extends": "eslint:recommended",
- "env": {
- "node": true,
- "es6": true
- }
- },
- "lint-staged": {
- "*.js": [
- "npm run lint",
- "prettier --single-quote --write",
- "git add"
- ]
- },
- "license": "MIT",
- "devDependencies": {
- "eslint": "3.19.0",
- "expect.js": "0.3.1",
- "husky": "0.13.3",
- "lint-staged": "3.4.1",
- "mocha": "3.4.1"
- }
-}
diff --git a/node_modules/ms/readme.md b/node_modules/ms/readme.md
deleted file mode 100644
index 84a9974..0000000
--- a/node_modules/ms/readme.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# ms
-
-[](https://travis-ci.org/zeit/ms)
-[](https://zeit.chat/)
-
-Use this package to easily convert various time formats to milliseconds.
-
-## Examples
-
-```js
-ms('2 days') // 172800000
-ms('1d') // 86400000
-ms('10h') // 36000000
-ms('2.5 hrs') // 9000000
-ms('2h') // 7200000
-ms('1m') // 60000
-ms('5s') // 5000
-ms('1y') // 31557600000
-ms('100') // 100
-```
-
-### Convert from milliseconds
-
-```js
-ms(60000) // "1m"
-ms(2 * 60000) // "2m"
-ms(ms('10 hours')) // "10h"
-```
-
-### Time format written-out
-
-```js
-ms(60000, { long: true }) // "1 minute"
-ms(2 * 60000, { long: true }) // "2 minutes"
-ms(ms('10 hours'), { long: true }) // "10 hours"
-```
-
-## Features
-
-- Works both in [node](https://nodejs.org) and in the browser.
-- If a number is supplied to `ms`, a string with a unit is returned.
-- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`).
-- If you pass a string with a number and a valid unit, the number of equivalent ms is returned.
-
-## Caught a bug?
-
-1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
-2. Link the package to the global module directory: `npm link`
-3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, node will now use your clone of ms!
-
-As always, you can run the tests using: `npm test`
diff --git a/node_modules/nanomatch/CHANGELOG.md b/node_modules/nanomatch/CHANGELOG.md
deleted file mode 100644
index 8c3aead..0000000
--- a/node_modules/nanomatch/CHANGELOG.md
+++ /dev/null
@@ -1,57 +0,0 @@
-## History
-
-### key
-
-Changelog entries are classified using the following labels _(from [keep-a-changelog][]_):
-
-- `added`: for new features
-- `changed`: for changes in existing functionality
-- `deprecated`: for once-stable features removed in upcoming releases
-- `removed`: for deprecated features removed in this release
-- `fixed`: for any bug fixes
-- `bumped`: updated dependencies, only minor or higher will be listed.
-
-### [1.1.0] - 2017-04-11
-
-**Fixed**
-
-- adds support for unclosed quotes
-
-**Added**
-
-- adds support for `options.noglobstar`
-
-### [1.0.4] - 2017-04-06
-
-Housekeeping updates. Adds documentation section about escaping, cleans up utils.
-
-### [1.0.3] - 2017-04-06
-
-This release includes fixes for windows path edge cases and other improvements for stricter adherence to bash spec.
-
-**Fixed**
-
-- More windows path edge cases
-
-**Added**
-
-- Support for bash-like quoted strings for escaping sequences of characters, such as `foo/"**"/bar` where `**` should be matched literally and not evaluated as special characters.
-
-### [1.0.1] - 2016-12-12
-
-**Added**
-
-- Support for windows path edge cases where backslashes are used in brackets or other unusual combinations.
-
-### [1.0.0] - 2016-12-12
-
-Stable release.
-
-### [0.1.0] - 2016-10-08
-
-First release.
-
-[Unreleased]: https://github.com/jonschlinkert/nanomatch/compare/0.1.0...HEAD
-[0.2.0]: https://github.com/jonschlinkert/nanomatch/compare/0.1.0...0.2.0
-
-[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog
diff --git a/node_modules/nanomatch/LICENSE b/node_modules/nanomatch/LICENSE
deleted file mode 100644
index 7c9987b..0000000
--- a/node_modules/nanomatch/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016-2018, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/nanomatch/README.md b/node_modules/nanomatch/README.md
deleted file mode 100644
index bdd35a9..0000000
--- a/node_modules/nanomatch/README.md
+++ /dev/null
@@ -1,1148 +0,0 @@
-# nanomatch [](https://www.npmjs.com/package/nanomatch) [](https://npmjs.org/package/nanomatch) [](https://npmjs.org/package/nanomatch) [](https://travis-ci.org/micromatch/nanomatch) [](https://ci.appveyor.com/project/micromatch/nanomatch)
-
-> Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Table of Contents
-
-
-Details
-
-- [Install](#install)
-- [What is nanomatch?](#what-is-nanomatch)
-- [Getting started](#getting-started)
- * [Installing nanomatch](#installing-nanomatch)
- * [Usage](#usage)
-- [Documentation](#documentation)
- * [Escaping](#escaping)
-- [API](#api)
-- [Options](#options)
- * [options.basename](#optionsbasename)
- * [options.bash](#optionsbash)
- * [options.cache](#optionscache)
- * [options.dot](#optionsdot)
- * [options.failglob](#optionsfailglob)
- * [options.ignore](#optionsignore)
- * [options.matchBase](#optionsmatchbase)
- * [options.nocase](#optionsnocase)
- * [options.nodupes](#optionsnodupes)
- * [options.noglobstar](#optionsnoglobstar)
- * [options.nonegate](#optionsnonegate)
- * [options.nonull](#optionsnonull)
- * [options.nullglob](#optionsnullglob)
- * [options.slash](#optionsslash)
- * [options.star](#optionsstar)
- * [options.snapdragon](#optionssnapdragon)
- * [options.sourcemap](#optionssourcemap)
- * [options.unescape](#optionsunescape)
- * [options.unixify](#optionsunixify)
-- [Features](#features)
-- [Bash expansion libs](#bash-expansion-libs)
-- [Benchmarks](#benchmarks)
- * [Running benchmarks](#running-benchmarks)
- * [Nanomatch vs. Minimatch vs. Multimatch](#nanomatch-vs-minimatch-vs-multimatch)
-- [About](#about)
-
-
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save nanomatch
-```
-
-
-Release history
-
-## History
-
-### key
-
-Changelog entries are classified using the following labels _(from [keep-a-changelog](https://github.com/olivierlacan/keep-a-changelog)_):
-
-* `added`: for new features
-* `changed`: for changes in existing functionality
-* `deprecated`: for once-stable features removed in upcoming releases
-* `removed`: for deprecated features removed in this release
-* `fixed`: for any bug fixes
-* `bumped`: updated dependencies, only minor or higher will be listed.
-
-### [1.1.0](https://github.com/micromatch/nanomatch/compare/1.0.4...1.1.0) - 2017-04-11
-
-**Fixed**
-
-* adds support for unclosed quotes
-
-**Added**
-
-* adds support for `options.noglobstar`
-
-### [1.0.4](https://github.com/micromatch/nanomatch/compare/1.0.3...1.0.4) - 2017-04-06
-
-Housekeeping updates. Adds documentation section about escaping, cleans up utils.
-
-### [1.0.3](https://github.com/micromatch/nanomatch/compare/1.0.1...1.0.3) - 2017-04-06
-
-This release includes fixes for windows path edge cases and other improvements for stricter adherence to bash spec.
-
-**Fixed**
-
-* More windows path edge cases
-
-**Added**
-
-* Support for bash-like quoted strings for escaping sequences of characters, such as `foo/"**"/bar` where `**` should be matched literally and not evaluated as special characters.
-
-### [1.0.1](https://github.com/micromatch/nanomatch/compare/1.0.0...1.0.1) - 2016-12-12
-
-**Added**
-
-* Support for windows path edge cases where backslashes are used in brackets or other unusual combinations.
-
-### [1.0.0](https://github.com/micromatch/nanomatch/compare/0.1.0...1.0.0) - 2016-12-12
-
-Stable release.
-
-### [0.1.0] - 2016-10-08
-
-First release.
-
-
-
-## What is nanomatch?
-
-Nanomatch is a fast and accurate glob matcher with full support for standard Bash glob features, including the following "metacharacters": `*`, `**`, `?` and `[...]`.
-
-**Learn more**
-
-* [Getting started](#getting-started): learn how to install and begin using nanomatch
-* [Features](#features): jump to info about supported patterns, and a glob matching reference
-* [API documentation](#api): jump to available options and methods
-* [Unit tests](test): visit unit tests. there is no better way to learn a code library than spending time the unit tests. Nanomatch has 36,000 unit tests - go become a glob matching ninja!
-
-
-How is this different?
-
-**Speed and accuracy**
-
-Nanomatch uses [snapdragon](https://github.com/jonschlinkert/snapdragon) for parsing and compiling globs, which results in:
-
-* Granular control over the entire conversion process in a way that is easy to understand, reason about, and customize.
-* Faster matching, from a combination of optimized glob patterns and (optional) caching.
-* Much greater accuracy than minimatch. In fact, nanomatch passes _all of the spec tests_ from bash, including some that bash still fails. However, since there is no real specification for globs, if you encounter a pattern that yields unexpected match results [after researching previous issues](../../issues), [please let us know](../../issues/new).
-
-**Basic globbing only**
-
-Nanomatch supports [basic globbing only](#features), which is limited to `*`, `**`, `?` and regex-like brackets.
-
-If you need support for the other [bash "expansion" types](#bash-expansion-libs) (in addition to the wildcard matching provided by nanomatch), consider using [micromatch](https://github.com/micromatch/micromatch) instead. _(micromatch >=3.0.0 uses the nanomatch parser and compiler for basic glob matching)_
-
-
-
-## Getting started
-
-### Installing nanomatch
-
-**Install with [yarn](https://yarnpkg.com/)**
-
-```sh
-$ yarn add nanomatch
-```
-
-**Install with [npm](https://npmjs.com)**
-
-```sh
-$ npm install nanomatch
-```
-
-### Usage
-
-Add nanomatch to your project using node's `require()` system:
-
-```js
-var nanomatch = require('nanomatch');
-
-// the main export is a function that takes an array of strings to match
-// and a string or array of patterns to use for matching
-nanomatch(list, patterns[, options]);
-```
-
-**Params**
-
-* `list` **{String|Array}**: List of strings to perform matches against. This is often a list of file paths.
-* `patterns` **{String|Array}**: One or more [glob paterns](#features) to use for matching.
-* `options` **{Object}**: Any [supported options](#options) may be passed
-
-**Examples**
-
-```js
-var nm = require('nanomatch');
-console.log(nm(['a', 'b/b', 'c/c/c'], '*'));
-//=> ['a']
-
-console.log(nm(['a', 'b/b', 'c/c/c'], '*/*'));
-//=> ['b/b']
-
-console.log(nm(['a', 'b/b', 'c/c/c'], '**'));
-//=> ['a', 'b/b', 'c/c/c']
-```
-
-See the [API documentation](#api) for available methods and [options](https://github.com/einaros/options.js).
-
-## Documentation
-
-### Escaping
-
-_Backslashes and quotes_ can be used to escape characters, forcing nanomatch to regard those characters as a literal characters.
-
-**Backslashes**
-
-Use backslashes to escape single characters. For example, the following pattern would match `foo/*/bar` exactly:
-
-```js
-'foo/\*/bar'
-```
-
-The following pattern would match `foo/` followed by a literal `*`, followed by zero or more of any characters besides `/`, followed by `/bar`.
-
-```js
-'foo/\**/bar'
-```
-
-**Quoted strings**
-
-Use single or double quotes to escape sequences of characters. For example, the following patterns would match `foo/**/bar` exactly:
-
-```js
-'foo/"**"/bar'
-'foo/\'**\'/bar'
-"foo/'**'/bar"
-```
-
-**Matching literal quotes**
-
-If you need to match quotes literally, you can escape them as well. For example, the following will match `foo/"*"/bar`, `foo/"a"/bar`, `foo/"b"/bar`, or `foo/"c"/bar`:
-
-```js
-'foo/\\"*\\"/bar'
-```
-
-And the following will match `foo/'*'/bar`, `foo/'a'/bar`, `foo/'b'/bar`, or `foo/'c'/bar`:
-
-```js
-'foo/\\\'*\\\'/bar'
-```
-
-## API
-
-### [nanomatch](index.js#L40)
-
-The main function takes a list of strings and one or more glob patterns to use for matching.
-
-**Params**
-
-* `list` **{Array}**: A list of strings to match
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Array}**: Returns an array of matches
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm(list, patterns[, options]);
-
-console.log(nm(['a.js', 'a.txt'], ['*.js']));
-//=> [ 'a.js' ]
-```
-
-### [.match](index.js#L106)
-
-Similar to the main function, but `pattern` must be a string.
-
-**Params**
-
-* `list` **{Array}**: Array of strings to match
-* `pattern` **{String}**: Glob pattern to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Array}**: Returns an array of matches
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.match(list, pattern[, options]);
-
-console.log(nm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a'));
-//=> ['a.a', 'a.aa']
-```
-
-### [.isMatch](index.js#L167)
-
-Returns true if the specified `string` matches the given glob `pattern`.
-
-**Params**
-
-* `string` **{String}**: String to match
-* `pattern` **{String}**: Glob pattern to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if the string matches the glob pattern.
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.isMatch(string, pattern[, options]);
-
-console.log(nm.isMatch('a.a', '*.a'));
-//=> true
-console.log(nm.isMatch('a.b', '*.a'));
-//=> false
-```
-
-### [.some](index.js#L205)
-
-Returns true if some of the elements in the given `list` match any of the given glob `patterns`.
-
-**Params**
-
-* `list` **{String|Array}**: The string or array of strings to test. Returns as soon as the first match is found.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.some(list, patterns[, options]);
-
-console.log(nm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
-// true
-console.log(nm.some(['foo.js'], ['*.js', '!foo.js']));
-// false
-```
-
-### [.every](index.js#L243)
-
-Returns true if every element in the given `list` matches at least one of the given glob `patterns`.
-
-**Params**
-
-* `list` **{String|Array}**: The string or array of strings to test.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.every(list, patterns[, options]);
-
-console.log(nm.every('foo.js', ['foo.js']));
-// true
-console.log(nm.every(['foo.js', 'bar.js'], ['*.js']));
-// true
-console.log(nm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
-// false
-console.log(nm.every(['foo.js'], ['*.js', '!foo.js']));
-// false
-```
-
-### [.any](index.js#L277)
-
-Returns true if **any** of the given glob `patterns` match the specified `string`.
-
-**Params**
-
-* `str` **{String|Array}**: The string to test.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.any(string, patterns[, options]);
-
-console.log(nm.any('a.a', ['b.*', '*.a']));
-//=> true
-console.log(nm.any('a.a', 'b.*'));
-//=> false
-```
-
-### [.all](index.js#L325)
-
-Returns true if **all** of the given `patterns` match the specified string.
-
-**Params**
-
-* `str` **{String|Array}**: The string to test.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.all(string, patterns[, options]);
-
-console.log(nm.all('foo.js', ['foo.js']));
-// true
-
-console.log(nm.all('foo.js', ['*.js', '!foo.js']));
-// false
-
-console.log(nm.all('foo.js', ['*.js', 'foo.js']));
-// true
-
-console.log(nm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));
-// true
-```
-
-### [.not](index.js#L359)
-
-Returns a list of strings that _**do not match any**_ of the given `patterns`.
-
-**Params**
-
-* `list` **{Array}**: Array of strings to match.
-* `patterns` **{String|Array}**: One or more glob pattern to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Array}**: Returns an array of strings that **do not match** the given patterns.
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.not(list, patterns[, options]);
-
-console.log(nm.not(['a.a', 'b.b', 'c.c'], '*.a'));
-//=> ['b.b', 'c.c']
-```
-
-### [.contains](index.js#L394)
-
-Returns true if the given `string` contains the given pattern. Similar to [.isMatch](#isMatch) but the pattern can match any part of the string.
-
-**Params**
-
-* `str` **{String}**: The string to match.
-* `patterns` **{String|Array}**: Glob pattern to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if the patter matches any part of `str`.
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.contains(string, pattern[, options]);
-
-console.log(nm.contains('aa/bb/cc', '*b'));
-//=> true
-console.log(nm.contains('aa/bb/cc', '*d'));
-//=> false
-```
-
-### [.matchKeys](index.js#L450)
-
-Filter the keys of the given object with the given `glob` pattern and `options`. Does not attempt to match nested keys. If you need this feature, use [glob-object](https://github.com/jonschlinkert/glob-object) instead.
-
-**Params**
-
-* `object` **{Object}**: The object with keys to filter.
-* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Object}**: Returns an object with only keys that match the given patterns.
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.matchKeys(object, patterns[, options]);
-
-var obj = { aa: 'a', ab: 'b', ac: 'c' };
-console.log(nm.matchKeys(obj, '*b'));
-//=> { ab: 'b' }
-```
-
-### [.matcher](index.js#L479)
-
-Returns a memoized matcher function from the given glob `pattern` and `options`. The returned function takes a string to match as its only argument and returns true if the string is a match.
-
-**Params**
-
-* `pattern` **{String}**: Glob pattern
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed.
-* `returns` **{Function}**: Returns a matcher function.
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.matcher(pattern[, options]);
-
-var isMatch = nm.matcher('*.!(*a)');
-console.log(isMatch('a.a'));
-//=> false
-console.log(isMatch('a.b'));
-//=> true
-```
-
-### [.capture](index.js#L560)
-
-Returns an array of matches captured by `pattern` in `string, or`null` if the pattern did not match.
-
-**Params**
-
-* `pattern` **{String}**: Glob pattern to use for matching.
-* `string` **{String}**: String to match
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns an array of captures if the string matches the glob pattern, otherwise `null`.
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.capture(pattern, string[, options]);
-
-console.log(nm.capture('test/*.js', 'test/foo.js'));
-//=> ['foo']
-console.log(nm.capture('test/*.js', 'foo/bar.css'));
-//=> null
-```
-
-### [.makeRe](index.js#L595)
-
-Create a regular expression from the given glob `pattern`.
-
-**Params**
-
-* `pattern` **{String}**: A glob pattern to convert to regex.
-* `options` **{Object}**: See available [options](#options) for changing how matches are performed.
-* `returns` **{RegExp}**: Returns a regex created from the given pattern.
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.makeRe(pattern[, options]);
-
-console.log(nm.makeRe('*.js'));
-//=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/
-```
-
-### [.create](index.js#L658)
-
-Parses the given glob `pattern` and returns an object with the compiled `output` and optional source `map`.
-
-**Params**
-
-* `pattern` **{String}**: Glob pattern to parse and compile.
-* `options` **{Object}**: Any [options](#options) to change how parsing and compiling is performed.
-* `returns` **{Object}**: Returns an object with the parsed AST, compiled string and optional source map.
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.create(pattern[, options]);
-
-console.log(nm.create('abc/*.js'));
-// { options: { source: 'string', sourcemap: true },
-// state: {},
-// compilers:
-// { ... },
-// output: '(\\.[\\\\\\/])?abc\\/(?!\\.)(?=.)[^\\/]*?\\.js',
-// ast:
-// { type: 'root',
-// errors: [],
-// nodes:
-// [ ... ],
-// dot: false,
-// input: 'abc/*.js' },
-// parsingErrors: [],
-// map:
-// { version: 3,
-// sources: [ 'string' ],
-// names: [],
-// mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE',
-// sourcesContent: [ 'abc/*.js' ] },
-// position: { line: 1, column: 28 },
-// content: {},
-// files: {},
-// idx: 6 }
-```
-
-### [.parse](index.js#L697)
-
-Parse the given `str` with the given `options`.
-
-**Params**
-
-* `str` **{String}**
-* `options` **{Object}**
-* `returns` **{Object}**: Returns an AST
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.parse(pattern[, options]);
-
-var ast = nm.parse('a/{b,c}/d');
-console.log(ast);
-// { type: 'root',
-// errors: [],
-// input: 'a/{b,c}/d',
-// nodes:
-// [ { type: 'bos', val: '' },
-// { type: 'text', val: 'a/' },
-// { type: 'brace',
-// nodes:
-// [ { type: 'brace.open', val: '{' },
-// { type: 'text', val: 'b,c' },
-// { type: 'brace.close', val: '}' } ] },
-// { type: 'text', val: '/d' },
-// { type: 'eos', val: '' } ] }
-```
-
-### [.compile](index.js#L745)
-
-Compile the given `ast` or string with the given `options`.
-
-**Params**
-
-* `ast` **{Object|String}**
-* `options` **{Object}**
-* `returns` **{Object}**: Returns an object that has an `output` property with the compiled string.
-
-**Example**
-
-```js
-var nm = require('nanomatch');
-nm.compile(ast[, options]);
-
-var ast = nm.parse('a/{b,c}/d');
-console.log(nm.compile(ast));
-// { options: { source: 'string' },
-// state: {},
-// compilers:
-// { eos: [Function],
-// noop: [Function],
-// bos: [Function],
-// brace: [Function],
-// 'brace.open': [Function],
-// text: [Function],
-// 'brace.close': [Function] },
-// output: [ 'a/(b|c)/d' ],
-// ast:
-// { ... },
-// parsingErrors: [] }
-```
-
-### [.clearCache](index.js#L768)
-
-Clear the regex cache.
-
-**Example**
-
-```js
-nm.clearCache();
-```
-
-## Options
-
-
-basename
-
-### options.basename
-
-Allow glob patterns without slashes to match a file path based on its basename. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `matchBase`.
-
-Type: `boolean`
-
-Default: `false`
-
-**Example**
-
-```js
-nm(['a/b.js', 'a/c.md'], '*.js');
-//=> []
-
-nm(['a/b.js', 'a/c.md'], '*.js', {matchBase: true});
-//=> ['a/b.js']
-```
-
-
-
-
-bash
-
-### options.bash
-
-Enabled by default, this option enforces bash-like behavior with stars immediately following a bracket expression. Bash bracket expressions are similar to regex character classes, but unlike regex, a star following a bracket expression **does not repeat the bracketed characters**. Instead, the star is treated the same as an other star.
-
-Type: `boolean`
-
-Default: `true`
-
-**Example**
-
-```js
-var files = ['abc', 'ajz'];
-console.log(nm(files, '[a-c]*'));
-//=> ['abc', 'ajz']
-
-console.log(nm(files, '[a-c]*', {bash: false}));
-```
-
-
-
-
-cache
-
-### options.cache
-
-Disable regex and function memoization.
-
-Type: `boolean`
-
-Default: `undefined`
-
-
-
-
-dot
-
-### options.dot
-
-Match dotfiles. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `dot`.
-
-Type: `boolean`
-
-Default: `false`
-
-
-
-
-failglob
-
-### options.failglob
-
-Similar to the `--failglob` behavior in Bash, throws an error when no matches are found.
-
-Type: `boolean`
-
-Default: `undefined`
-
-
-
-
-ignore
-
-### options.ignore
-
-String or array of glob patterns to match files to ignore.
-
-Type: `String|Array`
-
-Default: `undefined`
-
-
-
-
-matchBase
-
-### options.matchBase
-
-Alias for [options.basename](#options-basename).
-
-
-
-
-nocase
-
-### options.nocase
-
-Use a case-insensitive regex for matching files. Same behavior as [minimatch](https://github.com/isaacs/minimatch).
-
-Type: `boolean`
-
-Default: `undefined`
-
-
-
-
-nodupes
-
-### options.nodupes
-
-Remove duplicate elements from the result array.
-
-Type: `boolean`
-
-Default: `true` (enabled by default)
-
-**Example**
-
-Example of using the `unescape` and `nodupes` options together:
-
-```js
-nm.match(['a/b/c', 'a/b/c'], '**');
-//=> ['abc']
-
-nm.match(['a/b/c', 'a/b/c'], '**', {nodupes: false});
-//=> ['a/b/c', 'a/b/c']
-```
-
-
-
-
-nonegate
-
-### options.noglobstar
-
-Disable matching with globstars (`**`).
-
-Type: `boolean`
-
-Default: `undefined`
-
-```js
-nm(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**');
-//=> ['a/b', 'a/b/c', 'a/b/c/d']
-
-nm(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**', {noglobstar: true});
-//=> ['a/b']
-```
-
-
-
-
-nonegate
-
-### options.nonegate
-
-Disallow negation (`!`) patterns, and treat leading `!` as a literal character to match.
-
-Type: `boolean`
-
-Default: `undefined`
-
-
-
-
-nonull
-
-### options.nonull
-
-Alias for [options.nullglob](#options-nullglob).
-
-
-
-
-nullglob
-
-### options.nullglob
-
-If `true`, when no matches are found the actual (arrayified) glob pattern is returned instead of an empty array. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `nonull`.
-
-Type: `boolean`
-
-Default: `undefined`
-
-
-
-
-slash
-
-### options.slash
-
-Customize the slash character(s) to use for matching.
-
-Type: `string|function`
-
-Default: `[/\\]` (forward slash and backslash)
-
-
-
-
-star
-
-### options.star
-
-Customize the star character(s) to use for matching. It's not recommended that you modify this unless you have advanced knowledge of the compiler and matching rules.
-
-Type: `string|function`
-
-Default: `[^/\\]*?`
-
-
-
-
-snapdragon
-
-### options.snapdragon
-
-Pass your own instance of [snapdragon](https://github.com/jonschlinkert/snapdragon) to customize parsers or compilers.
-
-Type: `object`
-
-Default: `undefined`
-
-
-
-
-snapdragon
-
-### options.sourcemap
-
-Generate a source map by enabling the `sourcemap` option with the `.parse`, `.compile`, or `.create` methods.
-
-**Examples**
-
-```js
-var nm = require('nanomatch');
-
-var res = nm.create('abc/*.js', {sourcemap: true});
-console.log(res.map);
-// { version: 3,
-// sources: [ 'string' ],
-// names: [],
-// mappings: 'AAAA,GAAG,EAAC,iBAAC,EAAC,EAAE',
-// sourcesContent: [ 'abc/*.js' ] }
-
-var ast = nm.parse('abc/**/*.js');
-var res = nm.compile(ast, {sourcemap: true});
-console.log(res.map);
-// { version: 3,
-// sources: [ 'string' ],
-// names: [],
-// mappings: 'AAAA,GAAG,EAAC,2BAAE,EAAC,iBAAC,EAAC,EAAE',
-// sourcesContent: [ 'abc/**/*.js' ] }
-```
-
-
-
-
-unescape
-
-### options.unescape
-
-Remove backslashes from returned matches.
-
-Type: `boolean`
-
-Default: `undefined`
-
-**Example**
-
-In this example we want to match a literal `*`:
-
-```js
-nm.match(['abc', 'a\\*c'], 'a\\*c');
-//=> ['a\\*c']
-
-nm.match(['abc', 'a\\*c'], 'a\\*c', {unescape: true});
-//=> ['a*c']
-```
-
-
-
-
-unixify
-
-### options.unixify
-
-Convert path separators on returned files to posix/unix-style forward slashes.
-
-Type: `boolean`
-
-Default: `true`
-
-**Example**
-
-```js
-nm.match(['a\\b\\c'], 'a/**');
-//=> ['a/b/c']
-
-nm.match(['a\\b\\c'], {unixify: false});
-//=> ['a\\b\\c']
-```
-
-
-
-## Features
-
-Nanomatch has full support for standard Bash glob features, including the following "metacharacters": `*`, `**`, `?` and `[...]`.
-
-Here are some examples of how they work:
-
-| **Pattern** | **Description** |
-| --- | --- |
-| `*` | Matches any string except for `/`, leading `.`, or `/.` inside a path |
-| `**` | Matches any string including `/`, but not a leading `.` or `/.` inside a path. More than two stars (e.g. `***` is treated the same as one star, and `**` loses its special meaning | when it's not the only thing in a path segment, per Bash specifications) |
-| `foo*` | Matches any string beginning with `foo` |
-| `*bar*` | Matches any string containing `bar` (beginning, middle or end) |
-| `*.min.js` | Matches any string ending with `.min.js` |
-| `[abc]*.js` | Matches any string beginning with `a`, `b`, or `c` and ending with `.js` |
-| `abc?` | Matches `abcd` or `abcz` but not `abcde` |
-
-The exceptions noted for `*` apply to all patterns that contain a `*`.
-
-**Not supported**
-
-The following extended-globbing features are not supported:
-
-* [brace expansion](https://github.com/jonschlinkert/braces) (e.g. `{a,b,c}`)
-* [extglobs](https://github.com/jonschlinkert/extglob) (e.g. `@(a|!(c|d))`)
-* [POSIX brackets](https://github.com/jonschlinkert/expand-brackets) (e.g. `[[:alpha:][:digit:]]`)
-
-If you need any of these features consider using [micromatch](https://github.com/micromatch/micromatch) instead.
-
-## Bash expansion libs
-
-Nanomatch is part of a suite of libraries aimed at bringing the power and expressiveness of [Bash's](https://www.gnu.org/software/bash/) matching and expansion capabilities to JavaScript, _and - as you can see by the [benchmarks](#benchmarks) - without sacrificing speed_.
-
-| **Related library** | **Matching Type** | **Example** | **Description** |
-| --- | --- | --- | --- |
-| `nanomatch` (you are here) | Wildcards | `*` | [Filename expansion](https://www.gnu.org/software/bash/manual/html_node/Filename-Expansion.html#Filename-Expansion), also referred to as globbing and pathname expansion, allows the use of [wildcards](#features) for matching. |
-| [expand-tilde](https://github.com/jonschlinkert/expand-tilde) | Tildes | `~` | [Tilde expansion](https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html#Tilde-Expansion) converts the leading tilde in a file path to the user home directory. |
-| [braces](https://github.com/jonschlinkert/braces) | Braces | `{a,b,c}` | [Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html) |
-| [expand-brackets](https://github.com/jonschlinkert/expand-brackets) | Brackets | `[[:alpha:]]` | [POSIX character classes](https://www.gnu.org/software/grep/manual/html_node/Character-Classes-and-Bracket-Expressions.html) (also referred to as POSIX brackets, or POSIX character classes) |
-| [extglob](https://github.com/jonschlinkert/extglob) | Parens | `!(a\ | b)` | [Extglobs](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html#Pattern-Matching) |
-| [micromatch](https://github.com/micromatch/micromatch) | All | all | Micromatch is built on top of the other libraries. |
-
-There are many resources available on the web if you want to dive deeper into how these features work in Bash.
-
-## Benchmarks
-
-### Running benchmarks
-
-Install dev dependencies:
-
-```bash
-npm i -d && node benchmark
-```
-
-### Nanomatch vs. Minimatch vs. Multimatch
-
-```bash
-# globstar-basic (182 bytes)
- minimatch x 69,512 ops/sec ±1.92% (88 runs sampled)
- multimatch x 63,376 ops/sec ±1.41% (89 runs sampled)
- nanomatch x 432,451 ops/sec ±0.92% (88 runs sampled)
-
- fastest is nanomatch (by 651% avg)
-
-# large-list-globstar (485686 bytes)
- minimatch x 34.02 ops/sec ±1.42% (59 runs sampled)
- multimatch x 33.58 ops/sec ±1.97% (58 runs sampled)
- nanomatch x 483 ops/sec ±1.06% (86 runs sampled)
-
- fastest is nanomatch (by 1429% avg)
-
-# long-list-globstar (194085 bytes)
- minimatch x 383 ops/sec ±0.74% (90 runs sampled)
- multimatch x 378 ops/sec ±0.59% (89 runs sampled)
- nanomatch x 990 ops/sec ±1.14% (85 runs sampled)
-
- fastest is nanomatch (by 260% avg)
-
-# negation-basic (132 bytes)
- minimatch x 242,145 ops/sec ±1.17% (89 runs sampled)
- multimatch x 76,403 ops/sec ±0.78% (92 runs sampled)
- nanomatch x 537,253 ops/sec ±1.44% (86 runs sampled)
-
- fastest is nanomatch (by 337% avg)
-
-# not-glob-basic (93 bytes)
- minimatch x 252,402 ops/sec ±1.33% (89 runs sampled)
- multimatch x 209,954 ops/sec ±1.30% (90 runs sampled)
- nanomatch x 1,716,468 ops/sec ±1.13% (86 runs sampled)
-
- fastest is nanomatch (by 742% avg)
-
-# star-basic (93 bytes)
- minimatch x 182,780 ops/sec ±1.41% (91 runs sampled)
- multimatch x 153,210 ops/sec ±0.72% (89 runs sampled)
- nanomatch x 599,621 ops/sec ±1.22% (90 runs sampled)
-
- fastest is nanomatch (by 357% avg)
-
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards.
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [extglob](https://www.npmjs.com/package/extglob): Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob… [more](https://github.com/micromatch/extglob) | [homepage](https://github.com/micromatch/extglob "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.")
-* [is-extglob](https://www.npmjs.com/package/is-extglob): Returns true if a string has an extglob. | [homepage](https://github.com/jonschlinkert/is-extglob "Returns true if a string has an extglob.")
-* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet")
-* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/micromatch/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 164 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [devongovett](https://github.com/devongovett) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert)
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on February 18, 2018._
\ No newline at end of file
diff --git a/node_modules/nanomatch/index.js b/node_modules/nanomatch/index.js
deleted file mode 100644
index dddc612..0000000
--- a/node_modules/nanomatch/index.js
+++ /dev/null
@@ -1,838 +0,0 @@
-'use strict';
-
-/**
- * Module dependencies
- */
-
-var util = require('util');
-var toRegex = require('to-regex');
-var extend = require('extend-shallow');
-
-/**
- * Local dependencies
- */
-
-var compilers = require('./lib/compilers');
-var parsers = require('./lib/parsers');
-var cache = require('./lib/cache');
-var utils = require('./lib/utils');
-var MAX_LENGTH = 1024 * 64;
-
-/**
- * The main function takes a list of strings and one or more
- * glob patterns to use for matching.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm(list, patterns[, options]);
- *
- * console.log(nm(['a.js', 'a.txt'], ['*.js']));
- * //=> [ 'a.js' ]
- * ```
- * @param {Array} `list` A list of strings to match
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Array} Returns an array of matches
- * @summary false
- * @api public
- */
-
-function nanomatch(list, patterns, options) {
- patterns = utils.arrayify(patterns);
- list = utils.arrayify(list);
-
- var len = patterns.length;
- if (list.length === 0 || len === 0) {
- return [];
- }
-
- if (len === 1) {
- return nanomatch.match(list, patterns[0], options);
- }
-
- var negated = false;
- var omit = [];
- var keep = [];
- var idx = -1;
-
- while (++idx < len) {
- var pattern = patterns[idx];
-
- if (typeof pattern === 'string' && pattern.charCodeAt(0) === 33 /* ! */) {
- omit.push.apply(omit, nanomatch.match(list, pattern.slice(1), options));
- negated = true;
- } else {
- keep.push.apply(keep, nanomatch.match(list, pattern, options));
- }
- }
-
- // minimatch.match parity
- if (negated && keep.length === 0) {
- if (options && options.unixify === false) {
- keep = list.slice();
- } else {
- var unixify = utils.unixify(options);
- for (var i = 0; i < list.length; i++) {
- keep.push(unixify(list[i]));
- }
- }
- }
-
- var matches = utils.diff(keep, omit);
- if (!options || options.nodupes !== false) {
- return utils.unique(matches);
- }
-
- return matches;
-}
-
-/**
- * Similar to the main function, but `pattern` must be a string.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.match(list, pattern[, options]);
- *
- * console.log(nm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a'));
- * //=> ['a.a', 'a.aa']
- * ```
- * @param {Array} `list` Array of strings to match
- * @param {String} `pattern` Glob pattern to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Array} Returns an array of matches
- * @api public
- */
-
-nanomatch.match = function(list, pattern, options) {
- if (Array.isArray(pattern)) {
- throw new TypeError('expected pattern to be a string');
- }
-
- var unixify = utils.unixify(options);
- var isMatch = memoize('match', pattern, options, nanomatch.matcher);
- var matches = [];
-
- list = utils.arrayify(list);
- var len = list.length;
- var idx = -1;
-
- while (++idx < len) {
- var ele = list[idx];
- if (ele === pattern || isMatch(ele)) {
- matches.push(utils.value(ele, unixify, options));
- }
- }
-
- // if no options were passed, uniquify results and return
- if (typeof options === 'undefined') {
- return utils.unique(matches);
- }
-
- if (matches.length === 0) {
- if (options.failglob === true) {
- throw new Error('no matches found for "' + pattern + '"');
- }
- if (options.nonull === true || options.nullglob === true) {
- return [options.unescape ? utils.unescape(pattern) : pattern];
- }
- }
-
- // if `opts.ignore` was defined, diff ignored list
- if (options.ignore) {
- matches = nanomatch.not(matches, options.ignore, options);
- }
-
- return options.nodupes !== false ? utils.unique(matches) : matches;
-};
-
-/**
- * Returns true if the specified `string` matches the given glob `pattern`.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.isMatch(string, pattern[, options]);
- *
- * console.log(nm.isMatch('a.a', '*.a'));
- * //=> true
- * console.log(nm.isMatch('a.b', '*.a'));
- * //=> false
- * ```
- * @param {String} `string` String to match
- * @param {String} `pattern` Glob pattern to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if the string matches the glob pattern.
- * @api public
- */
-
-nanomatch.isMatch = function(str, pattern, options) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string: "' + util.inspect(str) + '"');
- }
-
- if (utils.isEmptyString(str) || utils.isEmptyString(pattern)) {
- return false;
- }
-
- var equals = utils.equalsPattern(options);
- if (equals(str)) {
- return true;
- }
-
- var isMatch = memoize('isMatch', pattern, options, nanomatch.matcher);
- return isMatch(str);
-};
-
-/**
- * Returns true if some of the elements in the given `list` match any of the
- * given glob `patterns`.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.some(list, patterns[, options]);
- *
- * console.log(nm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
- * // true
- * console.log(nm.some(['foo.js'], ['*.js', '!foo.js']));
- * // false
- * ```
- * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-nanomatch.some = function(list, patterns, options) {
- if (typeof list === 'string') {
- list = [list];
- }
-
- for (var i = 0; i < list.length; i++) {
- if (nanomatch(list[i], patterns, options).length === 1) {
- return true;
- }
- }
-
- return false;
-};
-
-/**
- * Returns true if every element in the given `list` matches
- * at least one of the given glob `patterns`.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.every(list, patterns[, options]);
- *
- * console.log(nm.every('foo.js', ['foo.js']));
- * // true
- * console.log(nm.every(['foo.js', 'bar.js'], ['*.js']));
- * // true
- * console.log(nm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));
- * // false
- * console.log(nm.every(['foo.js'], ['*.js', '!foo.js']));
- * // false
- * ```
- * @param {String|Array} `list` The string or array of strings to test.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-nanomatch.every = function(list, patterns, options) {
- if (typeof list === 'string') {
- list = [list];
- }
-
- for (var i = 0; i < list.length; i++) {
- if (nanomatch(list[i], patterns, options).length !== 1) {
- return false;
- }
- }
-
- return true;
-};
-
-/**
- * Returns true if **any** of the given glob `patterns`
- * match the specified `string`.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.any(string, patterns[, options]);
- *
- * console.log(nm.any('a.a', ['b.*', '*.a']));
- * //=> true
- * console.log(nm.any('a.a', 'b.*'));
- * //=> false
- * ```
- * @param {String|Array} `str` The string to test.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-nanomatch.any = function(str, patterns, options) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string: "' + util.inspect(str) + '"');
- }
-
- if (utils.isEmptyString(str) || utils.isEmptyString(patterns)) {
- return false;
- }
-
- if (typeof patterns === 'string') {
- patterns = [patterns];
- }
-
- for (var i = 0; i < patterns.length; i++) {
- if (nanomatch.isMatch(str, patterns[i], options)) {
- return true;
- }
- }
- return false;
-};
-
-/**
- * Returns true if **all** of the given `patterns`
- * match the specified string.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.all(string, patterns[, options]);
- *
- * console.log(nm.all('foo.js', ['foo.js']));
- * // true
- *
- * console.log(nm.all('foo.js', ['*.js', '!foo.js']));
- * // false
- *
- * console.log(nm.all('foo.js', ['*.js', 'foo.js']));
- * // true
- *
- * console.log(nm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));
- * // true
- * ```
- * @param {String|Array} `str` The string to test.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
- * @api public
- */
-
-nanomatch.all = function(str, patterns, options) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string: "' + util.inspect(str) + '"');
- }
-
- if (typeof patterns === 'string') {
- patterns = [patterns];
- }
-
- for (var i = 0; i < patterns.length; i++) {
- if (!nanomatch.isMatch(str, patterns[i], options)) {
- return false;
- }
- }
- return true;
-};
-
-/**
- * Returns a list of strings that _**do not match any**_ of the given `patterns`.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.not(list, patterns[, options]);
- *
- * console.log(nm.not(['a.a', 'b.b', 'c.c'], '*.a'));
- * //=> ['b.b', 'c.c']
- * ```
- * @param {Array} `list` Array of strings to match.
- * @param {String|Array} `patterns` One or more glob pattern to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Array} Returns an array of strings that **do not match** the given patterns.
- * @api public
- */
-
-nanomatch.not = function(list, patterns, options) {
- var opts = extend({}, options);
- var ignore = opts.ignore;
- delete opts.ignore;
-
- list = utils.arrayify(list);
-
- var matches = utils.diff(list, nanomatch(list, patterns, opts));
- if (ignore) {
- matches = utils.diff(matches, nanomatch(list, ignore));
- }
-
- return opts.nodupes !== false ? utils.unique(matches) : matches;
-};
-
-/**
- * Returns true if the given `string` contains the given pattern. Similar
- * to [.isMatch](#isMatch) but the pattern can match any part of the string.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.contains(string, pattern[, options]);
- *
- * console.log(nm.contains('aa/bb/cc', '*b'));
- * //=> true
- * console.log(nm.contains('aa/bb/cc', '*d'));
- * //=> false
- * ```
- * @param {String} `str` The string to match.
- * @param {String|Array} `patterns` Glob pattern to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if the patter matches any part of `str`.
- * @api public
- */
-
-nanomatch.contains = function(str, patterns, options) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string: "' + util.inspect(str) + '"');
- }
-
- if (typeof patterns === 'string') {
- if (utils.isEmptyString(str) || utils.isEmptyString(patterns)) {
- return false;
- }
-
- var equals = utils.equalsPattern(patterns, options);
- if (equals(str)) {
- return true;
- }
- var contains = utils.containsPattern(patterns, options);
- if (contains(str)) {
- return true;
- }
- }
-
- var opts = extend({}, options, {contains: true});
- return nanomatch.any(str, patterns, opts);
-};
-
-/**
- * Returns true if the given pattern and options should enable
- * the `matchBase` option.
- * @return {Boolean}
- * @api private
- */
-
-nanomatch.matchBase = function(pattern, options) {
- if (pattern && pattern.indexOf('/') !== -1 || !options) return false;
- return options.basename === true || options.matchBase === true;
-};
-
-/**
- * Filter the keys of the given object with the given `glob` pattern
- * and `options`. Does not attempt to match nested keys. If you need this feature,
- * use [glob-object][] instead.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.matchKeys(object, patterns[, options]);
- *
- * var obj = { aa: 'a', ab: 'b', ac: 'c' };
- * console.log(nm.matchKeys(obj, '*b'));
- * //=> { ab: 'b' }
- * ```
- * @param {Object} `object` The object with keys to filter.
- * @param {String|Array} `patterns` One or more glob patterns to use for matching.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Object} Returns an object with only keys that match the given patterns.
- * @api public
- */
-
-nanomatch.matchKeys = function(obj, patterns, options) {
- if (!utils.isObject(obj)) {
- throw new TypeError('expected the first argument to be an object');
- }
- var keys = nanomatch(Object.keys(obj), patterns, options);
- return utils.pick(obj, keys);
-};
-
-/**
- * Returns a memoized matcher function from the given glob `pattern` and `options`.
- * The returned function takes a string to match as its only argument and returns
- * true if the string is a match.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.matcher(pattern[, options]);
- *
- * var isMatch = nm.matcher('*.!(*a)');
- * console.log(isMatch('a.a'));
- * //=> false
- * console.log(isMatch('a.b'));
- * //=> true
- * ```
- * @param {String} `pattern` Glob pattern
- * @param {Object} `options` See available [options](#options) for changing how matches are performed.
- * @return {Function} Returns a matcher function.
- * @api public
- */
-
-nanomatch.matcher = function matcher(pattern, options) {
- if (utils.isEmptyString(pattern)) {
- return function() {
- return false;
- };
- }
-
- if (Array.isArray(pattern)) {
- return compose(pattern, options, matcher);
- }
-
- // if pattern is a regex
- if (pattern instanceof RegExp) {
- return test(pattern);
- }
-
- // if pattern is invalid
- if (!utils.isString(pattern)) {
- throw new TypeError('expected pattern to be an array, string or regex');
- }
-
- // if pattern is a non-glob string
- if (!utils.hasSpecialChars(pattern)) {
- if (options && options.nocase === true) {
- pattern = pattern.toLowerCase();
- }
- return utils.matchPath(pattern, options);
- }
-
- // if pattern is a glob string
- var re = nanomatch.makeRe(pattern, options);
-
- // if `options.matchBase` or `options.basename` is defined
- if (nanomatch.matchBase(pattern, options)) {
- return utils.matchBasename(re, options);
- }
-
- function test(regex) {
- var equals = utils.equalsPattern(options);
- var unixify = utils.unixify(options);
-
- return function(str) {
- if (equals(str)) {
- return true;
- }
-
- if (regex.test(unixify(str))) {
- return true;
- }
- return false;
- };
- }
-
- // create matcher function
- var matcherFn = test(re);
- // set result object from compiler on matcher function,
- // as a non-enumerable property. useful for debugging
- utils.define(matcherFn, 'result', re.result);
- return matcherFn;
-};
-
-/**
- * Returns an array of matches captured by `pattern` in `string, or
- * `null` if the pattern did not match.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.capture(pattern, string[, options]);
- *
- * console.log(nm.capture('test/*.js', 'test/foo.js'));
- * //=> ['foo']
- * console.log(nm.capture('test/*.js', 'foo/bar.css'));
- * //=> null
- * ```
- * @param {String} `pattern` Glob pattern to use for matching.
- * @param {String} `string` String to match
- * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`.
- * @api public
- */
-
-nanomatch.capture = function(pattern, str, options) {
- var re = nanomatch.makeRe(pattern, extend({capture: true}, options));
- var unixify = utils.unixify(options);
-
- function match() {
- return function(string) {
- var match = re.exec(unixify(string));
- if (!match) {
- return null;
- }
-
- return match.slice(1);
- };
- }
-
- var capture = memoize('capture', pattern, options, match);
- return capture(str);
-};
-
-/**
- * Create a regular expression from the given glob `pattern`.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.makeRe(pattern[, options]);
- *
- * console.log(nm.makeRe('*.js'));
- * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/
- * ```
- * @param {String} `pattern` A glob pattern to convert to regex.
- * @param {Object} `options` See available [options](#options) for changing how matches are performed.
- * @return {RegExp} Returns a regex created from the given pattern.
- * @api public
- */
-
-nanomatch.makeRe = function(pattern, options) {
- if (pattern instanceof RegExp) {
- return pattern;
- }
-
- if (typeof pattern !== 'string') {
- throw new TypeError('expected pattern to be a string');
- }
-
- if (pattern.length > MAX_LENGTH) {
- throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters');
- }
-
- function makeRe() {
- var opts = utils.extend({wrap: false}, options);
- var result = nanomatch.create(pattern, opts);
- var regex = toRegex(result.output, opts);
- utils.define(regex, 'result', result);
- return regex;
- }
-
- return memoize('makeRe', pattern, options, makeRe);
-};
-
-/**
- * Parses the given glob `pattern` and returns an object with the compiled `output`
- * and optional source `map`.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.create(pattern[, options]);
- *
- * console.log(nm.create('abc/*.js'));
- * // { options: { source: 'string', sourcemap: true },
- * // state: {},
- * // compilers:
- * // { ... },
- * // output: '(\\.[\\\\\\/])?abc\\/(?!\\.)(?=.)[^\\/]*?\\.js',
- * // ast:
- * // { type: 'root',
- * // errors: [],
- * // nodes:
- * // [ ... ],
- * // dot: false,
- * // input: 'abc/*.js' },
- * // parsingErrors: [],
- * // map:
- * // { version: 3,
- * // sources: [ 'string' ],
- * // names: [],
- * // mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE',
- * // sourcesContent: [ 'abc/*.js' ] },
- * // position: { line: 1, column: 28 },
- * // content: {},
- * // files: {},
- * // idx: 6 }
- * ```
- * @param {String} `pattern` Glob pattern to parse and compile.
- * @param {Object} `options` Any [options](#options) to change how parsing and compiling is performed.
- * @return {Object} Returns an object with the parsed AST, compiled string and optional source map.
- * @api public
- */
-
-nanomatch.create = function(pattern, options) {
- if (typeof pattern !== 'string') {
- throw new TypeError('expected a string');
- }
- function create() {
- return nanomatch.compile(nanomatch.parse(pattern, options), options);
- }
- return memoize('create', pattern, options, create);
-};
-
-/**
- * Parse the given `str` with the given `options`.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.parse(pattern[, options]);
- *
- * var ast = nm.parse('a/{b,c}/d');
- * console.log(ast);
- * // { type: 'root',
- * // errors: [],
- * // input: 'a/{b,c}/d',
- * // nodes:
- * // [ { type: 'bos', val: '' },
- * // { type: 'text', val: 'a/' },
- * // { type: 'brace',
- * // nodes:
- * // [ { type: 'brace.open', val: '{' },
- * // { type: 'text', val: 'b,c' },
- * // { type: 'brace.close', val: '}' } ] },
- * // { type: 'text', val: '/d' },
- * // { type: 'eos', val: '' } ] }
- * ```
- * @param {String} `str`
- * @param {Object} `options`
- * @return {Object} Returns an AST
- * @api public
- */
-
-nanomatch.parse = function(pattern, options) {
- if (typeof pattern !== 'string') {
- throw new TypeError('expected a string');
- }
-
- function parse() {
- var snapdragon = utils.instantiate(null, options);
- parsers(snapdragon, options);
-
- var ast = snapdragon.parse(pattern, options);
- utils.define(ast, 'snapdragon', snapdragon);
- ast.input = pattern;
- return ast;
- }
-
- return memoize('parse', pattern, options, parse);
-};
-
-/**
- * Compile the given `ast` or string with the given `options`.
- *
- * ```js
- * var nm = require('nanomatch');
- * nm.compile(ast[, options]);
- *
- * var ast = nm.parse('a/{b,c}/d');
- * console.log(nm.compile(ast));
- * // { options: { source: 'string' },
- * // state: {},
- * // compilers:
- * // { eos: [Function],
- * // noop: [Function],
- * // bos: [Function],
- * // brace: [Function],
- * // 'brace.open': [Function],
- * // text: [Function],
- * // 'brace.close': [Function] },
- * // output: [ 'a/(b|c)/d' ],
- * // ast:
- * // { ... },
- * // parsingErrors: [] }
- * ```
- * @param {Object|String} `ast`
- * @param {Object} `options`
- * @return {Object} Returns an object that has an `output` property with the compiled string.
- * @api public
- */
-
-nanomatch.compile = function(ast, options) {
- if (typeof ast === 'string') {
- ast = nanomatch.parse(ast, options);
- }
-
- function compile() {
- var snapdragon = utils.instantiate(ast, options);
- compilers(snapdragon, options);
- return snapdragon.compile(ast, options);
- }
-
- return memoize('compile', ast.input, options, compile);
-};
-
-/**
- * Clear the regex cache.
- *
- * ```js
- * nm.clearCache();
- * ```
- * @api public
- */
-
-nanomatch.clearCache = function() {
- nanomatch.cache.__data__ = {};
-};
-
-/**
- * Compose a matcher function with the given patterns.
- * This allows matcher functions to be compiled once and
- * called multiple times.
- */
-
-function compose(patterns, options, matcher) {
- var matchers;
-
- return memoize('compose', String(patterns), options, function() {
- return function(file) {
- // delay composition until it's invoked the first time,
- // after that it won't be called again
- if (!matchers) {
- matchers = [];
- for (var i = 0; i < patterns.length; i++) {
- matchers.push(matcher(patterns[i], options));
- }
- }
-
- var len = matchers.length;
- while (len--) {
- if (matchers[len](file) === true) {
- return true;
- }
- }
- return false;
- };
- });
-}
-
-/**
- * Memoize a generated regex or function. A unique key is generated
- * from the `type` (usually method name), the `pattern`, and
- * user-defined options.
- */
-
-function memoize(type, pattern, options, fn) {
- var key = utils.createKey(type + '=' + pattern, options);
-
- if (options && options.cache === false) {
- return fn(pattern, options);
- }
-
- if (cache.has(type, key)) {
- return cache.get(type, key);
- }
-
- var val = fn(pattern, options);
- cache.set(type, key, val);
- return val;
-}
-
-/**
- * Expose compiler, parser and cache on `nanomatch`
- */
-
-nanomatch.compilers = compilers;
-nanomatch.parsers = parsers;
-nanomatch.cache = cache;
-
-/**
- * Expose `nanomatch`
- * @type {Function}
- */
-
-module.exports = nanomatch;
diff --git a/node_modules/nanomatch/lib/cache.js b/node_modules/nanomatch/lib/cache.js
deleted file mode 100644
index fffc4c1..0000000
--- a/node_modules/nanomatch/lib/cache.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = new (require('fragment-cache'))();
diff --git a/node_modules/nanomatch/lib/compilers.js b/node_modules/nanomatch/lib/compilers.js
deleted file mode 100644
index d7a786e..0000000
--- a/node_modules/nanomatch/lib/compilers.js
+++ /dev/null
@@ -1,339 +0,0 @@
-'use strict';
-
-/**
-* Nanomatch compilers
-*/
-
-module.exports = function(nanomatch, options) {
- function slash() {
- if (options && typeof options.slash === 'string') {
- return options.slash;
- }
- if (options && typeof options.slash === 'function') {
- return options.slash.call(nanomatch);
- }
- return '\\\\/';
- }
-
- function star() {
- if (options && typeof options.star === 'string') {
- return options.star;
- }
- if (options && typeof options.star === 'function') {
- return options.star.call(nanomatch);
- }
- return '[^' + slash() + ']*?';
- }
-
- var ast = nanomatch.ast = nanomatch.parser.ast;
- ast.state = nanomatch.parser.state;
- nanomatch.compiler.state = ast.state;
- nanomatch.compiler
-
- /**
- * Negation / escaping
- */
-
- .set('not', function(node) {
- var prev = this.prev();
- if (this.options.nonegate === true || prev.type !== 'bos') {
- return this.emit('\\' + node.val, node);
- }
- return this.emit(node.val, node);
- })
- .set('escape', function(node) {
- if (this.options.unescape && /^[-\w_.]/.test(node.val)) {
- return this.emit(node.val, node);
- }
- return this.emit('\\' + node.val, node);
- })
- .set('quoted', function(node) {
- return this.emit(node.val, node);
- })
-
- /**
- * Regex
- */
-
- .set('dollar', function(node) {
- if (node.parent.type === 'bracket') {
- return this.emit(node.val, node);
- }
- return this.emit('\\' + node.val, node);
- })
-
- /**
- * Dot: "."
- */
-
- .set('dot', function(node) {
- if (node.dotfiles === true) this.dotfiles = true;
- return this.emit('\\' + node.val, node);
- })
-
- /**
- * Slashes: "/" and "\"
- */
-
- .set('backslash', function(node) {
- return this.emit(node.val, node);
- })
- .set('slash', function(node, nodes, i) {
- var val = '[' + slash() + ']';
- var parent = node.parent;
- var prev = this.prev();
-
- // set "node.hasSlash" to true on all ancestor parens nodes
- while (parent.type === 'paren' && !parent.hasSlash) {
- parent.hasSlash = true;
- parent = parent.parent;
- }
-
- if (prev.addQmark) {
- val += '?';
- }
-
- // word boundary
- if (node.rest.slice(0, 2) === '\\b') {
- return this.emit(val, node);
- }
-
- // globstars
- if (node.parsed === '**' || node.parsed === './**') {
- this.output = '(?:' + this.output;
- return this.emit(val + ')?', node);
- }
-
- // negation
- if (node.parsed === '!**' && this.options.nonegate !== true) {
- return this.emit(val + '?\\b', node);
- }
- return this.emit(val, node);
- })
-
- /**
- * Square brackets
- */
-
- .set('bracket', function(node) {
- var close = node.close;
- var open = !node.escaped ? '[' : '\\[';
- var negated = node.negated;
- var inner = node.inner;
- var val = node.val;
-
- if (node.escaped === true) {
- inner = inner.replace(/\\?(\W)/g, '\\$1');
- negated = '';
- }
-
- if (inner === ']-') {
- inner = '\\]\\-';
- }
-
- if (negated && inner.indexOf('.') === -1) {
- inner += '.';
- }
- if (negated && inner.indexOf('/') === -1) {
- inner += '/';
- }
-
- val = open + negated + inner + close;
- return this.emit(val, node);
- })
-
- /**
- * Square: "[.]" (only matches a single character in brackets)
- */
-
- .set('square', function(node) {
- var val = (/^\W/.test(node.val) ? '\\' : '') + node.val;
- return this.emit(val, node);
- })
-
- /**
- * Question mark: "?"
- */
-
- .set('qmark', function(node) {
- var prev = this.prev();
- // don't use "slash" variable so that we always avoid
- // matching backslashes and slashes with a qmark
- var val = '[^.\\\\/]';
- if (this.options.dot || (prev.type !== 'bos' && prev.type !== 'slash')) {
- val = '[^\\\\/]';
- }
-
- if (node.parsed.slice(-1) === '(') {
- var ch = node.rest.charAt(0);
- if (ch === '!' || ch === '=' || ch === ':') {
- return this.emit(node.val, node);
- }
- }
-
- if (node.val.length > 1) {
- val += '{' + node.val.length + '}';
- }
- return this.emit(val, node);
- })
-
- /**
- * Plus
- */
-
- .set('plus', function(node) {
- var prev = node.parsed.slice(-1);
- if (prev === ']' || prev === ')') {
- return this.emit(node.val, node);
- }
- if (!this.output || (/[?*+]/.test(ch) && node.parent.type !== 'bracket')) {
- return this.emit('\\+', node);
- }
- var ch = this.output.slice(-1);
- if (/\w/.test(ch) && !node.inside) {
- return this.emit('+\\+?', node);
- }
- return this.emit('+', node);
- })
-
- /**
- * globstar: '**'
- */
-
- .set('globstar', function(node, nodes, i) {
- if (!this.output) {
- this.state.leadingGlobstar = true;
- }
-
- var prev = this.prev();
- var before = this.prev(2);
- var next = this.next();
- var after = this.next(2);
- var type = prev.type;
- var val = node.val;
-
- if (prev.type === 'slash' && next.type === 'slash') {
- if (before.type === 'text') {
- this.output += '?';
-
- if (after.type !== 'text') {
- this.output += '\\b';
- }
- }
- }
-
- var parsed = node.parsed;
- if (parsed.charAt(0) === '!') {
- parsed = parsed.slice(1);
- }
-
- var isInside = node.isInside.paren || node.isInside.brace;
- if (parsed && type !== 'slash' && type !== 'bos' && !isInside) {
- val = star();
- } else {
- val = this.options.dot !== true
- ? '(?:(?!(?:[' + slash() + ']|^)\\.).)*?'
- : '(?:(?!(?:[' + slash() + ']|^)(?:\\.{1,2})($|[' + slash() + ']))(?!\\.{2}).)*?';
- }
-
- if ((type === 'slash' || type === 'bos') && this.options.dot !== true) {
- val = '(?!\\.)' + val;
- }
-
- if (prev.type === 'slash' && next.type === 'slash' && before.type !== 'text') {
- if (after.type === 'text' || after.type === 'star') {
- node.addQmark = true;
- }
- }
-
- if (this.options.capture) {
- val = '(' + val + ')';
- }
-
- return this.emit(val, node);
- })
-
- /**
- * Star: "*"
- */
-
- .set('star', function(node, nodes, i) {
- var prior = nodes[i - 2] || {};
- var prev = this.prev();
- var next = this.next();
- var type = prev.type;
-
- function isStart(n) {
- return n.type === 'bos' || n.type === 'slash';
- }
-
- if (this.output === '' && this.options.contains !== true) {
- this.output = '(?![' + slash() + '])';
- }
-
- if (type === 'bracket' && this.options.bash === false) {
- var str = next && next.type === 'bracket' ? star() : '*?';
- if (!prev.nodes || prev.nodes[1].type !== 'posix') {
- return this.emit(str, node);
- }
- }
-
- var prefix = !this.dotfiles && type !== 'text' && type !== 'escape'
- ? (this.options.dot ? '(?!(?:^|[' + slash() + '])\\.{1,2}(?:$|[' + slash() + ']))' : '(?!\\.)')
- : '';
-
- if (isStart(prev) || (isStart(prior) && type === 'not')) {
- if (prefix !== '(?!\\.)') {
- prefix += '(?!(\\.{2}|\\.[' + slash() + ']))(?=.)';
- } else {
- prefix += '(?=.)';
- }
- } else if (prefix === '(?!\\.)') {
- prefix = '';
- }
-
- if (prev.type === 'not' && prior.type === 'bos' && this.options.dot === true) {
- this.output = '(?!\\.)' + this.output;
- }
-
- var output = prefix + star();
- if (this.options.capture) {
- output = '(' + output + ')';
- }
-
- return this.emit(output, node);
- })
-
- /**
- * Text
- */
-
- .set('text', function(node) {
- return this.emit(node.val, node);
- })
-
- /**
- * End-of-string
- */
-
- .set('eos', function(node) {
- var prev = this.prev();
- var val = node.val;
-
- this.output = '(?:\\.[' + slash() + '](?=.))?' + this.output;
- if (this.state.metachar && prev.type !== 'qmark' && prev.type !== 'slash') {
- val += (this.options.contains ? '[' + slash() + ']?' : '(?:[' + slash() + ']|$)');
- }
-
- return this.emit(val, node);
- });
-
- /**
- * Allow custom compilers to be passed on options
- */
-
- if (options && typeof options.compilers === 'function') {
- options.compilers(nanomatch.compiler);
- }
-};
-
diff --git a/node_modules/nanomatch/lib/parsers.js b/node_modules/nanomatch/lib/parsers.js
deleted file mode 100644
index f87df8f..0000000
--- a/node_modules/nanomatch/lib/parsers.js
+++ /dev/null
@@ -1,386 +0,0 @@
-'use strict';
-
-var regexNot = require('regex-not');
-var toRegex = require('to-regex');
-
-/**
- * Characters to use in negation regex (we want to "not" match
- * characters that are matched by other parsers)
- */
-
-var cached;
-var NOT_REGEX = '[\\[!*+?$^"\'.\\\\/]+';
-var not = createTextRegex(NOT_REGEX);
-
-/**
- * Nanomatch parsers
- */
-
-module.exports = function(nanomatch, options) {
- var parser = nanomatch.parser;
- var opts = parser.options;
-
- parser.state = {
- slashes: 0,
- paths: []
- };
-
- parser.ast.state = parser.state;
- parser
-
- /**
- * Beginning-of-string
- */
-
- .capture('prefix', function() {
- if (this.parsed) return;
- var m = this.match(/^\.[\\/]/);
- if (!m) return;
- this.state.strictOpen = !!this.options.strictOpen;
- this.state.addPrefix = true;
- })
-
- /**
- * Escape: "\\."
- */
-
- .capture('escape', function() {
- if (this.isInside('bracket')) return;
- var pos = this.position();
- var m = this.match(/^(?:\\(.)|([$^]))/);
- if (!m) return;
-
- return pos({
- type: 'escape',
- val: m[2] || m[1]
- });
- })
-
- /**
- * Quoted strings
- */
-
- .capture('quoted', function() {
- var pos = this.position();
- var m = this.match(/^["']/);
- if (!m) return;
-
- var quote = m[0];
- if (this.input.indexOf(quote) === -1) {
- return pos({
- type: 'escape',
- val: quote
- });
- }
-
- var tok = advanceTo(this.input, quote);
- this.consume(tok.len);
-
- return pos({
- type: 'quoted',
- val: tok.esc
- });
- })
-
- /**
- * Negations: "!"
- */
-
- .capture('not', function() {
- var parsed = this.parsed;
- var pos = this.position();
- var m = this.match(this.notRegex || /^!+/);
- if (!m) return;
- var val = m[0];
-
- var isNegated = (val.length % 2) === 1;
- if (parsed === '' && !isNegated) {
- val = '';
- }
-
- // if nothing has been parsed, we know `!` is at the start,
- // so we need to wrap the result in a negation regex
- if (parsed === '' && isNegated && this.options.nonegate !== true) {
- this.bos.val = '(?!^(?:';
- this.append = ')$).*';
- val = '';
- }
- return pos({
- type: 'not',
- val: val
- });
- })
-
- /**
- * Dot: "."
- */
-
- .capture('dot', function() {
- var parsed = this.parsed;
- var pos = this.position();
- var m = this.match(/^\.+/);
- if (!m) return;
-
- var val = m[0];
- this.state.dot = val === '.' && (parsed === '' || parsed.slice(-1) === '/');
-
- return pos({
- type: 'dot',
- dotfiles: this.state.dot,
- val: val
- });
- })
-
- /**
- * Plus: "+"
- */
-
- .capture('plus', /^\+(?!\()/)
-
- /**
- * Question mark: "?"
- */
-
- .capture('qmark', function() {
- var parsed = this.parsed;
- var pos = this.position();
- var m = this.match(/^\?+(?!\()/);
- if (!m) return;
-
- this.state.metachar = true;
- this.state.qmark = true;
-
- return pos({
- type: 'qmark',
- parsed: parsed,
- val: m[0]
- });
- })
-
- /**
- * Globstar: "**"
- */
-
- .capture('globstar', function() {
- var parsed = this.parsed;
- var pos = this.position();
- var m = this.match(/^\*{2}(?![*(])(?=[,)/]|$)/);
- if (!m) return;
-
- var type = opts.noglobstar !== true ? 'globstar' : 'star';
- var node = pos({type: type, parsed: parsed});
- this.state.metachar = true;
-
- while (this.input.slice(0, 4) === '/**/') {
- this.input = this.input.slice(3);
- }
-
- node.isInside = {
- brace: this.isInside('brace'),
- paren: this.isInside('paren')
- };
-
- if (type === 'globstar') {
- this.state.globstar = true;
- node.val = '**';
-
- } else {
- this.state.star = true;
- node.val = '*';
- }
-
- return node;
- })
-
- /**
- * Star: "*"
- */
-
- .capture('star', function() {
- var pos = this.position();
- var starRe = /^(?:\*(?![*(])|[*]{3,}(?!\()|[*]{2}(?![(/]|$)|\*(?=\*\())/;
- var m = this.match(starRe);
- if (!m) return;
-
- this.state.metachar = true;
- this.state.star = true;
- return pos({
- type: 'star',
- val: m[0]
- });
- })
-
- /**
- * Slash: "/"
- */
-
- .capture('slash', function() {
- var pos = this.position();
- var m = this.match(/^\//);
- if (!m) return;
-
- this.state.slashes++;
- return pos({
- type: 'slash',
- val: m[0]
- });
- })
-
- /**
- * Backslash: "\\"
- */
-
- .capture('backslash', function() {
- var pos = this.position();
- var m = this.match(/^\\(?![*+?(){}[\]'"])/);
- if (!m) return;
-
- var val = m[0];
-
- if (this.isInside('bracket')) {
- val = '\\';
- } else if (val.length > 1) {
- val = '\\\\';
- }
-
- return pos({
- type: 'backslash',
- val: val
- });
- })
-
- /**
- * Square: "[.]"
- */
-
- .capture('square', function() {
- if (this.isInside('bracket')) return;
- var pos = this.position();
- var m = this.match(/^\[([^!^\\])\]/);
- if (!m) return;
-
- return pos({
- type: 'square',
- val: m[1]
- });
- })
-
- /**
- * Brackets: "[...]" (basic, this can be overridden by other parsers)
- */
-
- .capture('bracket', function() {
- var pos = this.position();
- var m = this.match(/^(?:\[([!^]?)([^\]]+|\]-)(\]|[^*+?]+)|\[)/);
- if (!m) return;
-
- var val = m[0];
- var negated = m[1] ? '^' : '';
- var inner = (m[2] || '').replace(/\\\\+/, '\\\\');
- var close = m[3] || '';
-
- if (m[2] && inner.length < m[2].length) {
- val = val.replace(/\\\\+/, '\\\\');
- }
-
- var esc = this.input.slice(0, 2);
- if (inner === '' && esc === '\\]') {
- inner += esc;
- this.consume(2);
-
- var str = this.input;
- var idx = -1;
- var ch;
-
- while ((ch = str[++idx])) {
- this.consume(1);
- if (ch === ']') {
- close = ch;
- break;
- }
- inner += ch;
- }
- }
-
- return pos({
- type: 'bracket',
- val: val,
- escaped: close !== ']',
- negated: negated,
- inner: inner,
- close: close
- });
- })
-
- /**
- * Text
- */
-
- .capture('text', function() {
- if (this.isInside('bracket')) return;
- var pos = this.position();
- var m = this.match(not);
- if (!m || !m[0]) return;
-
- return pos({
- type: 'text',
- val: m[0]
- });
- });
-
- /**
- * Allow custom parsers to be passed on options
- */
-
- if (options && typeof options.parsers === 'function') {
- options.parsers(nanomatch.parser);
- }
-};
-
-/**
- * Advance to the next non-escaped character
- */
-
-function advanceTo(input, endChar) {
- var ch = input.charAt(0);
- var tok = { len: 1, val: '', esc: '' };
- var idx = 0;
-
- function advance() {
- if (ch !== '\\') {
- tok.esc += '\\' + ch;
- tok.val += ch;
- }
-
- ch = input.charAt(++idx);
- tok.len++;
-
- if (ch === '\\') {
- advance();
- advance();
- }
- }
-
- while (ch && ch !== endChar) {
- advance();
- }
- return tok;
-}
-
-/**
- * Create text regex
- */
-
-function createTextRegex(pattern) {
- if (cached) return cached;
- var opts = {contains: true, strictClose: false};
- var not = regexNot.create(pattern, opts);
- var re = toRegex('^(?:[*]\\((?=.)|' + not + ')', opts);
- return (cached = re);
-}
-
-/**
- * Expose negation string
- */
-
-module.exports.not = NOT_REGEX;
diff --git a/node_modules/nanomatch/lib/utils.js b/node_modules/nanomatch/lib/utils.js
deleted file mode 100644
index 0cf1501..0000000
--- a/node_modules/nanomatch/lib/utils.js
+++ /dev/null
@@ -1,379 +0,0 @@
-'use strict';
-
-var utils = module.exports;
-var path = require('path');
-
-/**
- * Module dependencies
- */
-
-var isWindows = require('is-windows')();
-var Snapdragon = require('snapdragon');
-utils.define = require('define-property');
-utils.diff = require('arr-diff');
-utils.extend = require('extend-shallow');
-utils.pick = require('object.pick');
-utils.typeOf = require('kind-of');
-utils.unique = require('array-unique');
-
-/**
- * Returns true if the given value is effectively an empty string
- */
-
-utils.isEmptyString = function(val) {
- return String(val) === '' || String(val) === './';
-};
-
-/**
- * Returns true if the platform is windows, or `path.sep` is `\\`.
- * This is defined as a function to allow `path.sep` to be set in unit tests,
- * or by the user, if there is a reason to do so.
- * @return {Boolean}
- */
-
-utils.isWindows = function() {
- return path.sep === '\\' || isWindows === true;
-};
-
-/**
- * Return the last element from an array
- */
-
-utils.last = function(arr, n) {
- return arr[arr.length - (n || 1)];
-};
-
-/**
- * Get the `Snapdragon` instance to use
- */
-
-utils.instantiate = function(ast, options) {
- var snapdragon;
- // if an instance was created by `.parse`, use that instance
- if (utils.typeOf(ast) === 'object' && ast.snapdragon) {
- snapdragon = ast.snapdragon;
- // if the user supplies an instance on options, use that instance
- } else if (utils.typeOf(options) === 'object' && options.snapdragon) {
- snapdragon = options.snapdragon;
- // create a new instance
- } else {
- snapdragon = new Snapdragon(options);
- }
-
- utils.define(snapdragon, 'parse', function(str, options) {
- var parsed = Snapdragon.prototype.parse.call(this, str, options);
- parsed.input = str;
-
- // escape unmatched brace/bracket/parens
- var last = this.parser.stack.pop();
- if (last && this.options.strictErrors !== true) {
- var open = last.nodes[0];
- var inner = last.nodes[1];
- if (last.type === 'bracket') {
- if (inner.val.charAt(0) === '[') {
- inner.val = '\\' + inner.val;
- }
-
- } else {
- open.val = '\\' + open.val;
- var sibling = open.parent.nodes[1];
- if (sibling.type === 'star') {
- sibling.loose = true;
- }
- }
- }
-
- // add non-enumerable parser reference
- utils.define(parsed, 'parser', this.parser);
- return parsed;
- });
-
- return snapdragon;
-};
-
-/**
- * Create the key to use for memoization. The key is generated
- * by iterating over the options and concatenating key-value pairs
- * to the pattern string.
- */
-
-utils.createKey = function(pattern, options) {
- if (typeof options === 'undefined') {
- return pattern;
- }
- var key = pattern;
- for (var prop in options) {
- if (options.hasOwnProperty(prop)) {
- key += ';' + prop + '=' + String(options[prop]);
- }
- }
- return key;
-};
-
-/**
- * Cast `val` to an array
- * @return {Array}
- */
-
-utils.arrayify = function(val) {
- if (typeof val === 'string') return [val];
- return val ? (Array.isArray(val) ? val : [val]) : [];
-};
-
-/**
- * Return true if `val` is a non-empty string
- */
-
-utils.isString = function(val) {
- return typeof val === 'string';
-};
-
-/**
- * Return true if `val` is a non-empty string
- */
-
-utils.isRegex = function(val) {
- return utils.typeOf(val) === 'regexp';
-};
-
-/**
- * Return true if `val` is a non-empty string
- */
-
-utils.isObject = function(val) {
- return utils.typeOf(val) === 'object';
-};
-
-/**
- * Escape regex characters in the given string
- */
-
-utils.escapeRegex = function(str) {
- return str.replace(/[-[\]{}()^$|*+?.\\/\s]/g, '\\$&');
-};
-
-/**
- * Combines duplicate characters in the provided `input` string.
- * @param {String} `input`
- * @returns {String}
- */
-
-utils.combineDupes = function(input, patterns) {
- patterns = utils.arrayify(patterns).join('|').split('|');
- patterns = patterns.map(function(s) {
- return s.replace(/\\?([+*\\/])/g, '\\$1');
- });
- var substr = patterns.join('|');
- var regex = new RegExp('(' + substr + ')(?=\\1)', 'g');
- return input.replace(regex, '');
-};
-
-/**
- * Returns true if the given `str` has special characters
- */
-
-utils.hasSpecialChars = function(str) {
- return /(?:(?:(^|\/)[!.])|[*?+()|[\]{}]|[+@]\()/.test(str);
-};
-
-/**
- * Normalize slashes in the given filepath.
- *
- * @param {String} `filepath`
- * @return {String}
- */
-
-utils.toPosixPath = function(str) {
- return str.replace(/\\+/g, '/');
-};
-
-/**
- * Strip backslashes before special characters in a string.
- *
- * @param {String} `str`
- * @return {String}
- */
-
-utils.unescape = function(str) {
- return utils.toPosixPath(str.replace(/\\(?=[*+?!.])/g, ''));
-};
-
-/**
- * Strip the drive letter from a windows filepath
- * @param {String} `fp`
- * @return {String}
- */
-
-utils.stripDrive = function(fp) {
- return utils.isWindows() ? fp.replace(/^[a-z]:[\\/]+?/i, '/') : fp;
-};
-
-/**
- * Strip the prefix from a filepath
- * @param {String} `fp`
- * @return {String}
- */
-
-utils.stripPrefix = function(str) {
- if (str.charAt(0) === '.' && (str.charAt(1) === '/' || str.charAt(1) === '\\')) {
- return str.slice(2);
- }
- return str;
-};
-
-/**
- * Returns true if `str` is a common character that doesn't need
- * to be processed to be used for matching.
- * @param {String} `str`
- * @return {Boolean}
- */
-
-utils.isSimpleChar = function(str) {
- return str.trim() === '' || str === '.';
-};
-
-/**
- * Returns true if the given str is an escaped or
- * unescaped path character
- */
-
-utils.isSlash = function(str) {
- return str === '/' || str === '\\/' || str === '\\' || str === '\\\\';
-};
-
-/**
- * Returns a function that returns true if the given
- * pattern matches or contains a `filepath`
- *
- * @param {String} `pattern`
- * @return {Function}
- */
-
-utils.matchPath = function(pattern, options) {
- return (options && options.contains)
- ? utils.containsPattern(pattern, options)
- : utils.equalsPattern(pattern, options);
-};
-
-/**
- * Returns true if the given (original) filepath or unixified path are equal
- * to the given pattern.
- */
-
-utils._equals = function(filepath, unixPath, pattern) {
- return pattern === filepath || pattern === unixPath;
-};
-
-/**
- * Returns true if the given (original) filepath or unixified path contain
- * the given pattern.
- */
-
-utils._contains = function(filepath, unixPath, pattern) {
- return filepath.indexOf(pattern) !== -1 || unixPath.indexOf(pattern) !== -1;
-};
-
-/**
- * Returns a function that returns true if the given
- * pattern is the same as a given `filepath`
- *
- * @param {String} `pattern`
- * @return {Function}
- */
-
-utils.equalsPattern = function(pattern, options) {
- var unixify = utils.unixify(options);
- options = options || {};
-
- return function fn(filepath) {
- var equal = utils._equals(filepath, unixify(filepath), pattern);
- if (equal === true || options.nocase !== true) {
- return equal;
- }
- var lower = filepath.toLowerCase();
- return utils._equals(lower, unixify(lower), pattern);
- };
-};
-
-/**
- * Returns a function that returns true if the given
- * pattern contains a `filepath`
- *
- * @param {String} `pattern`
- * @return {Function}
- */
-
-utils.containsPattern = function(pattern, options) {
- var unixify = utils.unixify(options);
- options = options || {};
-
- return function(filepath) {
- var contains = utils._contains(filepath, unixify(filepath), pattern);
- if (contains === true || options.nocase !== true) {
- return contains;
- }
- var lower = filepath.toLowerCase();
- return utils._contains(lower, unixify(lower), pattern);
- };
-};
-
-/**
- * Returns a function that returns true if the given
- * regex matches the `filename` of a file path.
- *
- * @param {RegExp} `re` Matching regex
- * @return {Function}
- */
-
-utils.matchBasename = function(re) {
- return function(filepath) {
- return re.test(filepath) || re.test(path.basename(filepath));
- };
-};
-
-/**
- * Returns the given value unchanced.
- * @return {any}
- */
-
-utils.identity = function(val) {
- return val;
-};
-
-/**
- * Determines the filepath to return based on the provided options.
- * @return {any}
- */
-
-utils.value = function(str, unixify, options) {
- if (options && options.unixify === false) {
- return str;
- }
- if (options && typeof options.unixify === 'function') {
- return options.unixify(str);
- }
- return unixify(str);
-};
-
-/**
- * Returns a function that normalizes slashes in a string to forward
- * slashes, strips `./` from beginning of paths, and optionally unescapes
- * special characters.
- * @return {Function}
- */
-
-utils.unixify = function(options) {
- var opts = options || {};
- return function(filepath) {
- if (opts.stripPrefix !== false) {
- filepath = utils.stripPrefix(filepath);
- }
- if (opts.unescape === true) {
- filepath = utils.unescape(filepath);
- }
- if (opts.unixify === true || utils.isWindows()) {
- filepath = utils.toPosixPath(filepath);
- }
- return filepath;
- };
-};
diff --git a/node_modules/nanomatch/node_modules/extend-shallow/LICENSE b/node_modules/nanomatch/node_modules/extend-shallow/LICENSE
deleted file mode 100644
index 99c9369..0000000
--- a/node_modules/nanomatch/node_modules/extend-shallow/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2015, 2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/nanomatch/node_modules/extend-shallow/README.md b/node_modules/nanomatch/node_modules/extend-shallow/README.md
deleted file mode 100644
index dee226f..0000000
--- a/node_modules/nanomatch/node_modules/extend-shallow/README.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# extend-shallow [](https://www.npmjs.com/package/extend-shallow) [](https://npmjs.org/package/extend-shallow) [](https://npmjs.org/package/extend-shallow) [](https://travis-ci.org/jonschlinkert/extend-shallow)
-
-> Extend an object with the properties of additional objects. node.js/javascript util.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save extend-shallow
-```
-
-## Usage
-
-```js
-var extend = require('extend-shallow');
-
-extend({a: 'b'}, {c: 'd'})
-//=> {a: 'b', c: 'd'}
-```
-
-Pass an empty object to shallow clone:
-
-```js
-var obj = {};
-extend(obj, {a: 'b'}, {c: 'd'})
-//=> {a: 'b', c: 'd'}
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.")
-* [for-in](https://www.npmjs.com/package/for-in): Iterate over the own and inherited enumerable properties of an object, and return an object… [more](https://github.com/jonschlinkert/for-in) | [homepage](https://github.com/jonschlinkert/for-in "Iterate over the own and inherited enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js")
-* [for-own](https://www.npmjs.com/package/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) | [homepage](https://github.com/jonschlinkert/for-own "Iterate over the own enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js.")
-* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
-* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 33 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [pdehaan](https://github.com/pdehaan) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 19, 2017._
\ No newline at end of file
diff --git a/node_modules/nanomatch/node_modules/extend-shallow/index.js b/node_modules/nanomatch/node_modules/extend-shallow/index.js
deleted file mode 100644
index c9582f8..0000000
--- a/node_modules/nanomatch/node_modules/extend-shallow/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-var isExtendable = require('is-extendable');
-var assignSymbols = require('assign-symbols');
-
-module.exports = Object.assign || function(obj/*, objects*/) {
- if (obj === null || typeof obj === 'undefined') {
- throw new TypeError('Cannot convert undefined or null to object');
- }
- if (!isObject(obj)) {
- obj = {};
- }
- for (var i = 1; i < arguments.length; i++) {
- var val = arguments[i];
- if (isString(val)) {
- val = toObject(val);
- }
- if (isObject(val)) {
- assign(obj, val);
- assignSymbols(obj, val);
- }
- }
- return obj;
-};
-
-function assign(a, b) {
- for (var key in b) {
- if (hasOwn(b, key)) {
- a[key] = b[key];
- }
- }
-}
-
-function isString(val) {
- return (val && typeof val === 'string');
-}
-
-function toObject(str) {
- var obj = {};
- for (var i in str) {
- obj[i] = str[i];
- }
- return obj;
-}
-
-function isObject(val) {
- return (val && typeof val === 'object') || isExtendable(val);
-}
-
-/**
- * Returns true if the given `key` is an own property of `obj`.
- */
-
-function hasOwn(obj, key) {
- return Object.prototype.hasOwnProperty.call(obj, key);
-}
-
-function isEnum(obj, key) {
- return Object.prototype.propertyIsEnumerable.call(obj, key);
-}
diff --git a/node_modules/nanomatch/node_modules/extend-shallow/package.json b/node_modules/nanomatch/node_modules/extend-shallow/package.json
deleted file mode 100644
index e5e9105..0000000
--- a/node_modules/nanomatch/node_modules/extend-shallow/package.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "name": "extend-shallow",
- "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
- "version": "3.0.2",
- "homepage": "https://github.com/jonschlinkert/extend-shallow",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Peter deHaan (http://about.me/peterdehaan)"
- ],
- "repository": "jonschlinkert/extend-shallow",
- "bugs": {
- "url": "https://github.com/jonschlinkert/extend-shallow/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "devDependencies": {
- "array-slice": "^1.0.0",
- "benchmarked": "^2.0.0",
- "for-own": "^1.0.0",
- "gulp-format-md": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.1",
- "minimist": "^1.2.0",
- "mocha": "^3.5.3",
- "object-assign": "^4.1.1"
- },
- "keywords": [
- "assign",
- "clone",
- "extend",
- "merge",
- "obj",
- "object",
- "object-assign",
- "object.assign",
- "prop",
- "properties",
- "property",
- "props",
- "shallow",
- "util",
- "utility",
- "utils",
- "value"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "related": {
- "list": [
- "extend-shallow",
- "for-in",
- "for-own",
- "is-plain-object",
- "isobject",
- "kind-of"
- ]
- },
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/nanomatch/node_modules/is-extendable/LICENSE b/node_modules/nanomatch/node_modules/is-extendable/LICENSE
deleted file mode 100644
index c0d7f13..0000000
--- a/node_modules/nanomatch/node_modules/is-extendable/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/nanomatch/node_modules/is-extendable/README.md b/node_modules/nanomatch/node_modules/is-extendable/README.md
deleted file mode 100644
index 875b56a..0000000
--- a/node_modules/nanomatch/node_modules/is-extendable/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# is-extendable [](https://www.npmjs.com/package/is-extendable) [](https://npmjs.org/package/is-extendable) [](https://npmjs.org/package/is-extendable) [](https://travis-ci.org/jonschlinkert/is-extendable)
-
-> Returns true if a value is a plain object, array or function.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save is-extendable
-```
-
-## Usage
-
-```js
-var isExtendable = require('is-extendable');
-```
-
-Returns true if the value is any of the following:
-
-* array
-* plain object
-* function
-
-## Notes
-
-All objects in JavaScript can have keys, but it's a pain to check for this, since we ether need to verify that the value is not `null` or `undefined` and:
-
-* the value is not a primitive, or
-* that the object is a plain object, function or array
-
-Also note that an `extendable` object is not the same as an [extensible object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible), which is one that (in es6) is not sealed, frozen, or marked as non-extensible using `preventExtensions`.
-
-## Release history
-
-### v1.0.0 - 2017/07/20
-
-**Breaking changes**
-
-* No longer considers date, regex or error objects to be extendable
-
-## About
-
-### Related projects
-
-* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target… [more](https://github.com/jonschlinkert/assign-deep) | [homepage](https://github.com/jonschlinkert/assign-deep "Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target (first) object.")
-* [is-equal-shallow](https://www.npmjs.com/package/is-equal-shallow): Does a shallow comparison of two objects, returning false if the keys or values differ. | [homepage](https://github.com/jonschlinkert/is-equal-shallow "Does a shallow comparison of two objects, returning false if the keys or values differ.")
-* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
-* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 20, 2017._
\ No newline at end of file
diff --git a/node_modules/nanomatch/node_modules/is-extendable/index.d.ts b/node_modules/nanomatch/node_modules/is-extendable/index.d.ts
deleted file mode 100644
index b96d507..0000000
--- a/node_modules/nanomatch/node_modules/is-extendable/index.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export = isExtendable;
-
-declare function isExtendable(val: any): boolean;
-
-declare namespace isExtendable {}
diff --git a/node_modules/nanomatch/node_modules/is-extendable/index.js b/node_modules/nanomatch/node_modules/is-extendable/index.js
deleted file mode 100644
index a8b26ad..0000000
--- a/node_modules/nanomatch/node_modules/is-extendable/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*!
- * is-extendable
- *
- * Copyright (c) 2015-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-var isPlainObject = require('is-plain-object');
-
-module.exports = function isExtendable(val) {
- return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);
-};
diff --git a/node_modules/nanomatch/node_modules/is-extendable/package.json b/node_modules/nanomatch/node_modules/is-extendable/package.json
deleted file mode 100644
index 2aaab65..0000000
--- a/node_modules/nanomatch/node_modules/is-extendable/package.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "name": "is-extendable",
- "description": "Returns true if a value is a plain object, array or function.",
- "version": "1.0.1",
- "homepage": "https://github.com/jonschlinkert/is-extendable",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/is-extendable",
- "bugs": {
- "url": "https://github.com/jonschlinkert/is-extendable/issues"
- },
- "license": "MIT",
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "main": "index.js",
- "types": "index.d.ts",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "devDependencies": {
- "gulp-format-md": "^1.0.0",
- "mocha": "^3.4.2"
- },
- "keywords": [
- "array",
- "assign",
- "check",
- "date",
- "extend",
- "extendable",
- "extensible",
- "function",
- "is",
- "object",
- "regex",
- "test"
- ],
- "verb": {
- "related": {
- "list": [
- "assign-deep",
- "is-equal-shallow",
- "is-plain-object",
- "isobject",
- "kind-of"
- ]
- },
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/nanomatch/node_modules/kind-of/CHANGELOG.md b/node_modules/nanomatch/node_modules/kind-of/CHANGELOG.md
deleted file mode 100644
index 01687d5..0000000
--- a/node_modules/nanomatch/node_modules/kind-of/CHANGELOG.md
+++ /dev/null
@@ -1,160 +0,0 @@
-# Release history
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
-
-
- Guiding Principles
-
-- Changelogs are for humans, not machines.
-- There should be an entry for every single version.
-- The same types of changes should be grouped.
-- Versions and sections should be linkable.
-- The latest version comes first.
-- The release date of each versions is displayed.
-- Mention whether you follow Semantic Versioning.
-
-
-
-
- Types of changes
-
-Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_):
-
-- `Added` for new features.
-- `Changed` for changes in existing functionality.
-- `Deprecated` for soon-to-be removed features.
-- `Removed` for now removed features.
-- `Fixed` for any bug fixes.
-- `Security` in case of vulnerabilities.
-
-
-
-## [6.0.3] - 2020-01-16
-
-- Merge pull request #31 for issue #30
-
-## [6.0.0] - 2017-10-13
-
-- refactor code to be more performant
-- refactor benchmarks
-
-## [5.1.0] - 2017-10-13
-
-**Added**
-
-- Merge pull request #15 from aretecode/patch-1
-- adds support and tests for string & array iterators
-
-**Changed**
-
-- updates benchmarks
-
-## [5.0.2] - 2017-08-02
-
-- Merge pull request #14 from struct78/master
-- Added `undefined` check
-
-## [5.0.0] - 2017-06-21
-
-- Merge pull request #12 from aretecode/iterator
-- Set Iterator + Map Iterator
-- streamline `isbuffer`, minor edits
-
-## [4.0.0] - 2017-05-19
-
-- Merge pull request #8 from tunnckoCore/master
-- update deps
-
-## [3.2.2] - 2017-05-16
-
-- fix version
-
-## [3.2.1] - 2017-05-16
-
-- add browserify
-
-## [3.2.0] - 2017-04-25
-
-- Merge pull request #10 from ksheedlo/unrequire-buffer
-- add `promise` support and tests
-- Remove unnecessary `Buffer` check
-
-## [3.1.0] - 2016-12-07
-
-- Merge pull request #7 from laggingreflex/err
-- add support for `error` and tests
-- run update
-
-## [3.0.4] - 2016-07-29
-
-- move tests
-- run update
-
-## [3.0.3] - 2016-05-03
-
-- fix prepublish script
-- remove unused dep
-
-## [3.0.0] - 2015-11-17
-
-- add typed array support
-- Merge pull request #5 from miguelmota/typed-arrays
-- adds new tests
-
-## [2.0.1] - 2015-08-21
-
-- use `is-buffer` module
-
-## [2.0.0] - 2015-05-31
-
-- Create fallback for `Array.isArray` if used as a browser package
-- Merge pull request #2 from dtothefp/patch-1
-- Merge pull request #3 from pdehaan/patch-1
-- Merge branch 'master' of https://github.com/chorks/kind-of into chorks-master
-- optimizations, mostly date and regex
-
-## [1.1.0] - 2015-02-09
-
-- adds `buffer` support
-- adds tests for `buffer`
-
-## [1.0.0] - 2015-01-19
-
-- update benchmarks
-- optimizations based on benchmarks
-
-## [0.1.2] - 2014-10-26
-
-- return `typeof` value if it's not an object. very slight speed improvement
-- use `.slice`
-- adds benchmarks
-
-## [0.1.0] - 2014-9-26
-
-- first commit
-
-[6.0.0]: https://github.com/jonschlinkert/kind-of/compare/5.1.0...6.0.0
-[5.1.0]: https://github.com/jonschlinkert/kind-of/compare/5.0.2...5.1.0
-[5.0.2]: https://github.com/jonschlinkert/kind-of/compare/5.0.1...5.0.2
-[5.0.1]: https://github.com/jonschlinkert/kind-of/compare/5.0.0...5.0.1
-[5.0.0]: https://github.com/jonschlinkert/kind-of/compare/4.0.0...5.0.0
-[4.0.0]: https://github.com/jonschlinkert/kind-of/compare/3.2.2...4.0.0
-[3.2.2]: https://github.com/jonschlinkert/kind-of/compare/3.2.1...3.2.2
-[3.2.1]: https://github.com/jonschlinkert/kind-of/compare/3.2.0...3.2.1
-[3.2.0]: https://github.com/jonschlinkert/kind-of/compare/3.1.0...3.2.0
-[3.1.0]: https://github.com/jonschlinkert/kind-of/compare/3.0.4...3.1.0
-[3.0.4]: https://github.com/jonschlinkert/kind-of/compare/3.0.3...3.0.4
-[3.0.3]: https://github.com/jonschlinkert/kind-of/compare/3.0.0...3.0.3
-[3.0.0]: https://github.com/jonschlinkert/kind-of/compare/2.0.1...3.0.0
-[2.0.1]: https://github.com/jonschlinkert/kind-of/compare/2.0.0...2.0.1
-[2.0.0]: https://github.com/jonschlinkert/kind-of/compare/1.1.0...2.0.0
-[1.1.0]: https://github.com/jonschlinkert/kind-of/compare/1.0.0...1.1.0
-[1.0.0]: https://github.com/jonschlinkert/kind-of/compare/0.1.2...1.0.0
-[0.1.2]: https://github.com/jonschlinkert/kind-of/compare/0.1.0...0.1.2
-[0.1.0]: https://github.com/jonschlinkert/kind-of/commit/2fae09b0b19b1aadb558e9be39f0c3ef6034eb87
-
-[Unreleased]: https://github.com/jonschlinkert/kind-of/compare/0.1.2...HEAD
-[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog
\ No newline at end of file
diff --git a/node_modules/nanomatch/node_modules/kind-of/LICENSE b/node_modules/nanomatch/node_modules/kind-of/LICENSE
deleted file mode 100644
index 3f2eca1..0000000
--- a/node_modules/nanomatch/node_modules/kind-of/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/nanomatch/node_modules/kind-of/README.md b/node_modules/nanomatch/node_modules/kind-of/README.md
deleted file mode 100644
index 0411dc5..0000000
--- a/node_modules/nanomatch/node_modules/kind-of/README.md
+++ /dev/null
@@ -1,367 +0,0 @@
-# kind-of [](https://www.npmjs.com/package/kind-of) [](https://npmjs.org/package/kind-of) [](https://npmjs.org/package/kind-of) [](https://travis-ci.org/jonschlinkert/kind-of)
-
-> Get the native type of a value.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save kind-of
-```
-
-Install with [bower](https://bower.io/)
-
-```sh
-$ bower install kind-of --save
-```
-
-## Why use this?
-
-1. [it's fast](#benchmarks) | [optimizations](#optimizations)
-2. [better type checking](#better-type-checking)
-
-## Usage
-
-> es5, es6, and browser ready
-
-```js
-var kindOf = require('kind-of');
-
-kindOf(undefined);
-//=> 'undefined'
-
-kindOf(null);
-//=> 'null'
-
-kindOf(true);
-//=> 'boolean'
-
-kindOf(false);
-//=> 'boolean'
-
-kindOf(new Buffer(''));
-//=> 'buffer'
-
-kindOf(42);
-//=> 'number'
-
-kindOf('str');
-//=> 'string'
-
-kindOf(arguments);
-//=> 'arguments'
-
-kindOf({});
-//=> 'object'
-
-kindOf(Object.create(null));
-//=> 'object'
-
-kindOf(new Test());
-//=> 'object'
-
-kindOf(new Date());
-//=> 'date'
-
-kindOf([1, 2, 3]);
-//=> 'array'
-
-kindOf(/foo/);
-//=> 'regexp'
-
-kindOf(new RegExp('foo'));
-//=> 'regexp'
-
-kindOf(new Error('error'));
-//=> 'error'
-
-kindOf(function () {});
-//=> 'function'
-
-kindOf(function * () {});
-//=> 'generatorfunction'
-
-kindOf(Symbol('str'));
-//=> 'symbol'
-
-kindOf(new Map());
-//=> 'map'
-
-kindOf(new WeakMap());
-//=> 'weakmap'
-
-kindOf(new Set());
-//=> 'set'
-
-kindOf(new WeakSet());
-//=> 'weakset'
-
-kindOf(new Int8Array());
-//=> 'int8array'
-
-kindOf(new Uint8Array());
-//=> 'uint8array'
-
-kindOf(new Uint8ClampedArray());
-//=> 'uint8clampedarray'
-
-kindOf(new Int16Array());
-//=> 'int16array'
-
-kindOf(new Uint16Array());
-//=> 'uint16array'
-
-kindOf(new Int32Array());
-//=> 'int32array'
-
-kindOf(new Uint32Array());
-//=> 'uint32array'
-
-kindOf(new Float32Array());
-//=> 'float32array'
-
-kindOf(new Float64Array());
-//=> 'float64array'
-```
-
-## Benchmarks
-
-Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of).
-
-```bash
-# arguments (32 bytes)
- kind-of x 17,024,098 ops/sec ±1.90% (86 runs sampled)
- lib-type-of x 11,926,235 ops/sec ±1.34% (83 runs sampled)
- lib-typeof x 9,245,257 ops/sec ±1.22% (87 runs sampled)
-
- fastest is kind-of (by 161% avg)
-
-# array (22 bytes)
- kind-of x 17,196,492 ops/sec ±1.07% (88 runs sampled)
- lib-type-of x 8,838,283 ops/sec ±1.02% (87 runs sampled)
- lib-typeof x 8,677,848 ops/sec ±0.87% (87 runs sampled)
-
- fastest is kind-of (by 196% avg)
-
-# boolean (24 bytes)
- kind-of x 16,841,600 ops/sec ±1.10% (86 runs sampled)
- lib-type-of x 8,096,787 ops/sec ±0.95% (87 runs sampled)
- lib-typeof x 8,423,345 ops/sec ±1.15% (86 runs sampled)
-
- fastest is kind-of (by 204% avg)
-
-# buffer (38 bytes)
- kind-of x 14,848,060 ops/sec ±1.05% (86 runs sampled)
- lib-type-of x 3,671,577 ops/sec ±1.49% (87 runs sampled)
- lib-typeof x 8,360,236 ops/sec ±1.24% (86 runs sampled)
-
- fastest is kind-of (by 247% avg)
-
-# date (30 bytes)
- kind-of x 16,067,761 ops/sec ±1.58% (86 runs sampled)
- lib-type-of x 8,954,436 ops/sec ±1.40% (87 runs sampled)
- lib-typeof x 8,488,307 ops/sec ±1.51% (84 runs sampled)
-
- fastest is kind-of (by 184% avg)
-
-# error (36 bytes)
- kind-of x 9,634,090 ops/sec ±1.12% (89 runs sampled)
- lib-type-of x 7,735,624 ops/sec ±1.32% (86 runs sampled)
- lib-typeof x 7,442,160 ops/sec ±1.11% (90 runs sampled)
-
- fastest is kind-of (by 127% avg)
-
-# function (34 bytes)
- kind-of x 10,031,494 ops/sec ±1.27% (86 runs sampled)
- lib-type-of x 9,502,757 ops/sec ±1.17% (89 runs sampled)
- lib-typeof x 8,278,985 ops/sec ±1.08% (88 runs sampled)
-
- fastest is kind-of (by 113% avg)
-
-# null (24 bytes)
- kind-of x 18,159,808 ops/sec ±1.92% (86 runs sampled)
- lib-type-of x 12,927,635 ops/sec ±1.01% (88 runs sampled)
- lib-typeof x 7,958,234 ops/sec ±1.21% (89 runs sampled)
-
- fastest is kind-of (by 174% avg)
-
-# number (22 bytes)
- kind-of x 17,846,779 ops/sec ±0.91% (85 runs sampled)
- lib-type-of x 3,316,636 ops/sec ±1.19% (86 runs sampled)
- lib-typeof x 2,329,477 ops/sec ±2.21% (85 runs sampled)
-
- fastest is kind-of (by 632% avg)
-
-# object-plain (47 bytes)
- kind-of x 7,085,155 ops/sec ±1.05% (88 runs sampled)
- lib-type-of x 8,870,930 ops/sec ±1.06% (83 runs sampled)
- lib-typeof x 8,716,024 ops/sec ±1.05% (87 runs sampled)
-
- fastest is lib-type-of (by 112% avg)
-
-# regex (25 bytes)
- kind-of x 14,196,052 ops/sec ±1.65% (84 runs sampled)
- lib-type-of x 9,554,164 ops/sec ±1.25% (88 runs sampled)
- lib-typeof x 8,359,691 ops/sec ±1.07% (87 runs sampled)
-
- fastest is kind-of (by 158% avg)
-
-# string (33 bytes)
- kind-of x 16,131,428 ops/sec ±1.41% (85 runs sampled)
- lib-type-of x 7,273,172 ops/sec ±1.05% (87 runs sampled)
- lib-typeof x 7,382,635 ops/sec ±1.17% (85 runs sampled)
-
- fastest is kind-of (by 220% avg)
-
-# symbol (34 bytes)
- kind-of x 17,011,537 ops/sec ±1.24% (86 runs sampled)
- lib-type-of x 3,492,454 ops/sec ±1.23% (89 runs sampled)
- lib-typeof x 7,471,235 ops/sec ±2.48% (87 runs sampled)
-
- fastest is kind-of (by 310% avg)
-
-# template-strings (36 bytes)
- kind-of x 15,434,250 ops/sec ±1.46% (83 runs sampled)
- lib-type-of x 7,157,907 ops/sec ±0.97% (87 runs sampled)
- lib-typeof x 7,517,986 ops/sec ±0.92% (86 runs sampled)
-
- fastest is kind-of (by 210% avg)
-
-# undefined (29 bytes)
- kind-of x 19,167,115 ops/sec ±1.71% (87 runs sampled)
- lib-type-of x 15,477,740 ops/sec ±1.63% (85 runs sampled)
- lib-typeof x 19,075,495 ops/sec ±1.17% (83 runs sampled)
-
- fastest is lib-typeof,kind-of
-
-```
-
-## Optimizations
-
-In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library:
-
-1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot.
-2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it.
-3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'`
-4. There is no reason to make the code in a microlib as terse as possible, just to win points for making it shorter. It's always better to favor performant code over terse code. You will always only be using a single `require()` statement to use the library anyway, regardless of how the code is written.
-
-## Better type checking
-
-kind-of seems to be more consistently "correct" than other type checking libs I've looked at. For example, here are some differing results from other popular libs:
-
-### [typeof](https://github.com/CodingFu/typeof) lib
-
-Incorrectly identifies instances of custom constructors (pretty common):
-
-```js
-var typeOf = require('typeof');
-function Test() {}
-console.log(typeOf(new Test()));
-//=> 'test'
-```
-
-Returns `object` instead of `arguments`:
-
-```js
-function foo() {
- console.log(typeOf(arguments)) //=> 'object'
-}
-foo();
-```
-
-### [type-of](https://github.com/ForbesLindesay/type-of) lib
-
-Incorrectly returns `object` for generator functions, buffers, `Map`, `Set`, `WeakMap` and `WeakSet`:
-
-```js
-function * foo() {}
-console.log(typeOf(foo));
-//=> 'object'
-console.log(typeOf(new Buffer('')));
-//=> 'object'
-console.log(typeOf(new Map()));
-//=> 'object'
-console.log(typeOf(new Set()));
-//=> 'object'
-console.log(typeOf(new WeakMap()));
-//=> 'object'
-console.log(typeOf(new WeakSet()));
-//=> 'object'
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/micromatch/is-glob) | [homepage](https://github.com/micromatch/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet")
-* [is-number](https://www.npmjs.com/package/is-number): Returns true if a number or string value is a finite number. Useful for regex… [more](https://github.com/jonschlinkert/is-number) | [homepage](https://github.com/jonschlinkert/is-number "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.")
-* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 102 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 3 | [aretecode](https://github.com/aretecode) |
-| 2 | [miguelmota](https://github.com/miguelmota) |
-| 1 | [doowb](https://github.com/doowb) |
-| 1 | [dtothefp](https://github.com/dtothefp) |
-| 1 | [ianstormtaylor](https://github.com/ianstormtaylor) |
-| 1 | [ksheedlo](https://github.com/ksheedlo) |
-| 1 | [pdehaan](https://github.com/pdehaan) |
-| 1 | [laggingreflex](https://github.com/laggingreflex) |
-| 1 | [tunnckoCore](https://github.com/tunnckoCore) |
-| 1 | [xiaofen9](https://github.com/xiaofen9) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2020, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on January 16, 2020._
\ No newline at end of file
diff --git a/node_modules/nanomatch/node_modules/kind-of/index.js b/node_modules/nanomatch/node_modules/kind-of/index.js
deleted file mode 100644
index dfa799b..0000000
--- a/node_modules/nanomatch/node_modules/kind-of/index.js
+++ /dev/null
@@ -1,129 +0,0 @@
-var toString = Object.prototype.toString;
-
-module.exports = function kindOf(val) {
- if (val === void 0) return 'undefined';
- if (val === null) return 'null';
-
- var type = typeof val;
- if (type === 'boolean') return 'boolean';
- if (type === 'string') return 'string';
- if (type === 'number') return 'number';
- if (type === 'symbol') return 'symbol';
- if (type === 'function') {
- return isGeneratorFn(val) ? 'generatorfunction' : 'function';
- }
-
- if (isArray(val)) return 'array';
- if (isBuffer(val)) return 'buffer';
- if (isArguments(val)) return 'arguments';
- if (isDate(val)) return 'date';
- if (isError(val)) return 'error';
- if (isRegexp(val)) return 'regexp';
-
- switch (ctorName(val)) {
- case 'Symbol': return 'symbol';
- case 'Promise': return 'promise';
-
- // Set, Map, WeakSet, WeakMap
- case 'WeakMap': return 'weakmap';
- case 'WeakSet': return 'weakset';
- case 'Map': return 'map';
- case 'Set': return 'set';
-
- // 8-bit typed arrays
- case 'Int8Array': return 'int8array';
- case 'Uint8Array': return 'uint8array';
- case 'Uint8ClampedArray': return 'uint8clampedarray';
-
- // 16-bit typed arrays
- case 'Int16Array': return 'int16array';
- case 'Uint16Array': return 'uint16array';
-
- // 32-bit typed arrays
- case 'Int32Array': return 'int32array';
- case 'Uint32Array': return 'uint32array';
- case 'Float32Array': return 'float32array';
- case 'Float64Array': return 'float64array';
- }
-
- if (isGeneratorObj(val)) {
- return 'generator';
- }
-
- // Non-plain objects
- type = toString.call(val);
- switch (type) {
- case '[object Object]': return 'object';
- // iterators
- case '[object Map Iterator]': return 'mapiterator';
- case '[object Set Iterator]': return 'setiterator';
- case '[object String Iterator]': return 'stringiterator';
- case '[object Array Iterator]': return 'arrayiterator';
- }
-
- // other
- return type.slice(8, -1).toLowerCase().replace(/\s/g, '');
-};
-
-function ctorName(val) {
- return typeof val.constructor === 'function' ? val.constructor.name : null;
-}
-
-function isArray(val) {
- if (Array.isArray) return Array.isArray(val);
- return val instanceof Array;
-}
-
-function isError(val) {
- return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');
-}
-
-function isDate(val) {
- if (val instanceof Date) return true;
- return typeof val.toDateString === 'function'
- && typeof val.getDate === 'function'
- && typeof val.setDate === 'function';
-}
-
-function isRegexp(val) {
- if (val instanceof RegExp) return true;
- return typeof val.flags === 'string'
- && typeof val.ignoreCase === 'boolean'
- && typeof val.multiline === 'boolean'
- && typeof val.global === 'boolean';
-}
-
-function isGeneratorFn(name, val) {
- return ctorName(name) === 'GeneratorFunction';
-}
-
-function isGeneratorObj(val) {
- return typeof val.throw === 'function'
- && typeof val.return === 'function'
- && typeof val.next === 'function';
-}
-
-function isArguments(val) {
- try {
- if (typeof val.length === 'number' && typeof val.callee === 'function') {
- return true;
- }
- } catch (err) {
- if (err.message.indexOf('callee') !== -1) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * If you need to support Safari 5-7 (8-10 yr-old browser),
- * take a look at https://github.com/feross/is-buffer
- */
-
-function isBuffer(val) {
- if (val.constructor && typeof val.constructor.isBuffer === 'function') {
- return val.constructor.isBuffer(val);
- }
- return false;
-}
diff --git a/node_modules/nanomatch/node_modules/kind-of/package.json b/node_modules/nanomatch/node_modules/kind-of/package.json
deleted file mode 100644
index 5820cad..0000000
--- a/node_modules/nanomatch/node_modules/kind-of/package.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
- "name": "kind-of",
- "description": "Get the native type of a value.",
- "version": "6.0.3",
- "homepage": "https://github.com/jonschlinkert/kind-of",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "David Fox-Powell (https://dtothefp.github.io/me)",
- "James (https://twitter.com/aretecode)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Ken Sheedlo (kensheedlo.com)",
- "laggingreflex (https://github.com/laggingreflex)",
- "Miguel Mota (https://miguelmota.com)",
- "Peter deHaan (http://about.me/peterdehaan)",
- "tunnckoCore (https://i.am.charlike.online)"
- ],
- "repository": "jonschlinkert/kind-of",
- "bugs": {
- "url": "https://github.com/jonschlinkert/kind-of/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha",
- "prepublish": "browserify -o browser.js -e index.js -s index --bare"
- },
- "devDependencies": {
- "benchmarked": "^2.0.0",
- "browserify": "^14.4.0",
- "gulp-format-md": "^1.0.0",
- "mocha": "^4.0.1",
- "write": "^1.0.3"
- },
- "keywords": [
- "arguments",
- "array",
- "boolean",
- "check",
- "date",
- "function",
- "is",
- "is-type",
- "is-type-of",
- "kind",
- "kind-of",
- "number",
- "object",
- "of",
- "regexp",
- "string",
- "test",
- "type",
- "type-of",
- "typeof",
- "types"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- },
- "related": {
- "list": [
- "is-glob",
- "is-number",
- "is-primitive"
- ]
- },
- "reflinks": [
- "type-of",
- "typeof",
- "verb"
- ]
- }
-}
diff --git a/node_modules/nanomatch/package.json b/node_modules/nanomatch/package.json
deleted file mode 100644
index 0a85f0a..0000000
--- a/node_modules/nanomatch/package.json
+++ /dev/null
@@ -1,134 +0,0 @@
-{
- "name": "nanomatch",
- "description": "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)",
- "version": "1.2.13",
- "homepage": "https://github.com/micromatch/nanomatch",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Devon Govett (http://badassjs.com)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)"
- ],
- "repository": "micromatch/nanomatch",
- "bugs": {
- "url": "https://github.com/micromatch/nanomatch/issues"
- },
- "license": "MIT",
- "files": [
- "index.js",
- "lib"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "devDependencies": {
- "bash-match": "^1.0.2",
- "for-own": "^1.0.0",
- "gulp": "^3.9.1",
- "gulp-format-md": "^1.0.0",
- "gulp-istanbul": "^1.1.3",
- "gulp-mocha": "^5.0.0",
- "helper-changelog": "^0.3.0",
- "minimatch": "^3.0.4",
- "minimist": "^1.2.0",
- "mocha": "^3.5.3",
- "multimatch": "^2.1.0"
- },
- "keywords": [
- "bash",
- "expand",
- "expansion",
- "expression",
- "file",
- "files",
- "filter",
- "find",
- "glob",
- "globbing",
- "globs",
- "globstar",
- "match",
- "matcher",
- "matches",
- "matching",
- "micromatch",
- "minimatch",
- "multimatch",
- "nanomatch",
- "path",
- "pattern",
- "patterns",
- "regex",
- "regexp",
- "regular",
- "shell",
- "wildcard"
- ],
- "lintDeps": {
- "dependencies": {
- "options": {
- "lock": {
- "snapdragon": "^0.8.1"
- }
- }
- },
- "devDependencies": {
- "files": {
- "options": {
- "ignore": [
- "benchmark/**"
- ]
- }
- }
- }
- },
- "verb": {
- "toc": "collapsible",
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "helpers": [
- "helper-changelog"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "extglob",
- "is-extglob",
- "is-glob",
- "micromatch"
- ]
- },
- "reflinks": [
- "expand-brackets",
- "expand-tilde",
- "glob-object",
- "micromatch",
- "minimatch",
- "options",
- "snapdragon"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/negotiator/HISTORY.md b/node_modules/negotiator/HISTORY.md
deleted file mode 100644
index a9a5449..0000000
--- a/node_modules/negotiator/HISTORY.md
+++ /dev/null
@@ -1,108 +0,0 @@
-0.6.3 / 2022-01-22
-==================
-
- * Revert "Lazy-load modules from main entry point"
-
-0.6.2 / 2019-04-29
-==================
-
- * Fix sorting charset, encoding, and language with extra parameters
-
-0.6.1 / 2016-05-02
-==================
-
- * perf: improve `Accept` parsing speed
- * perf: improve `Accept-Charset` parsing speed
- * perf: improve `Accept-Encoding` parsing speed
- * perf: improve `Accept-Language` parsing speed
-
-0.6.0 / 2015-09-29
-==================
-
- * Fix including type extensions in parameters in `Accept` parsing
- * Fix parsing `Accept` parameters with quoted equals
- * Fix parsing `Accept` parameters with quoted semicolons
- * Lazy-load modules from main entry point
- * perf: delay type concatenation until needed
- * perf: enable strict mode
- * perf: hoist regular expressions
- * perf: remove closures getting spec properties
- * perf: remove a closure from media type parsing
- * perf: remove property delete from media type parsing
-
-0.5.3 / 2015-05-10
-==================
-
- * Fix media type parameter matching to be case-insensitive
-
-0.5.2 / 2015-05-06
-==================
-
- * Fix comparing media types with quoted values
- * Fix splitting media types with quoted commas
-
-0.5.1 / 2015-02-14
-==================
-
- * Fix preference sorting to be stable for long acceptable lists
-
-0.5.0 / 2014-12-18
-==================
-
- * Fix list return order when large accepted list
- * Fix missing identity encoding when q=0 exists
- * Remove dynamic building of Negotiator class
-
-0.4.9 / 2014-10-14
-==================
-
- * Fix error when media type has invalid parameter
-
-0.4.8 / 2014-09-28
-==================
-
- * Fix all negotiations to be case-insensitive
- * Stable sort preferences of same quality according to client order
- * Support Node.js 0.6
-
-0.4.7 / 2014-06-24
-==================
-
- * Handle invalid provided languages
- * Handle invalid provided media types
-
-0.4.6 / 2014-06-11
-==================
-
- * Order by specificity when quality is the same
-
-0.4.5 / 2014-05-29
-==================
-
- * Fix regression in empty header handling
-
-0.4.4 / 2014-05-29
-==================
-
- * Fix behaviors when headers are not present
-
-0.4.3 / 2014-04-16
-==================
-
- * Handle slashes on media params correctly
-
-0.4.2 / 2014-02-28
-==================
-
- * Fix media type sorting
- * Handle media types params strictly
-
-0.4.1 / 2014-01-16
-==================
-
- * Use most specific matches
-
-0.4.0 / 2014-01-09
-==================
-
- * Remove preferred prefix from methods
diff --git a/node_modules/negotiator/LICENSE b/node_modules/negotiator/LICENSE
deleted file mode 100644
index ea6b9e2..0000000
--- a/node_modules/negotiator/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2012-2014 Federico Romero
-Copyright (c) 2012-2014 Isaac Z. Schlueter
-Copyright (c) 2014-2015 Douglas Christopher Wilson
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/negotiator/README.md b/node_modules/negotiator/README.md
deleted file mode 100644
index 82915e5..0000000
--- a/node_modules/negotiator/README.md
+++ /dev/null
@@ -1,203 +0,0 @@
-# negotiator
-
-[![NPM Version][npm-image]][npm-url]
-[![NPM Downloads][downloads-image]][downloads-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][github-actions-ci-image]][github-actions-ci-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-An HTTP content negotiator for Node.js
-
-## Installation
-
-```sh
-$ npm install negotiator
-```
-
-## API
-
-```js
-var Negotiator = require('negotiator')
-```
-
-### Accept Negotiation
-
-```js
-availableMediaTypes = ['text/html', 'text/plain', 'application/json']
-
-// The negotiator constructor receives a request object
-negotiator = new Negotiator(request)
-
-// Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8'
-
-negotiator.mediaTypes()
-// -> ['text/html', 'image/jpeg', 'application/*']
-
-negotiator.mediaTypes(availableMediaTypes)
-// -> ['text/html', 'application/json']
-
-negotiator.mediaType(availableMediaTypes)
-// -> 'text/html'
-```
-
-You can check a working example at `examples/accept.js`.
-
-#### Methods
-
-##### mediaType()
-
-Returns the most preferred media type from the client.
-
-##### mediaType(availableMediaType)
-
-Returns the most preferred media type from a list of available media types.
-
-##### mediaTypes()
-
-Returns an array of preferred media types ordered by the client preference.
-
-##### mediaTypes(availableMediaTypes)
-
-Returns an array of preferred media types ordered by priority from a list of
-available media types.
-
-### Accept-Language Negotiation
-
-```js
-negotiator = new Negotiator(request)
-
-availableLanguages = ['en', 'es', 'fr']
-
-// Let's say Accept-Language header is 'en;q=0.8, es, pt'
-
-negotiator.languages()
-// -> ['es', 'pt', 'en']
-
-negotiator.languages(availableLanguages)
-// -> ['es', 'en']
-
-language = negotiator.language(availableLanguages)
-// -> 'es'
-```
-
-You can check a working example at `examples/language.js`.
-
-#### Methods
-
-##### language()
-
-Returns the most preferred language from the client.
-
-##### language(availableLanguages)
-
-Returns the most preferred language from a list of available languages.
-
-##### languages()
-
-Returns an array of preferred languages ordered by the client preference.
-
-##### languages(availableLanguages)
-
-Returns an array of preferred languages ordered by priority from a list of
-available languages.
-
-### Accept-Charset Negotiation
-
-```js
-availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5']
-
-negotiator = new Negotiator(request)
-
-// Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2'
-
-negotiator.charsets()
-// -> ['utf-8', 'iso-8859-1', 'utf-7']
-
-negotiator.charsets(availableCharsets)
-// -> ['utf-8', 'iso-8859-1']
-
-negotiator.charset(availableCharsets)
-// -> 'utf-8'
-```
-
-You can check a working example at `examples/charset.js`.
-
-#### Methods
-
-##### charset()
-
-Returns the most preferred charset from the client.
-
-##### charset(availableCharsets)
-
-Returns the most preferred charset from a list of available charsets.
-
-##### charsets()
-
-Returns an array of preferred charsets ordered by the client preference.
-
-##### charsets(availableCharsets)
-
-Returns an array of preferred charsets ordered by priority from a list of
-available charsets.
-
-### Accept-Encoding Negotiation
-
-```js
-availableEncodings = ['identity', 'gzip']
-
-negotiator = new Negotiator(request)
-
-// Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5'
-
-negotiator.encodings()
-// -> ['gzip', 'identity', 'compress']
-
-negotiator.encodings(availableEncodings)
-// -> ['gzip', 'identity']
-
-negotiator.encoding(availableEncodings)
-// -> 'gzip'
-```
-
-You can check a working example at `examples/encoding.js`.
-
-#### Methods
-
-##### encoding()
-
-Returns the most preferred encoding from the client.
-
-##### encoding(availableEncodings)
-
-Returns the most preferred encoding from a list of available encodings.
-
-##### encodings()
-
-Returns an array of preferred encodings ordered by the client preference.
-
-##### encodings(availableEncodings)
-
-Returns an array of preferred encodings ordered by priority from a list of
-available encodings.
-
-## See Also
-
-The [accepts](https://npmjs.org/package/accepts#readme) module builds on
-this module and provides an alternative interface, mime type validation,
-and more.
-
-## License
-
-[MIT](LICENSE)
-
-[npm-image]: https://img.shields.io/npm/v/negotiator.svg
-[npm-url]: https://npmjs.org/package/negotiator
-[node-version-image]: https://img.shields.io/node/v/negotiator.svg
-[node-version-url]: https://nodejs.org/en/download/
-[coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator/master.svg
-[coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master
-[downloads-image]: https://img.shields.io/npm/dm/negotiator.svg
-[downloads-url]: https://npmjs.org/package/negotiator
-[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/negotiator/ci/master?label=ci
-[github-actions-ci-url]: https://github.com/jshttp/negotiator/actions/workflows/ci.yml
diff --git a/node_modules/negotiator/index.js b/node_modules/negotiator/index.js
deleted file mode 100644
index 4788264..0000000
--- a/node_modules/negotiator/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/*!
- * negotiator
- * Copyright(c) 2012 Federico Romero
- * Copyright(c) 2012-2014 Isaac Z. Schlueter
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict';
-
-var preferredCharsets = require('./lib/charset')
-var preferredEncodings = require('./lib/encoding')
-var preferredLanguages = require('./lib/language')
-var preferredMediaTypes = require('./lib/mediaType')
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = Negotiator;
-module.exports.Negotiator = Negotiator;
-
-/**
- * Create a Negotiator instance from a request.
- * @param {object} request
- * @public
- */
-
-function Negotiator(request) {
- if (!(this instanceof Negotiator)) {
- return new Negotiator(request);
- }
-
- this.request = request;
-}
-
-Negotiator.prototype.charset = function charset(available) {
- var set = this.charsets(available);
- return set && set[0];
-};
-
-Negotiator.prototype.charsets = function charsets(available) {
- return preferredCharsets(this.request.headers['accept-charset'], available);
-};
-
-Negotiator.prototype.encoding = function encoding(available) {
- var set = this.encodings(available);
- return set && set[0];
-};
-
-Negotiator.prototype.encodings = function encodings(available) {
- return preferredEncodings(this.request.headers['accept-encoding'], available);
-};
-
-Negotiator.prototype.language = function language(available) {
- var set = this.languages(available);
- return set && set[0];
-};
-
-Negotiator.prototype.languages = function languages(available) {
- return preferredLanguages(this.request.headers['accept-language'], available);
-};
-
-Negotiator.prototype.mediaType = function mediaType(available) {
- var set = this.mediaTypes(available);
- return set && set[0];
-};
-
-Negotiator.prototype.mediaTypes = function mediaTypes(available) {
- return preferredMediaTypes(this.request.headers.accept, available);
-};
-
-// Backwards compatibility
-Negotiator.prototype.preferredCharset = Negotiator.prototype.charset;
-Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;
-Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;
-Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;
-Negotiator.prototype.preferredLanguage = Negotiator.prototype.language;
-Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages;
-Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;
-Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;
diff --git a/node_modules/negotiator/lib/charset.js b/node_modules/negotiator/lib/charset.js
deleted file mode 100644
index cdd0148..0000000
--- a/node_modules/negotiator/lib/charset.js
+++ /dev/null
@@ -1,169 +0,0 @@
-/**
- * negotiator
- * Copyright(c) 2012 Isaac Z. Schlueter
- * Copyright(c) 2014 Federico Romero
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict';
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = preferredCharsets;
-module.exports.preferredCharsets = preferredCharsets;
-
-/**
- * Module variables.
- * @private
- */
-
-var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/;
-
-/**
- * Parse the Accept-Charset header.
- * @private
- */
-
-function parseAcceptCharset(accept) {
- var accepts = accept.split(',');
-
- for (var i = 0, j = 0; i < accepts.length; i++) {
- var charset = parseCharset(accepts[i].trim(), i);
-
- if (charset) {
- accepts[j++] = charset;
- }
- }
-
- // trim accepts
- accepts.length = j;
-
- return accepts;
-}
-
-/**
- * Parse a charset from the Accept-Charset header.
- * @private
- */
-
-function parseCharset(str, i) {
- var match = simpleCharsetRegExp.exec(str);
- if (!match) return null;
-
- var charset = match[1];
- var q = 1;
- if (match[2]) {
- var params = match[2].split(';')
- for (var j = 0; j < params.length; j++) {
- var p = params[j].trim().split('=');
- if (p[0] === 'q') {
- q = parseFloat(p[1]);
- break;
- }
- }
- }
-
- return {
- charset: charset,
- q: q,
- i: i
- };
-}
-
-/**
- * Get the priority of a charset.
- * @private
- */
-
-function getCharsetPriority(charset, accepted, index) {
- var priority = {o: -1, q: 0, s: 0};
-
- for (var i = 0; i < accepted.length; i++) {
- var spec = specify(charset, accepted[i], index);
-
- if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
- priority = spec;
- }
- }
-
- return priority;
-}
-
-/**
- * Get the specificity of the charset.
- * @private
- */
-
-function specify(charset, spec, index) {
- var s = 0;
- if(spec.charset.toLowerCase() === charset.toLowerCase()){
- s |= 1;
- } else if (spec.charset !== '*' ) {
- return null
- }
-
- return {
- i: index,
- o: spec.i,
- q: spec.q,
- s: s
- }
-}
-
-/**
- * Get the preferred charsets from an Accept-Charset header.
- * @public
- */
-
-function preferredCharsets(accept, provided) {
- // RFC 2616 sec 14.2: no header = *
- var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');
-
- if (!provided) {
- // sorted list of all charsets
- return accepts
- .filter(isQuality)
- .sort(compareSpecs)
- .map(getFullCharset);
- }
-
- var priorities = provided.map(function getPriority(type, index) {
- return getCharsetPriority(type, accepts, index);
- });
-
- // sorted list of accepted charsets
- return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {
- return provided[priorities.indexOf(priority)];
- });
-}
-
-/**
- * Compare two specs.
- * @private
- */
-
-function compareSpecs(a, b) {
- return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
-}
-
-/**
- * Get full charset string.
- * @private
- */
-
-function getFullCharset(spec) {
- return spec.charset;
-}
-
-/**
- * Check if a spec has any quality.
- * @private
- */
-
-function isQuality(spec) {
- return spec.q > 0;
-}
diff --git a/node_modules/negotiator/lib/encoding.js b/node_modules/negotiator/lib/encoding.js
deleted file mode 100644
index 8432cd7..0000000
--- a/node_modules/negotiator/lib/encoding.js
+++ /dev/null
@@ -1,184 +0,0 @@
-/**
- * negotiator
- * Copyright(c) 2012 Isaac Z. Schlueter
- * Copyright(c) 2014 Federico Romero
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict';
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = preferredEncodings;
-module.exports.preferredEncodings = preferredEncodings;
-
-/**
- * Module variables.
- * @private
- */
-
-var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/;
-
-/**
- * Parse the Accept-Encoding header.
- * @private
- */
-
-function parseAcceptEncoding(accept) {
- var accepts = accept.split(',');
- var hasIdentity = false;
- var minQuality = 1;
-
- for (var i = 0, j = 0; i < accepts.length; i++) {
- var encoding = parseEncoding(accepts[i].trim(), i);
-
- if (encoding) {
- accepts[j++] = encoding;
- hasIdentity = hasIdentity || specify('identity', encoding);
- minQuality = Math.min(minQuality, encoding.q || 1);
- }
- }
-
- if (!hasIdentity) {
- /*
- * If identity doesn't explicitly appear in the accept-encoding header,
- * it's added to the list of acceptable encoding with the lowest q
- */
- accepts[j++] = {
- encoding: 'identity',
- q: minQuality,
- i: i
- };
- }
-
- // trim accepts
- accepts.length = j;
-
- return accepts;
-}
-
-/**
- * Parse an encoding from the Accept-Encoding header.
- * @private
- */
-
-function parseEncoding(str, i) {
- var match = simpleEncodingRegExp.exec(str);
- if (!match) return null;
-
- var encoding = match[1];
- var q = 1;
- if (match[2]) {
- var params = match[2].split(';');
- for (var j = 0; j < params.length; j++) {
- var p = params[j].trim().split('=');
- if (p[0] === 'q') {
- q = parseFloat(p[1]);
- break;
- }
- }
- }
-
- return {
- encoding: encoding,
- q: q,
- i: i
- };
-}
-
-/**
- * Get the priority of an encoding.
- * @private
- */
-
-function getEncodingPriority(encoding, accepted, index) {
- var priority = {o: -1, q: 0, s: 0};
-
- for (var i = 0; i < accepted.length; i++) {
- var spec = specify(encoding, accepted[i], index);
-
- if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
- priority = spec;
- }
- }
-
- return priority;
-}
-
-/**
- * Get the specificity of the encoding.
- * @private
- */
-
-function specify(encoding, spec, index) {
- var s = 0;
- if(spec.encoding.toLowerCase() === encoding.toLowerCase()){
- s |= 1;
- } else if (spec.encoding !== '*' ) {
- return null
- }
-
- return {
- i: index,
- o: spec.i,
- q: spec.q,
- s: s
- }
-};
-
-/**
- * Get the preferred encodings from an Accept-Encoding header.
- * @public
- */
-
-function preferredEncodings(accept, provided) {
- var accepts = parseAcceptEncoding(accept || '');
-
- if (!provided) {
- // sorted list of all encodings
- return accepts
- .filter(isQuality)
- .sort(compareSpecs)
- .map(getFullEncoding);
- }
-
- var priorities = provided.map(function getPriority(type, index) {
- return getEncodingPriority(type, accepts, index);
- });
-
- // sorted list of accepted encodings
- return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {
- return provided[priorities.indexOf(priority)];
- });
-}
-
-/**
- * Compare two specs.
- * @private
- */
-
-function compareSpecs(a, b) {
- return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
-}
-
-/**
- * Get full encoding string.
- * @private
- */
-
-function getFullEncoding(spec) {
- return spec.encoding;
-}
-
-/**
- * Check if a spec has any quality.
- * @private
- */
-
-function isQuality(spec) {
- return spec.q > 0;
-}
diff --git a/node_modules/negotiator/lib/language.js b/node_modules/negotiator/lib/language.js
deleted file mode 100644
index a231672..0000000
--- a/node_modules/negotiator/lib/language.js
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * negotiator
- * Copyright(c) 2012 Isaac Z. Schlueter
- * Copyright(c) 2014 Federico Romero
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict';
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = preferredLanguages;
-module.exports.preferredLanguages = preferredLanguages;
-
-/**
- * Module variables.
- * @private
- */
-
-var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;
-
-/**
- * Parse the Accept-Language header.
- * @private
- */
-
-function parseAcceptLanguage(accept) {
- var accepts = accept.split(',');
-
- for (var i = 0, j = 0; i < accepts.length; i++) {
- var language = parseLanguage(accepts[i].trim(), i);
-
- if (language) {
- accepts[j++] = language;
- }
- }
-
- // trim accepts
- accepts.length = j;
-
- return accepts;
-}
-
-/**
- * Parse a language from the Accept-Language header.
- * @private
- */
-
-function parseLanguage(str, i) {
- var match = simpleLanguageRegExp.exec(str);
- if (!match) return null;
-
- var prefix = match[1]
- var suffix = match[2]
- var full = prefix
-
- if (suffix) full += "-" + suffix;
-
- var q = 1;
- if (match[3]) {
- var params = match[3].split(';')
- for (var j = 0; j < params.length; j++) {
- var p = params[j].split('=');
- if (p[0] === 'q') q = parseFloat(p[1]);
- }
- }
-
- return {
- prefix: prefix,
- suffix: suffix,
- q: q,
- i: i,
- full: full
- };
-}
-
-/**
- * Get the priority of a language.
- * @private
- */
-
-function getLanguagePriority(language, accepted, index) {
- var priority = {o: -1, q: 0, s: 0};
-
- for (var i = 0; i < accepted.length; i++) {
- var spec = specify(language, accepted[i], index);
-
- if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
- priority = spec;
- }
- }
-
- return priority;
-}
-
-/**
- * Get the specificity of the language.
- * @private
- */
-
-function specify(language, spec, index) {
- var p = parseLanguage(language)
- if (!p) return null;
- var s = 0;
- if(spec.full.toLowerCase() === p.full.toLowerCase()){
- s |= 4;
- } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {
- s |= 2;
- } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {
- s |= 1;
- } else if (spec.full !== '*' ) {
- return null
- }
-
- return {
- i: index,
- o: spec.i,
- q: spec.q,
- s: s
- }
-};
-
-/**
- * Get the preferred languages from an Accept-Language header.
- * @public
- */
-
-function preferredLanguages(accept, provided) {
- // RFC 2616 sec 14.4: no header = *
- var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');
-
- if (!provided) {
- // sorted list of all languages
- return accepts
- .filter(isQuality)
- .sort(compareSpecs)
- .map(getFullLanguage);
- }
-
- var priorities = provided.map(function getPriority(type, index) {
- return getLanguagePriority(type, accepts, index);
- });
-
- // sorted list of accepted languages
- return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {
- return provided[priorities.indexOf(priority)];
- });
-}
-
-/**
- * Compare two specs.
- * @private
- */
-
-function compareSpecs(a, b) {
- return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
-}
-
-/**
- * Get full language string.
- * @private
- */
-
-function getFullLanguage(spec) {
- return spec.full;
-}
-
-/**
- * Check if a spec has any quality.
- * @private
- */
-
-function isQuality(spec) {
- return spec.q > 0;
-}
diff --git a/node_modules/negotiator/lib/mediaType.js b/node_modules/negotiator/lib/mediaType.js
deleted file mode 100644
index 67309dd..0000000
--- a/node_modules/negotiator/lib/mediaType.js
+++ /dev/null
@@ -1,294 +0,0 @@
-/**
- * negotiator
- * Copyright(c) 2012 Isaac Z. Schlueter
- * Copyright(c) 2014 Federico Romero
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict';
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = preferredMediaTypes;
-module.exports.preferredMediaTypes = preferredMediaTypes;
-
-/**
- * Module variables.
- * @private
- */
-
-var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;
-
-/**
- * Parse the Accept header.
- * @private
- */
-
-function parseAccept(accept) {
- var accepts = splitMediaTypes(accept);
-
- for (var i = 0, j = 0; i < accepts.length; i++) {
- var mediaType = parseMediaType(accepts[i].trim(), i);
-
- if (mediaType) {
- accepts[j++] = mediaType;
- }
- }
-
- // trim accepts
- accepts.length = j;
-
- return accepts;
-}
-
-/**
- * Parse a media type from the Accept header.
- * @private
- */
-
-function parseMediaType(str, i) {
- var match = simpleMediaTypeRegExp.exec(str);
- if (!match) return null;
-
- var params = Object.create(null);
- var q = 1;
- var subtype = match[2];
- var type = match[1];
-
- if (match[3]) {
- var kvps = splitParameters(match[3]).map(splitKeyValuePair);
-
- for (var j = 0; j < kvps.length; j++) {
- var pair = kvps[j];
- var key = pair[0].toLowerCase();
- var val = pair[1];
-
- // get the value, unwrapping quotes
- var value = val && val[0] === '"' && val[val.length - 1] === '"'
- ? val.substr(1, val.length - 2)
- : val;
-
- if (key === 'q') {
- q = parseFloat(value);
- break;
- }
-
- // store parameter
- params[key] = value;
- }
- }
-
- return {
- type: type,
- subtype: subtype,
- params: params,
- q: q,
- i: i
- };
-}
-
-/**
- * Get the priority of a media type.
- * @private
- */
-
-function getMediaTypePriority(type, accepted, index) {
- var priority = {o: -1, q: 0, s: 0};
-
- for (var i = 0; i < accepted.length; i++) {
- var spec = specify(type, accepted[i], index);
-
- if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
- priority = spec;
- }
- }
-
- return priority;
-}
-
-/**
- * Get the specificity of the media type.
- * @private
- */
-
-function specify(type, spec, index) {
- var p = parseMediaType(type);
- var s = 0;
-
- if (!p) {
- return null;
- }
-
- if(spec.type.toLowerCase() == p.type.toLowerCase()) {
- s |= 4
- } else if(spec.type != '*') {
- return null;
- }
-
- if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {
- s |= 2
- } else if(spec.subtype != '*') {
- return null;
- }
-
- var keys = Object.keys(spec.params);
- if (keys.length > 0) {
- if (keys.every(function (k) {
- return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();
- })) {
- s |= 1
- } else {
- return null
- }
- }
-
- return {
- i: index,
- o: spec.i,
- q: spec.q,
- s: s,
- }
-}
-
-/**
- * Get the preferred media types from an Accept header.
- * @public
- */
-
-function preferredMediaTypes(accept, provided) {
- // RFC 2616 sec 14.2: no header = */*
- var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');
-
- if (!provided) {
- // sorted list of all types
- return accepts
- .filter(isQuality)
- .sort(compareSpecs)
- .map(getFullType);
- }
-
- var priorities = provided.map(function getPriority(type, index) {
- return getMediaTypePriority(type, accepts, index);
- });
-
- // sorted list of accepted types
- return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {
- return provided[priorities.indexOf(priority)];
- });
-}
-
-/**
- * Compare two specs.
- * @private
- */
-
-function compareSpecs(a, b) {
- return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
-}
-
-/**
- * Get full type string.
- * @private
- */
-
-function getFullType(spec) {
- return spec.type + '/' + spec.subtype;
-}
-
-/**
- * Check if a spec has any quality.
- * @private
- */
-
-function isQuality(spec) {
- return spec.q > 0;
-}
-
-/**
- * Count the number of quotes in a string.
- * @private
- */
-
-function quoteCount(string) {
- var count = 0;
- var index = 0;
-
- while ((index = string.indexOf('"', index)) !== -1) {
- count++;
- index++;
- }
-
- return count;
-}
-
-/**
- * Split a key value pair.
- * @private
- */
-
-function splitKeyValuePair(str) {
- var index = str.indexOf('=');
- var key;
- var val;
-
- if (index === -1) {
- key = str;
- } else {
- key = str.substr(0, index);
- val = str.substr(index + 1);
- }
-
- return [key, val];
-}
-
-/**
- * Split an Accept header into media types.
- * @private
- */
-
-function splitMediaTypes(accept) {
- var accepts = accept.split(',');
-
- for (var i = 1, j = 0; i < accepts.length; i++) {
- if (quoteCount(accepts[j]) % 2 == 0) {
- accepts[++j] = accepts[i];
- } else {
- accepts[j] += ',' + accepts[i];
- }
- }
-
- // trim accepts
- accepts.length = j + 1;
-
- return accepts;
-}
-
-/**
- * Split a string of parameters.
- * @private
- */
-
-function splitParameters(str) {
- var parameters = str.split(';');
-
- for (var i = 1, j = 0; i < parameters.length; i++) {
- if (quoteCount(parameters[j]) % 2 == 0) {
- parameters[++j] = parameters[i];
- } else {
- parameters[j] += ';' + parameters[i];
- }
- }
-
- // trim parameters
- parameters.length = j + 1;
-
- for (var i = 0; i < parameters.length; i++) {
- parameters[i] = parameters[i].trim();
- }
-
- return parameters;
-}
diff --git a/node_modules/negotiator/package.json b/node_modules/negotiator/package.json
deleted file mode 100644
index 297635f..0000000
--- a/node_modules/negotiator/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "negotiator",
- "description": "HTTP content negotiation",
- "version": "0.6.3",
- "contributors": [
- "Douglas Christopher Wilson ",
- "Federico Romero ",
- "Isaac Z. Schlueter (http://blog.izs.me/)"
- ],
- "license": "MIT",
- "keywords": [
- "http",
- "content negotiation",
- "accept",
- "accept-language",
- "accept-encoding",
- "accept-charset"
- ],
- "repository": "jshttp/negotiator",
- "devDependencies": {
- "eslint": "7.32.0",
- "eslint-plugin-markdown": "2.2.1",
- "mocha": "9.1.3",
- "nyc": "15.1.0"
- },
- "files": [
- "lib/",
- "HISTORY.md",
- "LICENSE",
- "index.js",
- "README.md"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "lint": "eslint .",
- "test": "mocha --reporter spec --check-leaks --bail test/",
- "test-ci": "nyc --reporter=lcov --reporter=text npm test",
- "test-cov": "nyc --reporter=html --reporter=text npm test"
- }
-}
diff --git a/node_modules/normalize-path/LICENSE b/node_modules/normalize-path/LICENSE
deleted file mode 100644
index d32ab44..0000000
--- a/node_modules/normalize-path/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2018, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/normalize-path/README.md b/node_modules/normalize-path/README.md
deleted file mode 100644
index 726d4d6..0000000
--- a/node_modules/normalize-path/README.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# normalize-path [](https://www.npmjs.com/package/normalize-path) [](https://npmjs.org/package/normalize-path) [](https://npmjs.org/package/normalize-path) [](https://travis-ci.org/jonschlinkert/normalize-path)
-
-> Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save normalize-path
-```
-
-## Usage
-
-```js
-const normalize = require('normalize-path');
-
-console.log(normalize('\\foo\\bar\\baz\\'));
-//=> '/foo/bar/baz'
-```
-
-**win32 namespaces**
-
-```js
-console.log(normalize('\\\\?\\UNC\\Server01\\user\\docs\\Letter.txt'));
-//=> '//?/UNC/Server01/user/docs/Letter.txt'
-
-console.log(normalize('\\\\.\\CdRomX'));
-//=> '//./CdRomX'
-```
-
-**Consecutive slashes**
-
-Condenses multiple consecutive forward slashes (except for leading slashes in win32 namespaces) to a single slash.
-
-```js
-console.log(normalize('.//foo//bar///////baz/'));
-//=> './foo/bar/baz'
-```
-
-### Trailing slashes
-
-By default trailing slashes are removed. Pass `false` as the last argument to disable this behavior and _**keep** trailing slashes_:
-
-```js
-console.log(normalize('foo\\bar\\baz\\', false)); //=> 'foo/bar/baz/'
-console.log(normalize('./foo/bar/baz/', false)); //=> './foo/bar/baz/'
-```
-
-## Release history
-
-### v3.0
-
-No breaking changes in this release.
-
-* a check was added to ensure that [win32 namespaces](https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces) are handled properly by win32 `path.parse()` after a path has been normalized by this library.
-* a minor optimization was made to simplify how the trailing separator was handled
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-Other useful path-related libraries:
-
-* [contains-path](https://www.npmjs.com/package/contains-path): Return true if a file path contains the given path. | [homepage](https://github.com/jonschlinkert/contains-path "Return true if a file path contains the given path.")
-* [is-absolute](https://www.npmjs.com/package/is-absolute): Returns true if a file path is absolute. Does not rely on the path module… [more](https://github.com/jonschlinkert/is-absolute) | [homepage](https://github.com/jonschlinkert/is-absolute "Returns true if a file path is absolute. Does not rely on the path module and can be used as a polyfill for node.js native `path.isAbolute`.")
-* [is-relative](https://www.npmjs.com/package/is-relative): Returns `true` if the path appears to be relative. | [homepage](https://github.com/jonschlinkert/is-relative "Returns `true` if the path appears to be relative.")
-* [parse-filepath](https://www.npmjs.com/package/parse-filepath): Pollyfill for node.js `path.parse`, parses a filepath into an object. | [homepage](https://github.com/jonschlinkert/parse-filepath "Pollyfill for node.js `path.parse`, parses a filepath into an object.")
-* [path-ends-with](https://www.npmjs.com/package/path-ends-with): Return `true` if a file path ends with the given string/suffix. | [homepage](https://github.com/jonschlinkert/path-ends-with "Return `true` if a file path ends with the given string/suffix.")
-* [unixify](https://www.npmjs.com/package/unixify): Convert Windows file paths to unix paths. | [homepage](https://github.com/jonschlinkert/unixify "Convert Windows file paths to unix paths.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 35 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [phated](https://github.com/phated) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on April 19, 2018._
\ No newline at end of file
diff --git a/node_modules/normalize-path/index.js b/node_modules/normalize-path/index.js
deleted file mode 100644
index 6fac553..0000000
--- a/node_modules/normalize-path/index.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*!
- * normalize-path
- *
- * Copyright (c) 2014-2018, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-module.exports = function(path, stripTrailing) {
- if (typeof path !== 'string') {
- throw new TypeError('expected path to be a string');
- }
-
- if (path === '\\' || path === '/') return '/';
-
- var len = path.length;
- if (len <= 1) return path;
-
- // ensure that win32 namespaces has two leading slashes, so that the path is
- // handled properly by the win32 version of path.parse() after being normalized
- // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces
- var prefix = '';
- if (len > 4 && path[3] === '\\') {
- var ch = path[2];
- if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') {
- path = path.slice(2);
- prefix = '//';
- }
- }
-
- var segs = path.split(/[/\\]+/);
- if (stripTrailing !== false && segs[segs.length - 1] === '') {
- segs.pop();
- }
- return prefix + segs.join('/');
-};
diff --git a/node_modules/normalize-path/package.json b/node_modules/normalize-path/package.json
deleted file mode 100644
index ad61098..0000000
--- a/node_modules/normalize-path/package.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "name": "normalize-path",
- "description": "Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled.",
- "version": "3.0.0",
- "homepage": "https://github.com/jonschlinkert/normalize-path",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Blaine Bublitz (https://twitter.com/BlaineBublitz)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)"
- ],
- "repository": "jonschlinkert/normalize-path",
- "bugs": {
- "url": "https://github.com/jonschlinkert/normalize-path/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "gulp-format-md": "^1.0.0",
- "minimist": "^1.2.0",
- "mocha": "^3.5.3"
- },
- "keywords": [
- "absolute",
- "backslash",
- "delimiter",
- "file",
- "file-path",
- "filepath",
- "fix",
- "forward",
- "fp",
- "fs",
- "normalize",
- "path",
- "relative",
- "separator",
- "slash",
- "slashes",
- "trailing",
- "unix",
- "urix"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "description": "Other useful path-related libraries:",
- "list": [
- "contains-path",
- "is-absolute",
- "is-relative",
- "parse-filepath",
- "path-ends-with",
- "path-ends-with",
- "unixify"
- ]
- },
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/object-assign/index.js b/node_modules/object-assign/index.js
deleted file mode 100644
index 0930cf8..0000000
--- a/node_modules/object-assign/index.js
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-object-assign
-(c) Sindre Sorhus
-@license MIT
-*/
-
-'use strict';
-/* eslint-disable no-unused-vars */
-var getOwnPropertySymbols = Object.getOwnPropertySymbols;
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-var propIsEnumerable = Object.prototype.propertyIsEnumerable;
-
-function toObject(val) {
- if (val === null || val === undefined) {
- throw new TypeError('Object.assign cannot be called with null or undefined');
- }
-
- return Object(val);
-}
-
-function shouldUseNative() {
- try {
- if (!Object.assign) {
- return false;
- }
-
- // Detect buggy property enumeration order in older V8 versions.
-
- // https://bugs.chromium.org/p/v8/issues/detail?id=4118
- var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
- test1[5] = 'de';
- if (Object.getOwnPropertyNames(test1)[0] === '5') {
- return false;
- }
-
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
- var test2 = {};
- for (var i = 0; i < 10; i++) {
- test2['_' + String.fromCharCode(i)] = i;
- }
- var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
- return test2[n];
- });
- if (order2.join('') !== '0123456789') {
- return false;
- }
-
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
- var test3 = {};
- 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
- test3[letter] = letter;
- });
- if (Object.keys(Object.assign({}, test3)).join('') !==
- 'abcdefghijklmnopqrst') {
- return false;
- }
-
- return true;
- } catch (err) {
- // We don't expect any of the above to throw, but better to be safe.
- return false;
- }
-}
-
-module.exports = shouldUseNative() ? Object.assign : function (target, source) {
- var from;
- var to = toObject(target);
- var symbols;
-
- for (var s = 1; s < arguments.length; s++) {
- from = Object(arguments[s]);
-
- for (var key in from) {
- if (hasOwnProperty.call(from, key)) {
- to[key] = from[key];
- }
- }
-
- if (getOwnPropertySymbols) {
- symbols = getOwnPropertySymbols(from);
- for (var i = 0; i < symbols.length; i++) {
- if (propIsEnumerable.call(from, symbols[i])) {
- to[symbols[i]] = from[symbols[i]];
- }
- }
- }
- }
-
- return to;
-};
diff --git a/node_modules/object-assign/license b/node_modules/object-assign/license
deleted file mode 100644
index 654d0bf..0000000
--- a/node_modules/object-assign/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/object-assign/package.json b/node_modules/object-assign/package.json
deleted file mode 100644
index 503eb1e..0000000
--- a/node_modules/object-assign/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "object-assign",
- "version": "4.1.1",
- "description": "ES2015 `Object.assign()` ponyfill",
- "license": "MIT",
- "repository": "sindresorhus/object-assign",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "xo && ava",
- "bench": "matcha bench.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "object",
- "assign",
- "extend",
- "properties",
- "es2015",
- "ecmascript",
- "harmony",
- "ponyfill",
- "prollyfill",
- "polyfill",
- "shim",
- "browser"
- ],
- "devDependencies": {
- "ava": "^0.16.0",
- "lodash": "^4.16.4",
- "matcha": "^0.7.0",
- "xo": "^0.16.0"
- }
-}
diff --git a/node_modules/object-assign/readme.md b/node_modules/object-assign/readme.md
deleted file mode 100644
index 1be09d3..0000000
--- a/node_modules/object-assign/readme.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# object-assign [](https://travis-ci.org/sindresorhus/object-assign)
-
-> ES2015 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) [ponyfill](https://ponyfill.com)
-
-
-## Use the built-in
-
-Node.js 4 and up, as well as every evergreen browser (Chrome, Edge, Firefox, Opera, Safari),
-support `Object.assign()` :tada:. If you target only those environments, then by all
-means, use `Object.assign()` instead of this package.
-
-
-## Install
-
-```
-$ npm install --save object-assign
-```
-
-
-## Usage
-
-```js
-const objectAssign = require('object-assign');
-
-objectAssign({foo: 0}, {bar: 1});
-//=> {foo: 0, bar: 1}
-
-// multiple sources
-objectAssign({foo: 0}, {bar: 1}, {baz: 2});
-//=> {foo: 0, bar: 1, baz: 2}
-
-// overwrites equal keys
-objectAssign({foo: 0}, {foo: 1}, {foo: 2});
-//=> {foo: 2}
-
-// ignores null and undefined sources
-objectAssign({foo: 0}, null, {bar: 1}, undefined);
-//=> {foo: 0, bar: 1}
-```
-
-
-## API
-
-### objectAssign(target, [source, ...])
-
-Assigns enumerable own properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones.
-
-
-## Resources
-
-- [ES2015 spec - Object.assign](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign)
-
-
-## Related
-
-- [deep-assign](https://github.com/sindresorhus/deep-assign) - Recursive `Object.assign()`
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/object-copy/LICENSE b/node_modules/object-copy/LICENSE
deleted file mode 100644
index e28e603..0000000
--- a/node_modules/object-copy/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/object-copy/index.js b/node_modules/object-copy/index.js
deleted file mode 100644
index f9faa22..0000000
--- a/node_modules/object-copy/index.js
+++ /dev/null
@@ -1,174 +0,0 @@
-'use strict';
-
-var typeOf = require('kind-of');
-var copyDescriptor = require('copy-descriptor');
-var define = require('define-property');
-
-/**
- * Copy static properties, prototype properties, and descriptors from one object to another.
- *
- * ```js
- * function App() {}
- * var proto = App.prototype;
- * App.prototype.set = function() {};
- * App.prototype.get = function() {};
- *
- * var obj = {};
- * copy(obj, proto);
- * ```
- * @param {Object} `receiver`
- * @param {Object} `provider`
- * @param {String|Array} `omit` One or more properties to omit
- * @return {Object}
- * @api public
- */
-
-function copy(receiver, provider, omit) {
- if (!isObject(receiver)) {
- throw new TypeError('expected receiving object to be an object.');
- }
- if (!isObject(provider)) {
- throw new TypeError('expected providing object to be an object.');
- }
-
- var props = nativeKeys(provider);
- var keys = Object.keys(provider);
- var len = props.length;
- omit = arrayify(omit);
-
- while (len--) {
- var key = props[len];
-
- if (has(keys, key)) {
- define(receiver, key, provider[key]);
- } else if (!(key in receiver) && !has(omit, key)) {
- copyDescriptor(receiver, provider, key);
- }
- }
-};
-
-/**
- * Return true if the given value is an object or function
- */
-
-function isObject(val) {
- return typeOf(val) === 'object' || typeof val === 'function';
-}
-
-/**
- * Returns true if an array has any of the given elements, or an
- * object has any of the give keys.
- *
- * ```js
- * has(['a', 'b', 'c'], 'c');
- * //=> true
- *
- * has(['a', 'b', 'c'], ['c', 'z']);
- * //=> true
- *
- * has({a: 'b', c: 'd'}, ['c', 'z']);
- * //=> true
- * ```
- * @param {Object} `obj`
- * @param {String|Array} `val`
- * @return {Boolean}
- */
-
-function has(obj, val) {
- val = arrayify(val);
- var len = val.length;
-
- if (isObject(obj)) {
- for (var key in obj) {
- if (val.indexOf(key) > -1) {
- return true;
- }
- }
-
- var keys = nativeKeys(obj);
- return has(keys, val);
- }
-
- if (Array.isArray(obj)) {
- var arr = obj;
- while (len--) {
- if (arr.indexOf(val[len]) > -1) {
- return true;
- }
- }
- return false;
- }
-
- throw new TypeError('expected an array or object.');
-}
-
-/**
- * Cast the given value to an array.
- *
- * ```js
- * arrayify('foo');
- * //=> ['foo']
- *
- * arrayify(['foo']);
- * //=> ['foo']
- * ```
- *
- * @param {String|Array} `val`
- * @return {Array}
- */
-
-function arrayify(val) {
- return val ? (Array.isArray(val) ? val : [val]) : [];
-}
-
-/**
- * Returns true if a value has a `contructor`
- *
- * ```js
- * hasConstructor({});
- * //=> true
- *
- * hasConstructor(Object.create(null));
- * //=> false
- * ```
- * @param {Object} `value`
- * @return {Boolean}
- */
-
-function hasConstructor(val) {
- return isObject(val) && typeof val.constructor !== 'undefined';
-}
-
-/**
- * Get the native `ownPropertyNames` from the constructor of the
- * given `object`. An empty array is returned if the object does
- * not have a constructor.
- *
- * ```js
- * nativeKeys({a: 'b', b: 'c', c: 'd'})
- * //=> ['a', 'b', 'c']
- *
- * nativeKeys(function(){})
- * //=> ['length', 'caller']
- * ```
- *
- * @param {Object} `obj` Object that has a `constructor`.
- * @return {Array} Array of keys.
- */
-
-function nativeKeys(val) {
- if (!hasConstructor(val)) return [];
- return Object.getOwnPropertyNames(val);
-}
-
-/**
- * Expose `copy`
- */
-
-module.exports = copy;
-
-/**
- * Expose `copy.has` for tests
- */
-
-module.exports.has = has;
diff --git a/node_modules/object-copy/node_modules/define-property/LICENSE b/node_modules/object-copy/node_modules/define-property/LICENSE
deleted file mode 100644
index 65f90ac..0000000
--- a/node_modules/object-copy/node_modules/define-property/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/object-copy/node_modules/define-property/README.md b/node_modules/object-copy/node_modules/define-property/README.md
deleted file mode 100644
index 8cac698..0000000
--- a/node_modules/object-copy/node_modules/define-property/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# define-property [](http://badge.fury.io/js/define-property)
-
-> Define a non-enumerable property on an object.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/)
-
-```sh
-$ npm i define-property --save
-```
-
-## Usage
-
-**Params**
-
-* `obj`: The object on which to define the property.
-* `prop`: The name of the property to be defined or modified.
-* `descriptor`: The descriptor for the property being defined or modified.
-
-```js
-var define = require('define-property');
-var obj = {};
-define(obj, 'foo', function(val) {
- return val.toUpperCase();
-});
-
-console.log(obj);
-//=> {}
-
-console.log(obj.foo('bar'));
-//=> 'BAR'
-```
-
-**get/set**
-
-```js
-define(obj, 'foo', {
- get: function() {},
- set: function() {}
-});
-```
-
-## Related projects
-
-* [delegate-object](https://www.npmjs.com/package/delegate-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/delegate-object) | [homepage](https://github.com/doowb/delegate-object)
-* [forward-object](https://www.npmjs.com/package/forward-object): Copy properties from an object to another object, where properties with function values will be… [more](https://www.npmjs.com/package/forward-object) | [homepage](https://github.com/doowb/forward-object)
-* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep)
-* [mixin-object](https://www.npmjs.com/package/mixin-object): Mixin the own and inherited properties of other objects onto the first object. Pass an… [more](https://www.npmjs.com/package/mixin-object) | [homepage](https://github.com/jonschlinkert/mixin-object)
-
-## Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm i -d && npm test
-```
-
-## Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/define-property/issues/new).
-
-## Author
-
-**Jon Schlinkert**
-
-+ [github/jonschlinkert](https://github.com/jonschlinkert)
-+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-## License
-
-Copyright © 2015 Jon Schlinkert
-Released under the MIT license.
-
-***
-
-_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 31, 2015._
diff --git a/node_modules/object-copy/node_modules/define-property/index.js b/node_modules/object-copy/node_modules/define-property/index.js
deleted file mode 100644
index 3e0e5e1..0000000
--- a/node_modules/object-copy/node_modules/define-property/index.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*!
- * define-property
- *
- * Copyright (c) 2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-var isDescriptor = require('is-descriptor');
-
-module.exports = function defineProperty(obj, prop, val) {
- if (typeof obj !== 'object' && typeof obj !== 'function') {
- throw new TypeError('expected an object or function.');
- }
-
- if (typeof prop !== 'string') {
- throw new TypeError('expected `prop` to be a string.');
- }
-
- if (isDescriptor(val) && ('set' in val || 'get' in val)) {
- return Object.defineProperty(obj, prop, val);
- }
-
- return Object.defineProperty(obj, prop, {
- configurable: true,
- enumerable: false,
- writable: true,
- value: val
- });
-};
diff --git a/node_modules/object-copy/node_modules/define-property/package.json b/node_modules/object-copy/node_modules/define-property/package.json
deleted file mode 100644
index 43561bf..0000000
--- a/node_modules/object-copy/node_modules/define-property/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "define-property",
- "description": "Define a non-enumerable property on an object.",
- "version": "0.2.5",
- "homepage": "https://github.com/jonschlinkert/define-property",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/define-property",
- "bugs": {
- "url": "https://github.com/jonschlinkert/define-property/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "mocha": "*",
- "should": "^7.0.4"
- },
- "keywords": [
- "define",
- "define-property",
- "enumerable",
- "key",
- "non",
- "non-enumerable",
- "object",
- "prop",
- "property",
- "value"
- ],
- "verb": {
- "related": {
- "list": [
- "mixin-deep",
- "mixin-object",
- "delegate-object",
- "forward-object"
- ]
- }
- },
- "dependencies": {
- "is-descriptor": "^0.1.0"
- }
-}
diff --git a/node_modules/object-copy/node_modules/is-accessor-descriptor/LICENSE b/node_modules/object-copy/node_modules/is-accessor-descriptor/LICENSE
deleted file mode 100644
index 65f90ac..0000000
--- a/node_modules/object-copy/node_modules/is-accessor-descriptor/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/object-copy/node_modules/is-accessor-descriptor/README.md b/node_modules/object-copy/node_modules/is-accessor-descriptor/README.md
deleted file mode 100644
index 3743fe6..0000000
--- a/node_modules/object-copy/node_modules/is-accessor-descriptor/README.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# is-accessor-descriptor [](https://www.npmjs.com/package/is-accessor-descriptor) [](https://travis-ci.org/jonschlinkert/is-accessor-descriptor)
-
-> Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.
-
-- [Install](#install)
-- [Usage](#usage)
-- [Examples](#examples)
-- [API](#api)
-- [Related projects](#related-projects)
-- [Running tests](#running-tests)
-- [Contributing](#contributing)
-- [Author](#author)
-- [License](#license)
-
-_(TOC generated by [verb](https://github.com/verbose/verb) using [markdown-toc](https://github.com/jonschlinkert/markdown-toc))_
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm i is-accessor-descriptor --save
-```
-
-## Usage
-
-```js
-var isAccessor = require('is-accessor-descriptor');
-
-isAccessor({get: function() {}});
-//=> true
-```
-
-You may also pass an object and property name to check if the property is an accessor:
-
-```js
-isAccessor(foo, 'bar');
-```
-
-## Examples
-
-`false` when not an object
-
-```js
-isAccessor('a')
-isAccessor(null)
-isAccessor([])
-//=> false
-```
-
-`true` when the object has valid properties
-
-and the properties all have the correct JavaScript types:
-
-```js
-isAccessor({get: noop, set: noop})
-isAccessor({get: noop})
-isAccessor({set: noop})
-//=> true
-```
-
-`false` when the object has invalid properties
-
-```js
-isAccessor({get: noop, set: noop, bar: 'baz'})
-isAccessor({get: noop, writable: true})
-isAccessor({get: noop, value: true})
-//=> false
-```
-
-`false` when an accessor is not a function
-
-```js
-isAccessor({get: noop, set: 'baz'})
-isAccessor({get: 'foo', set: noop})
-isAccessor({get: 'foo', bar: 'baz'})
-isAccessor({get: 'foo', set: 'baz'})
-//=> false
-```
-
-`false` when a value is not the correct type
-
-```js
-isAccessor({get: noop, set: noop, enumerable: 'foo'})
-isAccessor({set: noop, configurable: 'foo'})
-isAccessor({get: noop, configurable: 'foo'})
-//=> false
-```
-
-## Related projects
-
-* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor)
-* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor)
-* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://www.npmjs.com/package/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor)
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject)
-
-## Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm i -d && npm test
-```
-
-## Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/is-accessor-descriptor/issues/new).
-
-## Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-## License
-
-Copyright © 2015 [Jon Schlinkert](https://github.com/jonschlinkert)
-Released under the MIT license.
-
-***
-
-_This file was generated by [verb](https://github.com/verbose/verb) on December 28, 2015._
\ No newline at end of file
diff --git a/node_modules/object-copy/node_modules/is-accessor-descriptor/index.js b/node_modules/object-copy/node_modules/is-accessor-descriptor/index.js
deleted file mode 100644
index 2ca4af8..0000000
--- a/node_modules/object-copy/node_modules/is-accessor-descriptor/index.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/*!
- * is-accessor-descriptor
- *
- * Copyright (c) 2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-var typeOf = require('kind-of');
-
-// accessor descriptor properties
-var accessor = {
- get: 'function',
- set: 'function',
- configurable: 'boolean',
- enumerable: 'boolean'
-};
-
-function isAccessorDescriptor(obj, prop) {
- if (typeof prop === 'string') {
- var val = Object.getOwnPropertyDescriptor(obj, prop);
- return typeof val !== 'undefined';
- }
-
- if (typeOf(obj) !== 'object') {
- return false;
- }
-
- if (has(obj, 'value') || has(obj, 'writable')) {
- return false;
- }
-
- if (!has(obj, 'get') || typeof obj.get !== 'function') {
- return false;
- }
-
- // tldr: it's valid to have "set" be undefined
- // "set" might be undefined if `Object.getOwnPropertyDescriptor`
- // was used to get the value, and only `get` was defined by the user
- if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') {
- return false;
- }
-
- for (var key in obj) {
- if (!accessor.hasOwnProperty(key)) {
- continue;
- }
-
- if (typeOf(obj[key]) === accessor[key]) {
- continue;
- }
-
- if (typeof obj[key] !== 'undefined') {
- return false;
- }
- }
- return true;
-}
-
-function has(obj, key) {
- return {}.hasOwnProperty.call(obj, key);
-}
-
-/**
- * Expose `isAccessorDescriptor`
- */
-
-module.exports = isAccessorDescriptor;
diff --git a/node_modules/object-copy/node_modules/is-accessor-descriptor/package.json b/node_modules/object-copy/node_modules/is-accessor-descriptor/package.json
deleted file mode 100644
index 0f39c64..0000000
--- a/node_modules/object-copy/node_modules/is-accessor-descriptor/package.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "name": "is-accessor-descriptor",
- "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.",
- "version": "0.1.6",
- "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/is-accessor-descriptor",
- "bugs": {
- "url": "https://github.com/jonschlinkert/is-accessor-descriptor/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "devDependencies": {
- "mocha": "*",
- "should": "*"
- },
- "keywords": [
- "accessor",
- "check",
- "data",
- "descriptor",
- "get",
- "getter",
- "is",
- "keys",
- "object",
- "properties",
- "property",
- "set",
- "setter",
- "type",
- "valid",
- "value"
- ],
- "verb": {
- "related": {
- "list": [
- "is-accessor-descriptor",
- "is-data-descriptor",
- "is-descriptor",
- "isobject"
- ]
- },
- "plugins": [
- "gulp-format-md"
- ],
- "layout": "default"
- }
-}
diff --git a/node_modules/object-copy/node_modules/is-data-descriptor/LICENSE b/node_modules/object-copy/node_modules/is-data-descriptor/LICENSE
deleted file mode 100644
index 65f90ac..0000000
--- a/node_modules/object-copy/node_modules/is-data-descriptor/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/object-copy/node_modules/is-data-descriptor/README.md b/node_modules/object-copy/node_modules/is-data-descriptor/README.md
deleted file mode 100644
index 41e1643..0000000
--- a/node_modules/object-copy/node_modules/is-data-descriptor/README.md
+++ /dev/null
@@ -1,128 +0,0 @@
-# is-data-descriptor [](https://www.npmjs.com/package/is-data-descriptor) [](https://travis-ci.org/jonschlinkert/is-data-descriptor)
-
-> Returns true if a value has the characteristics of a valid JavaScript data descriptor.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm i is-data-descriptor --save
-```
-
-## Usage
-
-```js
-var isDataDesc = require('is-data-descriptor');
-```
-
-## Examples
-
-`true` when the descriptor has valid properties with valid values.
-
-```js
-// `value` can be anything
-isDataDesc({value: 'foo'})
-isDataDesc({value: function() {}})
-isDataDesc({value: true})
-//=> true
-```
-
-`false` when not an object
-
-```js
-isDataDesc('a')
-//=> false
-isDataDesc(null)
-//=> false
-isDataDesc([])
-//=> false
-```
-
-`false` when the object has invalid properties
-
-```js
-isDataDesc({value: 'foo', bar: 'baz'})
-//=> false
-isDataDesc({value: 'foo', bar: 'baz'})
-//=> false
-isDataDesc({value: 'foo', get: function(){}})
-//=> false
-isDataDesc({get: function(){}, value: 'foo'})
-//=> false
-```
-
-`false` when a value is not the correct type
-
-```js
-isDataDesc({value: 'foo', enumerable: 'foo'})
-//=> false
-isDataDesc({value: 'foo', configurable: 'foo'})
-//=> false
-isDataDesc({value: 'foo', writable: 'foo'})
-//=> false
-```
-
-## Valid properties
-
-The only valid data descriptor properties are the following:
-
-* `configurable` (required)
-* `enumerable` (required)
-* `value` (optional)
-* `writable` (optional)
-
-To be a valid data descriptor, either `value` or `writable` must be defined.
-
-**Invalid properties**
-
-A descriptor may have additional _invalid_ properties (an error will **not** be thrown).
-
-```js
-var foo = {};
-
-Object.defineProperty(foo, 'bar', {
- enumerable: true,
- whatever: 'blah', // invalid, but doesn't cause an error
- get: function() {
- return 'baz';
- }
-});
-
-console.log(foo.bar);
-//=> 'baz'
-```
-
-## Related projects
-
-* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor)
-* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://www.npmjs.com/package/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor)
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject)
-
-## Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm i -d && npm test
-```
-
-## Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/is-data-descriptor/issues/new).
-
-## Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-## License
-
-Copyright © 2015 [Jon Schlinkert](https://github.com/jonschlinkert)
-Released under the MIT license.
-
-***
-
-_This file was generated by [verb](https://github.com/verbose/verb) on December 28, 2015._
\ No newline at end of file
diff --git a/node_modules/object-copy/node_modules/is-data-descriptor/index.js b/node_modules/object-copy/node_modules/is-data-descriptor/index.js
deleted file mode 100644
index d4d09c9..0000000
--- a/node_modules/object-copy/node_modules/is-data-descriptor/index.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*!
- * is-data-descriptor
- *
- * Copyright (c) 2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-var typeOf = require('kind-of');
-
-// data descriptor properties
-var data = {
- configurable: 'boolean',
- enumerable: 'boolean',
- writable: 'boolean'
-};
-
-function isDataDescriptor(obj, prop) {
- if (typeOf(obj) !== 'object') {
- return false;
- }
-
- if (typeof prop === 'string') {
- var val = Object.getOwnPropertyDescriptor(obj, prop);
- return typeof val !== 'undefined';
- }
-
- if (!('value' in obj) && !('writable' in obj)) {
- return false;
- }
-
- for (var key in obj) {
- if (key === 'value') continue;
-
- if (!data.hasOwnProperty(key)) {
- continue;
- }
-
- if (typeOf(obj[key]) === data[key]) {
- continue;
- }
-
- if (typeof obj[key] !== 'undefined') {
- return false;
- }
- }
- return true;
-}
-
-/**
- * Expose `isDataDescriptor`
- */
-
-module.exports = isDataDescriptor;
diff --git a/node_modules/object-copy/node_modules/is-data-descriptor/package.json b/node_modules/object-copy/node_modules/is-data-descriptor/package.json
deleted file mode 100644
index 5fb294b..0000000
--- a/node_modules/object-copy/node_modules/is-data-descriptor/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "name": "is-data-descriptor",
- "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.",
- "version": "0.1.4",
- "homepage": "https://github.com/jonschlinkert/is-data-descriptor",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/is-data-descriptor",
- "bugs": {
- "url": "https://github.com/jonschlinkert/is-data-descriptor/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "devDependencies": {
- "mocha": "*",
- "should": "*"
- },
- "keywords": [
- "accessor",
- "check",
- "data",
- "descriptor",
- "get",
- "getter",
- "is",
- "keys",
- "object",
- "properties",
- "property",
- "set",
- "setter",
- "type",
- "valid",
- "value"
- ],
- "verb": {
- "related": {
- "list": [
- "is-accessor-descriptor",
- "is-data-descriptor",
- "is-descriptor",
- "isobject"
- ]
- },
- "plugins": [
- "gulp-format-md"
- ]
- }
-}
diff --git a/node_modules/object-copy/node_modules/is-descriptor/LICENSE b/node_modules/object-copy/node_modules/is-descriptor/LICENSE
deleted file mode 100644
index c0d7f13..0000000
--- a/node_modules/object-copy/node_modules/is-descriptor/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/object-copy/node_modules/is-descriptor/README.md b/node_modules/object-copy/node_modules/is-descriptor/README.md
deleted file mode 100644
index 658e533..0000000
--- a/node_modules/object-copy/node_modules/is-descriptor/README.md
+++ /dev/null
@@ -1,193 +0,0 @@
-# is-descriptor [](https://www.npmjs.com/package/is-descriptor) [](https://npmjs.org/package/is-descriptor) [](https://npmjs.org/package/is-descriptor) [](https://travis-ci.org/jonschlinkert/is-descriptor)
-
-> Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save is-descriptor
-```
-
-## Usage
-
-```js
-var isDescriptor = require('is-descriptor');
-
-isDescriptor({value: 'foo'})
-//=> true
-isDescriptor({get: function(){}, set: function(){}})
-//=> true
-isDescriptor({get: 'foo', set: function(){}})
-//=> false
-```
-
-You may also check for a descriptor by passing an object as the first argument and property name (`string`) as the second argument.
-
-```js
-var obj = {};
-obj.foo = 'abc';
-
-Object.defineProperty(obj, 'bar', {
- value: 'xyz'
-});
-
-isDescriptor(obj, 'foo');
-//=> true
-isDescriptor(obj, 'bar');
-//=> true
-```
-
-## Examples
-
-### value type
-
-`false` when not an object
-
-```js
-isDescriptor('a');
-//=> false
-isDescriptor(null);
-//=> false
-isDescriptor([]);
-//=> false
-```
-
-### data descriptor
-
-`true` when the object has valid properties with valid values.
-
-```js
-isDescriptor({value: 'foo'});
-//=> true
-isDescriptor({value: noop});
-//=> true
-```
-
-`false` when the object has invalid properties
-
-```js
-isDescriptor({value: 'foo', bar: 'baz'});
-//=> false
-isDescriptor({value: 'foo', bar: 'baz'});
-//=> false
-isDescriptor({value: 'foo', get: noop});
-//=> false
-isDescriptor({get: noop, value: noop});
-//=> false
-```
-
-`false` when a value is not the correct type
-
-```js
-isDescriptor({value: 'foo', enumerable: 'foo'});
-//=> false
-isDescriptor({value: 'foo', configurable: 'foo'});
-//=> false
-isDescriptor({value: 'foo', writable: 'foo'});
-//=> false
-```
-
-### accessor descriptor
-
-`true` when the object has valid properties with valid values.
-
-```js
-isDescriptor({get: noop, set: noop});
-//=> true
-isDescriptor({get: noop});
-//=> true
-isDescriptor({set: noop});
-//=> true
-```
-
-`false` when the object has invalid properties
-
-```js
-isDescriptor({get: noop, set: noop, bar: 'baz'});
-//=> false
-isDescriptor({get: noop, writable: true});
-//=> false
-isDescriptor({get: noop, value: true});
-//=> false
-```
-
-`false` when an accessor is not a function
-
-```js
-isDescriptor({get: noop, set: 'baz'});
-//=> false
-isDescriptor({get: 'foo', set: noop});
-//=> false
-isDescriptor({get: 'foo', bar: 'baz'});
-//=> false
-isDescriptor({get: 'foo', set: 'baz'});
-//=> false
-```
-
-`false` when a value is not the correct type
-
-```js
-isDescriptor({get: noop, set: noop, enumerable: 'foo'});
-//=> false
-isDescriptor({set: noop, configurable: 'foo'});
-//=> false
-isDescriptor({get: noop, configurable: 'foo'});
-//=> false
-```
-
-## About
-
-### Related projects
-
-* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.")
-* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.")
-* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.")
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 24 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [doowb](https://github.com/doowb) |
-| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) |
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 22, 2017._
\ No newline at end of file
diff --git a/node_modules/object-copy/node_modules/is-descriptor/index.js b/node_modules/object-copy/node_modules/is-descriptor/index.js
deleted file mode 100644
index c9b91d7..0000000
--- a/node_modules/object-copy/node_modules/is-descriptor/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*!
- * is-descriptor
- *
- * Copyright (c) 2015-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-var typeOf = require('kind-of');
-var isAccessor = require('is-accessor-descriptor');
-var isData = require('is-data-descriptor');
-
-module.exports = function isDescriptor(obj, key) {
- if (typeOf(obj) !== 'object') {
- return false;
- }
- if ('get' in obj) {
- return isAccessor(obj, key);
- }
- return isData(obj, key);
-};
diff --git a/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/LICENSE b/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/LICENSE
deleted file mode 100644
index 3f2eca1..0000000
--- a/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/README.md b/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/README.md
deleted file mode 100644
index 170bf30..0000000
--- a/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/README.md
+++ /dev/null
@@ -1,342 +0,0 @@
-# kind-of [](https://www.npmjs.com/package/kind-of) [](https://npmjs.org/package/kind-of) [](https://npmjs.org/package/kind-of) [](https://travis-ci.org/jonschlinkert/kind-of)
-
-> Get the native type of a value.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save kind-of
-```
-
-Install with [bower](https://bower.io/)
-
-```sh
-$ bower install kind-of --save
-```
-
-## Why use this?
-
-1. [it's fast](#benchmarks) | [optimizations](#optimizations)
-2. [better type checking](#better-type-checking)
-
-## Usage
-
-> es5, browser and es6 ready
-
-```js
-var kindOf = require('kind-of');
-
-kindOf(undefined);
-//=> 'undefined'
-
-kindOf(null);
-//=> 'null'
-
-kindOf(true);
-//=> 'boolean'
-
-kindOf(false);
-//=> 'boolean'
-
-kindOf(new Boolean(true));
-//=> 'boolean'
-
-kindOf(new Buffer(''));
-//=> 'buffer'
-
-kindOf(42);
-//=> 'number'
-
-kindOf(new Number(42));
-//=> 'number'
-
-kindOf('str');
-//=> 'string'
-
-kindOf(new String('str'));
-//=> 'string'
-
-kindOf(arguments);
-//=> 'arguments'
-
-kindOf({});
-//=> 'object'
-
-kindOf(Object.create(null));
-//=> 'object'
-
-kindOf(new Test());
-//=> 'object'
-
-kindOf(new Date());
-//=> 'date'
-
-kindOf([]);
-//=> 'array'
-
-kindOf([1, 2, 3]);
-//=> 'array'
-
-kindOf(new Array());
-//=> 'array'
-
-kindOf(/foo/);
-//=> 'regexp'
-
-kindOf(new RegExp('foo'));
-//=> 'regexp'
-
-kindOf(function () {});
-//=> 'function'
-
-kindOf(function * () {});
-//=> 'function'
-
-kindOf(new Function());
-//=> 'function'
-
-kindOf(new Map());
-//=> 'map'
-
-kindOf(new WeakMap());
-//=> 'weakmap'
-
-kindOf(new Set());
-//=> 'set'
-
-kindOf(new WeakSet());
-//=> 'weakset'
-
-kindOf(Symbol('str'));
-//=> 'symbol'
-
-kindOf(new Int8Array());
-//=> 'int8array'
-
-kindOf(new Uint8Array());
-//=> 'uint8array'
-
-kindOf(new Uint8ClampedArray());
-//=> 'uint8clampedarray'
-
-kindOf(new Int16Array());
-//=> 'int16array'
-
-kindOf(new Uint16Array());
-//=> 'uint16array'
-
-kindOf(new Int32Array());
-//=> 'int32array'
-
-kindOf(new Uint32Array());
-//=> 'uint32array'
-
-kindOf(new Float32Array());
-//=> 'float32array'
-
-kindOf(new Float64Array());
-//=> 'float64array'
-```
-
-## Release history
-
-### v4.0.0
-
-**Added**
-
-* `promise` support
-
-### v5.0.0
-
-**Added**
-
-* `Set Iterator` and `Map Iterator` support
-
-**Fixed**
-
-* Now returns `generatorfunction` for generator functions
-
-## Benchmarks
-
-Benchmarked against [typeof](http://github.com/CodingFu/typeof) and [type-of](https://github.com/ForbesLindesay/type-of).
-Note that performaces is slower for es6 features `Map`, `WeakMap`, `Set` and `WeakSet`.
-
-```bash
-#1: array
- current x 23,329,397 ops/sec ±0.82% (94 runs sampled)
- lib-type-of x 4,170,273 ops/sec ±0.55% (94 runs sampled)
- lib-typeof x 9,686,935 ops/sec ±0.59% (98 runs sampled)
-
-#2: boolean
- current x 27,197,115 ops/sec ±0.85% (94 runs sampled)
- lib-type-of x 3,145,791 ops/sec ±0.73% (97 runs sampled)
- lib-typeof x 9,199,562 ops/sec ±0.44% (99 runs sampled)
-
-#3: date
- current x 20,190,117 ops/sec ±0.86% (92 runs sampled)
- lib-type-of x 5,166,970 ops/sec ±0.74% (94 runs sampled)
- lib-typeof x 9,610,821 ops/sec ±0.50% (96 runs sampled)
-
-#4: function
- current x 23,855,460 ops/sec ±0.60% (97 runs sampled)
- lib-type-of x 5,667,740 ops/sec ±0.54% (100 runs sampled)
- lib-typeof x 10,010,644 ops/sec ±0.44% (100 runs sampled)
-
-#5: null
- current x 27,061,047 ops/sec ±0.97% (96 runs sampled)
- lib-type-of x 13,965,573 ops/sec ±0.62% (97 runs sampled)
- lib-typeof x 8,460,194 ops/sec ±0.61% (97 runs sampled)
-
-#6: number
- current x 25,075,682 ops/sec ±0.53% (99 runs sampled)
- lib-type-of x 2,266,405 ops/sec ±0.41% (98 runs sampled)
- lib-typeof x 9,821,481 ops/sec ±0.45% (99 runs sampled)
-
-#7: object
- current x 3,348,980 ops/sec ±0.49% (99 runs sampled)
- lib-type-of x 3,245,138 ops/sec ±0.60% (94 runs sampled)
- lib-typeof x 9,262,952 ops/sec ±0.59% (99 runs sampled)
-
-#8: regex
- current x 21,284,827 ops/sec ±0.72% (96 runs sampled)
- lib-type-of x 4,689,241 ops/sec ±0.43% (100 runs sampled)
- lib-typeof x 8,957,593 ops/sec ±0.62% (98 runs sampled)
-
-#9: string
- current x 25,379,234 ops/sec ±0.58% (96 runs sampled)
- lib-type-of x 3,635,148 ops/sec ±0.76% (93 runs sampled)
- lib-typeof x 9,494,134 ops/sec ±0.49% (98 runs sampled)
-
-#10: undef
- current x 27,459,221 ops/sec ±1.01% (93 runs sampled)
- lib-type-of x 14,360,433 ops/sec ±0.52% (99 runs sampled)
- lib-typeof x 23,202,868 ops/sec ±0.59% (94 runs sampled)
-
-```
-
-## Optimizations
-
-In 7 out of 8 cases, this library is 2x-10x faster than other top libraries included in the benchmarks. There are a few things that lead to this performance advantage, none of them hard and fast rules, but all of them simple and repeatable in almost any code library:
-
-1. Optimize around the fastest and most common use cases first. Of course, this will change from project-to-project, but I took some time to understand how and why `typeof` checks were being used in my own libraries and other libraries I use a lot.
-2. Optimize around bottlenecks - In other words, the order in which conditionals are implemented is significant, because each check is only as fast as the failing checks that came before it. Here, the biggest bottleneck by far is checking for plain objects (an object that was created by the `Object` constructor). I opted to make this check happen by process of elimination rather than brute force up front (e.g. by using something like `val.constructor.name`), so that every other type check would not be penalized it.
-3. Don't do uneccessary processing - why do `.slice(8, -1).toLowerCase();` just to get the word `regex`? It's much faster to do `if (type === '[object RegExp]') return 'regex'`
-4. There is no reason to make the code in a microlib as terse as possible, just to win points for making it shorter. It's always better to favor performant code over terse code. You will always only be using a single `require()` statement to use the library anyway, regardless of how the code is written.
-
-## Better type checking
-
-kind-of is more correct than other type checking libs I've looked at. For example, here are some differing results from other popular libs:
-
-### [typeof](https://github.com/CodingFu/typeof) lib
-
-Incorrectly tests instances of custom constructors (pretty common):
-
-```js
-var typeOf = require('typeof');
-function Test() {}
-console.log(typeOf(new Test()));
-//=> 'test'
-```
-
-Returns `object` instead of `arguments`:
-
-```js
-function foo() {
- console.log(typeOf(arguments)) //=> 'object'
-}
-foo();
-```
-
-### [type-of](https://github.com/ForbesLindesay/type-of) lib
-
-Incorrectly returns `object` for generator functions, buffers, `Map`, `Set`, `WeakMap` and `WeakSet`:
-
-```js
-function * foo() {}
-console.log(typeOf(foo));
-//=> 'object'
-console.log(typeOf(new Buffer('')));
-//=> 'object'
-console.log(typeOf(new Map()));
-//=> 'object'
-console.log(typeOf(new Set()));
-//=> 'object'
-console.log(typeOf(new WeakMap()));
-//=> 'object'
-console.log(typeOf(new WeakSet()));
-//=> 'object'
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet")
-* [is-number](https://www.npmjs.com/package/is-number): Returns true if the value is a number. comprehensive tests. | [homepage](https://github.com/jonschlinkert/is-number "Returns true if the value is a number. comprehensive tests.")
-* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 82 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 3 | [aretecode](https://github.com/aretecode) |
-| 2 | [miguelmota](https://github.com/miguelmota) |
-| 1 | [dtothefp](https://github.com/dtothefp) |
-| 1 | [ksheedlo](https://github.com/ksheedlo) |
-| 1 | [pdehaan](https://github.com/pdehaan) |
-| 1 | [laggingreflex](https://github.com/laggingreflex) |
-| 1 | [charlike](https://github.com/charlike) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on October 13, 2017._
\ No newline at end of file
diff --git a/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/index.js b/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/index.js
deleted file mode 100644
index fc5cde9..0000000
--- a/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/index.js
+++ /dev/null
@@ -1,147 +0,0 @@
-var toString = Object.prototype.toString;
-
-/**
- * Get the native `typeof` a value.
- *
- * @param {*} `val`
- * @return {*} Native javascript type
- */
-
-module.exports = function kindOf(val) {
- var type = typeof val;
-
- // primitivies
- if (type === 'undefined') {
- return 'undefined';
- }
- if (val === null) {
- return 'null';
- }
- if (val === true || val === false || val instanceof Boolean) {
- return 'boolean';
- }
- if (type === 'string' || val instanceof String) {
- return 'string';
- }
- if (type === 'number' || val instanceof Number) {
- return 'number';
- }
-
- // functions
- if (type === 'function' || val instanceof Function) {
- if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') {
- return 'generatorfunction';
- }
- return 'function';
- }
-
- // array
- if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {
- return 'array';
- }
-
- // check for instances of RegExp and Date before calling `toString`
- if (val instanceof RegExp) {
- return 'regexp';
- }
- if (val instanceof Date) {
- return 'date';
- }
-
- // other objects
- type = toString.call(val);
-
- if (type === '[object RegExp]') {
- return 'regexp';
- }
- if (type === '[object Date]') {
- return 'date';
- }
- if (type === '[object Arguments]') {
- return 'arguments';
- }
- if (type === '[object Error]') {
- return 'error';
- }
- if (type === '[object Promise]') {
- return 'promise';
- }
-
- // buffer
- if (isBuffer(val)) {
- return 'buffer';
- }
-
- // es6: Map, WeakMap, Set, WeakSet
- if (type === '[object Set]') {
- return 'set';
- }
- if (type === '[object WeakSet]') {
- return 'weakset';
- }
- if (type === '[object Map]') {
- return 'map';
- }
- if (type === '[object WeakMap]') {
- return 'weakmap';
- }
- if (type === '[object Symbol]') {
- return 'symbol';
- }
-
- if (type === '[object Map Iterator]') {
- return 'mapiterator';
- }
- if (type === '[object Set Iterator]') {
- return 'setiterator';
- }
- if (type === '[object String Iterator]') {
- return 'stringiterator';
- }
- if (type === '[object Array Iterator]') {
- return 'arrayiterator';
- }
-
- // typed arrays
- if (type === '[object Int8Array]') {
- return 'int8array';
- }
- if (type === '[object Uint8Array]') {
- return 'uint8array';
- }
- if (type === '[object Uint8ClampedArray]') {
- return 'uint8clampedarray';
- }
- if (type === '[object Int16Array]') {
- return 'int16array';
- }
- if (type === '[object Uint16Array]') {
- return 'uint16array';
- }
- if (type === '[object Int32Array]') {
- return 'int32array';
- }
- if (type === '[object Uint32Array]') {
- return 'uint32array';
- }
- if (type === '[object Float32Array]') {
- return 'float32array';
- }
- if (type === '[object Float64Array]') {
- return 'float64array';
- }
-
- // must be a plain object
- return 'object';
-};
-
-/**
- * If you need to support Safari 5-7 (8-10 yr-old browser),
- * take a look at https://github.com/feross/is-buffer
- */
-
-function isBuffer(val) {
- return val.constructor
- && typeof val.constructor.isBuffer === 'function'
- && val.constructor.isBuffer(val);
-}
diff --git a/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/package.json b/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/package.json
deleted file mode 100644
index 334235f..0000000
--- a/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/package.json
+++ /dev/null
@@ -1,91 +0,0 @@
-{
- "name": "kind-of",
- "description": "Get the native type of a value.",
- "version": "5.1.0",
- "homepage": "https://github.com/jonschlinkert/kind-of",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "David Fox-Powell (https://dtothefp.github.io/me)",
- "James (https://twitter.com/aretecode)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Ken Sheedlo (kensheedlo.com)",
- "laggingreflex (https://github.com/laggingreflex)",
- "Miguel Mota (https://miguelmota.com)",
- "Peter deHaan (http://about.me/peterdehaan)",
- "tunnckoCore (https://i.am.charlike.online)"
- ],
- "repository": "jonschlinkert/kind-of",
- "bugs": {
- "url": "https://github.com/jonschlinkert/kind-of/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha",
- "prepublish": "browserify -o browser.js -e index.js -s index --bare"
- },
- "devDependencies": {
- "ansi-bold": "^0.1.1",
- "benchmarked": "^1.1.1",
- "browserify": "^14.4.0",
- "gulp-format-md": "^0.1.12",
- "matched": "^0.4.4",
- "mocha": "^3.4.2",
- "type-of": "^2.0.1",
- "typeof": "^1.0.0"
- },
- "keywords": [
- "arguments",
- "array",
- "boolean",
- "check",
- "date",
- "function",
- "is",
- "is-type",
- "is-type-of",
- "kind",
- "kind-of",
- "number",
- "object",
- "of",
- "regexp",
- "string",
- "test",
- "type",
- "type-of",
- "typeof",
- "types"
- ],
- "verb": {
- "related": {
- "list": [
- "is-glob",
- "is-number",
- "is-primitive"
- ]
- },
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- },
- "reflinks": [
- "type-of",
- "typeof",
- "verb"
- ]
- }
-}
diff --git a/node_modules/object-copy/node_modules/is-descriptor/package.json b/node_modules/object-copy/node_modules/is-descriptor/package.json
deleted file mode 100644
index a561bfe..0000000
--- a/node_modules/object-copy/node_modules/is-descriptor/package.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "name": "is-descriptor",
- "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.",
- "version": "0.1.6",
- "homepage": "https://github.com/jonschlinkert/is-descriptor",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Brian Woodward (https://twitter.com/doowb)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "(https://github.com/wtgtybhertgeghgtwtg)"
- ],
- "repository": "jonschlinkert/is-descriptor",
- "bugs": {
- "url": "https://github.com/jonschlinkert/is-descriptor/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "devDependencies": {
- "gulp-format-md": "^1.0.0",
- "mocha": "^3.4.2"
- },
- "keywords": [
- "accessor",
- "check",
- "data",
- "descriptor",
- "get",
- "getter",
- "is",
- "keys",
- "object",
- "properties",
- "property",
- "set",
- "setter",
- "type",
- "valid",
- "value"
- ],
- "verb": {
- "related": {
- "list": [
- "is-accessor-descriptor",
- "is-data-descriptor",
- "is-descriptor",
- "isobject"
- ]
- },
- "plugins": [
- "gulp-format-md"
- ],
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/object-copy/package.json b/node_modules/object-copy/package.json
deleted file mode 100644
index f02a96c..0000000
--- a/node_modules/object-copy/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "object-copy",
- "description": "Copy static properties, prototype properties, and descriptors from one object to another.",
- "version": "0.1.0",
- "homepage": "https://github.com/jonschlinkert/object-copy",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/object-copy",
- "bugs": {
- "url": "https://github.com/jonschlinkert/object-copy/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "devDependencies": {
- "gulp-format-md": "*",
- "mocha": "*"
- },
- "keywords": [
- "copy",
- "object"
- ],
- "verb": {
- "layout": "default",
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": []
- },
- "reflinks": [
- "verb"
- ]
- }
-}
diff --git a/node_modules/object-visit/LICENSE b/node_modules/object-visit/LICENSE
deleted file mode 100644
index ec85897..0000000
--- a/node_modules/object-visit/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015, 2017, Jon Schlinkert
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/object-visit/README.md b/node_modules/object-visit/README.md
deleted file mode 100644
index 64015cb..0000000
--- a/node_modules/object-visit/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# object-visit [](https://www.npmjs.com/package/object-visit) [](https://npmjs.org/package/object-visit) [](https://npmjs.org/package/object-visit) [](https://travis-ci.org/jonschlinkert/object-visit)
-
-> Call a specified method on each value in the given object.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save object-visit
-```
-
-## Usage
-
-```js
-var visit = require('object-visit');
-
-var ctx = {
- data: {},
- set: function (key, value) {
- if (typeof key === 'object') {
- visit(ctx, 'set', key);
- } else {
- ctx.data[key] = value;
- }
- }
-};
-
-ctx.set('a', 'a');
-ctx.set('b', 'b');
-ctx.set('c', 'c');
-ctx.set({d: {e: 'f'}});
-
-console.log(ctx.data);
-//=> {a: 'a', b: 'b', c: 'c', d: { e: 'f' }};
-```
-
-## About
-
-### Related projects
-
-* [base-methods](https://www.npmjs.com/package/base-methods): base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… [more](https://github.com/jonschlinkert/base-methods) | [homepage](https://github.com/jonschlinkert/base-methods "base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`.")
-* [collection-visit](https://www.npmjs.com/package/collection-visit): Visit a method over the items in an object, or map visit over the objects… [more](https://github.com/jonschlinkert/collection-visit) | [homepage](https://github.com/jonschlinkert/collection-visit "Visit a method over the items in an object, or map visit over the objects in an array.")
-* [define-property](https://www.npmjs.com/package/define-property): Define a non-enumerable property on an object. | [homepage](https://github.com/jonschlinkert/define-property "Define a non-enumerable property on an object.")
-* [map-visit](https://www.npmjs.com/package/map-visit): Map `visit` over an array of objects. | [homepage](https://github.com/jonschlinkert/map-visit "Map `visit` over an array of objects.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 30, 2017._
\ No newline at end of file
diff --git a/node_modules/object-visit/index.js b/node_modules/object-visit/index.js
deleted file mode 100644
index fcaeda9..0000000
--- a/node_modules/object-visit/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*!
- * object-visit
- *
- * Copyright (c) 2015, 2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-var isObject = require('isobject');
-
-module.exports = function visit(thisArg, method, target, val) {
- if (!isObject(thisArg) && typeof thisArg !== 'function') {
- throw new Error('object-visit expects `thisArg` to be an object.');
- }
-
- if (typeof method !== 'string') {
- throw new Error('object-visit expects `method` name to be a string');
- }
-
- if (typeof thisArg[method] !== 'function') {
- return thisArg;
- }
-
- var args = [].slice.call(arguments, 3);
- target = target || {};
-
- for (var key in target) {
- var arr = [key, target[key]].concat(args);
- thisArg[method].apply(thisArg, arr);
- }
- return thisArg;
-};
diff --git a/node_modules/object-visit/package.json b/node_modules/object-visit/package.json
deleted file mode 100644
index 15fd0ff..0000000
--- a/node_modules/object-visit/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "name": "object-visit",
- "description": "Call a specified method on each value in the given object.",
- "version": "1.0.1",
- "homepage": "https://github.com/jonschlinkert/object-visit",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/object-visit",
- "bugs": {
- "url": "https://github.com/jonschlinkert/object-visit/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "isobject": "^3.0.0"
- },
- "devDependencies": {
- "gulp": "^3.9.1",
- "gulp-eslint": "^3.0.1",
- "gulp-format-md": "^0.1.12",
- "gulp-istanbul": "^1.1.1",
- "gulp-mocha": "^3.0.0",
- "mocha": "^3.2.0"
- },
- "keywords": [
- "context",
- "function",
- "helper",
- "key",
- "method",
- "object",
- "value",
- "visit",
- "visitor"
- ],
- "verb": {
- "related": {
- "list": [
- "base-methods",
- "collection-visit",
- "define-property",
- "map-visit"
- ]
- },
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/object.pick/LICENSE b/node_modules/object.pick/LICENSE
deleted file mode 100644
index 39245ac..0000000
--- a/node_modules/object.pick/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2016, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/object.pick/README.md b/node_modules/object.pick/README.md
deleted file mode 100644
index 48f7453..0000000
--- a/node_modules/object.pick/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# object.pick [](https://www.npmjs.com/package/object.pick) [](https://npmjs.org/package/object.pick) [](https://npmjs.org/package/object.pick) [](https://travis-ci.org/jonschlinkert/object.pick)
-
-> Returns a filtered copy of an object with only the specified keys, similar to `_.pick` from lodash / underscore.
-
-You might also be interested in [object.omit](https://github.com/jonschlinkert/object.omit).
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save object.pick
-```
-
-## benchmarks
-
-This is the [fastest implementation](http://jsperf.com/pick-props) I tested. Pull requests welcome!
-
-## Usage
-
-```js
-var pick = require('object.pick');
-
-pick({a: 'a', b: 'b'}, 'a')
-//=> {a: 'a'}
-
-pick({a: 'a', b: 'b', c: 'c'}, ['a', 'b'])
-//=> {a: 'a', b: 'b'}
-```
-
-## About
-
-### Related projects
-
-* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.")
-* [get-value](https://www.npmjs.com/package/get-value): Use property paths (`a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value "Use property paths (`a.b.c`) to get a nested value from an object.")
-* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep "Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.")
-* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value "Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Building docs
-
-_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_
-
-To generate the readme and API documentation with [verb](https://github.com/verbose/verb):
-
-```sh
-$ npm install -g verb verb-generate-readme && verb
-```
-
-### Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm install -d && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT license](https://github.com/jonschlinkert/object.pick/blob/master/LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.2.0, on October 27, 2016._
\ No newline at end of file
diff --git a/node_modules/object.pick/index.js b/node_modules/object.pick/index.js
deleted file mode 100644
index 0ce0178..0000000
--- a/node_modules/object.pick/index.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*!
- * object.pick
- *
- * Copyright (c) 2014-2015 Jon Schlinkert, contributors.
- * Licensed under the MIT License
- */
-
-'use strict';
-
-var isObject = require('isobject');
-
-module.exports = function pick(obj, keys) {
- if (!isObject(obj) && typeof obj !== 'function') {
- return {};
- }
-
- var res = {};
- if (typeof keys === 'string') {
- if (keys in obj) {
- res[keys] = obj[keys];
- }
- return res;
- }
-
- var len = keys.length;
- var idx = -1;
-
- while (++idx < len) {
- var key = keys[idx];
- if (key in obj) {
- res[key] = obj[key];
- }
- }
- return res;
-};
diff --git a/node_modules/object.pick/package.json b/node_modules/object.pick/package.json
deleted file mode 100644
index b655dbe..0000000
--- a/node_modules/object.pick/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "name": "object.pick",
- "description": "Returns a filtered copy of an object with only the specified keys, similar to `_.pick` from lodash / underscore.",
- "version": "1.3.0",
- "homepage": "https://github.com/jonschlinkert/object.pick",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/object.pick",
- "bugs": {
- "url": "https://github.com/jonschlinkert/object.pick/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "devDependencies": {
- "gulp-format-md": "^1.0.0",
- "mocha": "^3.1.2",
- "vinyl": "^2.0.0"
- },
- "keywords": [
- "object",
- "pick"
- ],
- "verb": {
- "run": true,
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "extend-shallow",
- "get-value",
- "mixin-deep",
- "set-value"
- ],
- "highlight": "object.omit"
- },
- "reflinks": [
- "verb"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/on-finished/HISTORY.md b/node_modules/on-finished/HISTORY.md
deleted file mode 100644
index 98ff0e9..0000000
--- a/node_modules/on-finished/HISTORY.md
+++ /dev/null
@@ -1,88 +0,0 @@
-2.3.0 / 2015-05-26
-==================
-
- * Add defined behavior for HTTP `CONNECT` requests
- * Add defined behavior for HTTP `Upgrade` requests
- * deps: ee-first@1.1.1
-
-2.2.1 / 2015-04-22
-==================
-
- * Fix `isFinished(req)` when data buffered
-
-2.2.0 / 2014-12-22
-==================
-
- * Add message object to callback arguments
-
-2.1.1 / 2014-10-22
-==================
-
- * Fix handling of pipelined requests
-
-2.1.0 / 2014-08-16
-==================
-
- * Check if `socket` is detached
- * Return `undefined` for `isFinished` if state unknown
-
-2.0.0 / 2014-08-16
-==================
-
- * Add `isFinished` function
- * Move to `jshttp` organization
- * Remove support for plain socket argument
- * Rename to `on-finished`
- * Support both `req` and `res` as arguments
- * deps: ee-first@1.0.5
-
-1.2.2 / 2014-06-10
-==================
-
- * Reduce listeners added to emitters
- - avoids "event emitter leak" warnings when used multiple times on same request
-
-1.2.1 / 2014-06-08
-==================
-
- * Fix returned value when already finished
-
-1.2.0 / 2014-06-05
-==================
-
- * Call callback when called on already-finished socket
-
-1.1.4 / 2014-05-27
-==================
-
- * Support node.js 0.8
-
-1.1.3 / 2014-04-30
-==================
-
- * Make sure errors passed as instanceof `Error`
-
-1.1.2 / 2014-04-18
-==================
-
- * Default the `socket` to passed-in object
-
-1.1.1 / 2014-01-16
-==================
-
- * Rename module to `finished`
-
-1.1.0 / 2013-12-25
-==================
-
- * Call callback when called on already-errored socket
-
-1.0.1 / 2013-12-20
-==================
-
- * Actually pass the error to the callback
-
-1.0.0 / 2013-12-20
-==================
-
- * Initial release
diff --git a/node_modules/on-finished/LICENSE b/node_modules/on-finished/LICENSE
deleted file mode 100644
index 5931fd2..0000000
--- a/node_modules/on-finished/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2013 Jonathan Ong
-Copyright (c) 2014 Douglas Christopher Wilson
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/on-finished/README.md b/node_modules/on-finished/README.md
deleted file mode 100644
index a0e1157..0000000
--- a/node_modules/on-finished/README.md
+++ /dev/null
@@ -1,154 +0,0 @@
-# on-finished
-
-[![NPM Version][npm-image]][npm-url]
-[![NPM Downloads][downloads-image]][downloads-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][travis-image]][travis-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-Execute a callback when a HTTP request closes, finishes, or errors.
-
-## Install
-
-```sh
-$ npm install on-finished
-```
-
-## API
-
-```js
-var onFinished = require('on-finished')
-```
-
-### onFinished(res, listener)
-
-Attach a listener to listen for the response to finish. The listener will
-be invoked only once when the response finished. If the response finished
-to an error, the first argument will contain the error. If the response
-has already finished, the listener will be invoked.
-
-Listening to the end of a response would be used to close things associated
-with the response, like open files.
-
-Listener is invoked as `listener(err, res)`.
-
-```js
-onFinished(res, function (err, res) {
- // clean up open fds, etc.
- // err contains the error is request error'd
-})
-```
-
-### onFinished(req, listener)
-
-Attach a listener to listen for the request to finish. The listener will
-be invoked only once when the request finished. If the request finished
-to an error, the first argument will contain the error. If the request
-has already finished, the listener will be invoked.
-
-Listening to the end of a request would be used to know when to continue
-after reading the data.
-
-Listener is invoked as `listener(err, req)`.
-
-```js
-var data = ''
-
-req.setEncoding('utf8')
-res.on('data', function (str) {
- data += str
-})
-
-onFinished(req, function (err, req) {
- // data is read unless there is err
-})
-```
-
-### onFinished.isFinished(res)
-
-Determine if `res` is already finished. This would be useful to check and
-not even start certain operations if the response has already finished.
-
-### onFinished.isFinished(req)
-
-Determine if `req` is already finished. This would be useful to check and
-not even start certain operations if the request has already finished.
-
-## Special Node.js requests
-
-### HTTP CONNECT method
-
-The meaning of the `CONNECT` method from RFC 7231, section 4.3.6:
-
-> The CONNECT method requests that the recipient establish a tunnel to
-> the destination origin server identified by the request-target and,
-> if successful, thereafter restrict its behavior to blind forwarding
-> of packets, in both directions, until the tunnel is closed. Tunnels
-> are commonly used to create an end-to-end virtual connection, through
-> one or more proxies, which can then be secured using TLS (Transport
-> Layer Security, [RFC5246]).
-
-In Node.js, these request objects come from the `'connect'` event on
-the HTTP server.
-
-When this module is used on a HTTP `CONNECT` request, the request is
-considered "finished" immediately, **due to limitations in the Node.js
-interface**. This means if the `CONNECT` request contains a request entity,
-the request will be considered "finished" even before it has been read.
-
-There is no such thing as a response object to a `CONNECT` request in
-Node.js, so there is no support for for one.
-
-### HTTP Upgrade request
-
-The meaning of the `Upgrade` header from RFC 7230, section 6.1:
-
-> The "Upgrade" header field is intended to provide a simple mechanism
-> for transitioning from HTTP/1.1 to some other protocol on the same
-> connection.
-
-In Node.js, these request objects come from the `'upgrade'` event on
-the HTTP server.
-
-When this module is used on a HTTP request with an `Upgrade` header, the
-request is considered "finished" immediately, **due to limitations in the
-Node.js interface**. This means if the `Upgrade` request contains a request
-entity, the request will be considered "finished" even before it has been
-read.
-
-There is no such thing as a response object to a `Upgrade` request in
-Node.js, so there is no support for for one.
-
-## Example
-
-The following code ensures that file descriptors are always closed
-once the response finishes.
-
-```js
-var destroy = require('destroy')
-var http = require('http')
-var onFinished = require('on-finished')
-
-http.createServer(function onRequest(req, res) {
- var stream = fs.createReadStream('package.json')
- stream.pipe(res)
- onFinished(res, function (err) {
- destroy(stream)
- })
-})
-```
-
-## License
-
-[MIT](LICENSE)
-
-[npm-image]: https://img.shields.io/npm/v/on-finished.svg
-[npm-url]: https://npmjs.org/package/on-finished
-[node-version-image]: https://img.shields.io/node/v/on-finished.svg
-[node-version-url]: http://nodejs.org/download/
-[travis-image]: https://img.shields.io/travis/jshttp/on-finished/master.svg
-[travis-url]: https://travis-ci.org/jshttp/on-finished
-[coveralls-image]: https://img.shields.io/coveralls/jshttp/on-finished/master.svg
-[coveralls-url]: https://coveralls.io/r/jshttp/on-finished?branch=master
-[downloads-image]: https://img.shields.io/npm/dm/on-finished.svg
-[downloads-url]: https://npmjs.org/package/on-finished
diff --git a/node_modules/on-finished/index.js b/node_modules/on-finished/index.js
deleted file mode 100644
index 9abd98f..0000000
--- a/node_modules/on-finished/index.js
+++ /dev/null
@@ -1,196 +0,0 @@
-/*!
- * on-finished
- * Copyright(c) 2013 Jonathan Ong
- * Copyright(c) 2014 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = onFinished
-module.exports.isFinished = isFinished
-
-/**
- * Module dependencies.
- * @private
- */
-
-var first = require('ee-first')
-
-/**
- * Variables.
- * @private
- */
-
-/* istanbul ignore next */
-var defer = typeof setImmediate === 'function'
- ? setImmediate
- : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) }
-
-/**
- * Invoke callback when the response has finished, useful for
- * cleaning up resources afterwards.
- *
- * @param {object} msg
- * @param {function} listener
- * @return {object}
- * @public
- */
-
-function onFinished(msg, listener) {
- if (isFinished(msg) !== false) {
- defer(listener, null, msg)
- return msg
- }
-
- // attach the listener to the message
- attachListener(msg, listener)
-
- return msg
-}
-
-/**
- * Determine if message is already finished.
- *
- * @param {object} msg
- * @return {boolean}
- * @public
- */
-
-function isFinished(msg) {
- var socket = msg.socket
-
- if (typeof msg.finished === 'boolean') {
- // OutgoingMessage
- return Boolean(msg.finished || (socket && !socket.writable))
- }
-
- if (typeof msg.complete === 'boolean') {
- // IncomingMessage
- return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable))
- }
-
- // don't know
- return undefined
-}
-
-/**
- * Attach a finished listener to the message.
- *
- * @param {object} msg
- * @param {function} callback
- * @private
- */
-
-function attachFinishedListener(msg, callback) {
- var eeMsg
- var eeSocket
- var finished = false
-
- function onFinish(error) {
- eeMsg.cancel()
- eeSocket.cancel()
-
- finished = true
- callback(error)
- }
-
- // finished on first message event
- eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)
-
- function onSocket(socket) {
- // remove listener
- msg.removeListener('socket', onSocket)
-
- if (finished) return
- if (eeMsg !== eeSocket) return
-
- // finished on first socket event
- eeSocket = first([[socket, 'error', 'close']], onFinish)
- }
-
- if (msg.socket) {
- // socket already assigned
- onSocket(msg.socket)
- return
- }
-
- // wait for socket to be assigned
- msg.on('socket', onSocket)
-
- if (msg.socket === undefined) {
- // node.js 0.8 patch
- patchAssignSocket(msg, onSocket)
- }
-}
-
-/**
- * Attach the listener to the message.
- *
- * @param {object} msg
- * @return {function}
- * @private
- */
-
-function attachListener(msg, listener) {
- var attached = msg.__onFinished
-
- // create a private single listener with queue
- if (!attached || !attached.queue) {
- attached = msg.__onFinished = createListener(msg)
- attachFinishedListener(msg, attached)
- }
-
- attached.queue.push(listener)
-}
-
-/**
- * Create listener on message.
- *
- * @param {object} msg
- * @return {function}
- * @private
- */
-
-function createListener(msg) {
- function listener(err) {
- if (msg.__onFinished === listener) msg.__onFinished = null
- if (!listener.queue) return
-
- var queue = listener.queue
- listener.queue = null
-
- for (var i = 0; i < queue.length; i++) {
- queue[i](err, msg)
- }
- }
-
- listener.queue = []
-
- return listener
-}
-
-/**
- * Patch ServerResponse.prototype.assignSocket for node.js 0.8.
- *
- * @param {ServerResponse} res
- * @param {function} callback
- * @private
- */
-
-function patchAssignSocket(res, callback) {
- var assignSocket = res.assignSocket
-
- if (typeof assignSocket !== 'function') return
-
- // res.on('socket', callback) is broken in 0.8
- res.assignSocket = function _assignSocket(socket) {
- assignSocket.call(this, socket)
- callback(socket)
- }
-}
diff --git a/node_modules/on-finished/package.json b/node_modules/on-finished/package.json
deleted file mode 100644
index b9df1bd..0000000
--- a/node_modules/on-finished/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "on-finished",
- "description": "Execute a callback when a request closes, finishes, or errors",
- "version": "2.3.0",
- "contributors": [
- "Douglas Christopher Wilson ",
- "Jonathan Ong (http://jongleberry.com)"
- ],
- "license": "MIT",
- "repository": "jshttp/on-finished",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "devDependencies": {
- "istanbul": "0.3.9",
- "mocha": "2.2.5"
- },
- "engines": {
- "node": ">= 0.8"
- },
- "files": [
- "HISTORY.md",
- "LICENSE",
- "index.js"
- ],
- "scripts": {
- "test": "mocha --reporter spec --bail --check-leaks test/",
- "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
- "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
- }
-}
diff --git a/node_modules/on-headers/HISTORY.md b/node_modules/on-headers/HISTORY.md
deleted file mode 100644
index 090598d..0000000
--- a/node_modules/on-headers/HISTORY.md
+++ /dev/null
@@ -1,21 +0,0 @@
-1.0.2 / 2019-02-21
-==================
-
- * Fix `res.writeHead` patch missing return value
-
-1.0.1 / 2015-09-29
-==================
-
- * perf: enable strict mode
-
-1.0.0 / 2014-08-10
-==================
-
- * Honor `res.statusCode` change in `listener`
- * Move to `jshttp` organization
- * Prevent `arguments`-related de-opt
-
-0.0.0 / 2014-05-13
-==================
-
- * Initial implementation
diff --git a/node_modules/on-headers/LICENSE b/node_modules/on-headers/LICENSE
deleted file mode 100644
index b7dce6c..0000000
--- a/node_modules/on-headers/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 Douglas Christopher Wilson
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/on-headers/README.md b/node_modules/on-headers/README.md
deleted file mode 100644
index ae84282..0000000
--- a/node_modules/on-headers/README.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# on-headers
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][travis-image]][travis-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-Execute a listener when a response is about to write headers.
-
-## Installation
-
-This is a [Node.js](https://nodejs.org/en/) module available through the
-[npm registry](https://www.npmjs.com/). Installation is done using the
-[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
-
-```sh
-$ npm install on-headers
-```
-
-## API
-
-
-
-```js
-var onHeaders = require('on-headers')
-```
-
-### onHeaders(res, listener)
-
-This will add the listener `listener` to fire when headers are emitted for `res`.
-The listener is passed the `response` object as it's context (`this`). Headers are
-considered to be emitted only once, right before they are sent to the client.
-
-When this is called multiple times on the same `res`, the `listener`s are fired
-in the reverse order they were added.
-
-## Examples
-
-```js
-var http = require('http')
-var onHeaders = require('on-headers')
-
-http
- .createServer(onRequest)
- .listen(3000)
-
-function addPoweredBy () {
- // set if not set by end of request
- if (!this.getHeader('X-Powered-By')) {
- this.setHeader('X-Powered-By', 'Node.js')
- }
-}
-
-function onRequest (req, res) {
- onHeaders(res, addPoweredBy)
-
- res.setHeader('Content-Type', 'text/plain')
- res.end('hello!')
-}
-```
-
-## Testing
-
-```sh
-$ npm test
-```
-
-## License
-
-[MIT](LICENSE)
-
-[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/on-headers/master
-[coveralls-url]: https://coveralls.io/r/jshttp/on-headers?branch=master
-[node-version-image]: https://badgen.net/npm/node/on-headers
-[node-version-url]: https://nodejs.org/en/download
-[npm-downloads-image]: https://badgen.net/npm/dm/on-headers
-[npm-url]: https://npmjs.org/package/on-headers
-[npm-version-image]: https://badgen.net/npm/v/on-headers
-[travis-image]: https://badgen.net/travis/jshttp/on-headers/master
-[travis-url]: https://travis-ci.org/jshttp/on-headers
diff --git a/node_modules/on-headers/index.js b/node_modules/on-headers/index.js
deleted file mode 100644
index 7db6375..0000000
--- a/node_modules/on-headers/index.js
+++ /dev/null
@@ -1,132 +0,0 @@
-/*!
- * on-headers
- * Copyright(c) 2014 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = onHeaders
-
-/**
- * Create a replacement writeHead method.
- *
- * @param {function} prevWriteHead
- * @param {function} listener
- * @private
- */
-
-function createWriteHead (prevWriteHead, listener) {
- var fired = false
-
- // return function with core name and argument list
- return function writeHead (statusCode) {
- // set headers from arguments
- var args = setWriteHeadHeaders.apply(this, arguments)
-
- // fire listener
- if (!fired) {
- fired = true
- listener.call(this)
-
- // pass-along an updated status code
- if (typeof args[0] === 'number' && this.statusCode !== args[0]) {
- args[0] = this.statusCode
- args.length = 1
- }
- }
-
- return prevWriteHead.apply(this, args)
- }
-}
-
-/**
- * Execute a listener when a response is about to write headers.
- *
- * @param {object} res
- * @return {function} listener
- * @public
- */
-
-function onHeaders (res, listener) {
- if (!res) {
- throw new TypeError('argument res is required')
- }
-
- if (typeof listener !== 'function') {
- throw new TypeError('argument listener must be a function')
- }
-
- res.writeHead = createWriteHead(res.writeHead, listener)
-}
-
-/**
- * Set headers contained in array on the response object.
- *
- * @param {object} res
- * @param {array} headers
- * @private
- */
-
-function setHeadersFromArray (res, headers) {
- for (var i = 0; i < headers.length; i++) {
- res.setHeader(headers[i][0], headers[i][1])
- }
-}
-
-/**
- * Set headers contained in object on the response object.
- *
- * @param {object} res
- * @param {object} headers
- * @private
- */
-
-function setHeadersFromObject (res, headers) {
- var keys = Object.keys(headers)
- for (var i = 0; i < keys.length; i++) {
- var k = keys[i]
- if (k) res.setHeader(k, headers[k])
- }
-}
-
-/**
- * Set headers and other properties on the response object.
- *
- * @param {number} statusCode
- * @private
- */
-
-function setWriteHeadHeaders (statusCode) {
- var length = arguments.length
- var headerIndex = length > 1 && typeof arguments[1] === 'string'
- ? 2
- : 1
-
- var headers = length >= headerIndex + 1
- ? arguments[headerIndex]
- : undefined
-
- this.statusCode = statusCode
-
- if (Array.isArray(headers)) {
- // handle array case
- setHeadersFromArray(this, headers)
- } else if (headers) {
- // handle object case
- setHeadersFromObject(this, headers)
- }
-
- // copy leading arguments
- var args = new Array(Math.min(length, headerIndex))
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i]
- }
-
- return args
-}
diff --git a/node_modules/on-headers/package.json b/node_modules/on-headers/package.json
deleted file mode 100644
index 1e9bf9e..0000000
--- a/node_modules/on-headers/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "on-headers",
- "description": "Execute a listener when a response is about to write headers",
- "version": "1.0.2",
- "author": "Douglas Christopher Wilson ",
- "license": "MIT",
- "keywords": [
- "event",
- "headers",
- "http",
- "onheaders"
- ],
- "repository": "jshttp/on-headers",
- "devDependencies": {
- "eslint": "5.14.1",
- "eslint-config-standard": "12.0.0",
- "eslint-plugin-import": "2.16.0",
- "eslint-plugin-markdown": "1.0.0",
- "eslint-plugin-node": "8.0.1",
- "eslint-plugin-promise": "4.0.1",
- "eslint-plugin-standard": "4.0.0",
- "istanbul": "0.4.5",
- "mocha": "6.0.1",
- "supertest": "3.4.2"
- },
- "files": [
- "LICENSE",
- "HISTORY.md",
- "README.md",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.8"
- },
- "scripts": {
- "lint": "eslint --plugin markdown --ext js,md .",
- "test": "mocha --reporter spec --bail --check-leaks test/",
- "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
- "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
- "version": "node scripts/version-history.js && git add HISTORY.md"
- }
-}
diff --git a/node_modules/opn/index.js b/node_modules/opn/index.js
deleted file mode 100644
index 3daa162..0000000
--- a/node_modules/opn/index.js
+++ /dev/null
@@ -1,113 +0,0 @@
-'use strict';
-const {promisify} = require('util');
-const path = require('path');
-const childProcess = require('child_process');
-const isWsl = require('is-wsl');
-
-const pExecFile = promisify(childProcess.execFile);
-
-// Convert a path from WSL format to Windows format:
-// `/mnt/c/Program Files/Example/MyApp.exe` → `C:\Program Files\Example\MyApp.exe``
-const wslToWindowsPath = async path => {
- const {stdout} = await pExecFile('wslpath', ['-w', path]);
- return stdout.trim();
-};
-
-module.exports = async (target, options) => {
- if (typeof target !== 'string') {
- throw new TypeError('Expected a `target`');
- }
-
- options = {
- wait: false,
- ...options
- };
-
- let command;
- let appArguments = [];
- const cliArguments = [];
- const childProcessOptions = {};
-
- if (Array.isArray(options.app)) {
- appArguments = options.app.slice(1);
- options.app = options.app[0];
- }
-
- if (process.platform === 'darwin') {
- command = 'open';
-
- if (options.wait) {
- cliArguments.push('-W');
- }
-
- if (options.app) {
- cliArguments.push('-a', options.app);
- }
- } else if (process.platform === 'win32' || isWsl) {
- command = 'cmd' + (isWsl ? '.exe' : '');
- cliArguments.push('/c', 'start', '""', '/b');
- target = target.replace(/&/g, '^&');
-
- if (options.wait) {
- cliArguments.push('/wait');
- }
-
- if (options.app) {
- if (isWsl && options.app.startsWith('/mnt/')) {
- const windowsPath = await wslToWindowsPath(options.app);
- options.app = windowsPath;
- }
-
- cliArguments.push(options.app);
- }
-
- if (appArguments.length > 0) {
- cliArguments.push(...appArguments);
- }
- } else {
- if (options.app) {
- command = options.app;
- } else {
- const useSystemXdgOpen = process.versions.electron || process.platform === 'android';
- command = useSystemXdgOpen ? 'xdg-open' : path.join(__dirname, 'xdg-open');
- }
-
- if (appArguments.length > 0) {
- cliArguments.push(...appArguments);
- }
-
- if (!options.wait) {
- // `xdg-open` will block the process unless stdio is ignored
- // and it's detached from the parent even if it's unref'd.
- childProcessOptions.stdio = 'ignore';
- childProcessOptions.detached = true;
- }
- }
-
- cliArguments.push(target);
-
- if (process.platform === 'darwin' && appArguments.length > 0) {
- cliArguments.push('--args', ...appArguments);
- }
-
- const subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);
-
- if (options.wait) {
- return new Promise((resolve, reject) => {
- subprocess.once('error', reject);
-
- subprocess.once('close', exitCode => {
- if (exitCode > 0) {
- reject(new Error(`Exited with code ${exitCode}`));
- return;
- }
-
- resolve(subprocess);
- });
- });
- }
-
- subprocess.unref();
-
- return subprocess;
-};
diff --git a/node_modules/opn/license b/node_modules/opn/license
deleted file mode 100644
index e7af2f7..0000000
--- a/node_modules/opn/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/opn/package.json b/node_modules/opn/package.json
deleted file mode 100644
index 2a2616a..0000000
--- a/node_modules/opn/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "opn",
- "version": "6.0.0",
- "description": "Open stuff like URLs, files, executables. Cross-platform.",
- "license": "MIT",
- "repository": "sindresorhus/open",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo"
- },
- "files": [
- "index.js",
- "xdg-open"
- ],
- "keywords": [
- "app",
- "open",
- "opener",
- "opens",
- "launch",
- "start",
- "xdg-open",
- "xdg",
- "default",
- "cmd",
- "browser",
- "editor",
- "executable",
- "exe",
- "url",
- "urls",
- "arguments",
- "args",
- "spawn",
- "exec",
- "child",
- "process",
- "website",
- "file"
- ],
- "dependencies": {
- "is-wsl": "^1.1.0"
- },
- "devDependencies": {
- "ava": "^1.4.0",
- "xo": "^0.24.0"
- }
-}
diff --git a/node_modules/opn/readme.md b/node_modules/opn/readme.md
deleted file mode 100644
index 160b743..0000000
--- a/node_modules/opn/readme.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# open
-
-> Open stuff like URLs, files, executables. Cross-platform.
-
-If need this for Electron, use [`shell.openItem()`](https://electronjs.org/docs/api/shell#shellopenitemfullpath) instead.
-
-Note: The original [`open` package](https://github.com/pwnall/node-open) was recently deprecated in favor of this package, and we got the name, so this package is now named `open` instead of `opn`. If you're upgrading from the original `open` package (`open@0.0.5` or lower), keep in mind that the API is different.
-
-#### Why?
-
-- Actively maintained.
-- Supports app arguments.
-- Safer as it uses `spawn` instead of `exec`.
-- Fixes most of the open original `node-open` issues.
-- Includes the latest [`xdg-open` script](http://cgit.freedesktop.org/xdg/xdg-utils/commit/?id=c55122295c2a480fa721a9614f0e2d42b2949c18) for Linux.
-- Supports WSL paths to Windows apps under `/mnt/*`.
-
-
-## Install
-
-```
-$ npm install open
-```
-
-
-## Usage
-
-```js
-const open = require('open');
-
-// Opens the image in the default image viewer
-(async () => {
- await open('unicorn.png', {wait: true});
- console.log('The image viewer app closed');
-
- // Opens the url in the default browser
- await open('https://sindresorhus.com');
-
- // Specify the app to open in
- await open('https://sindresorhus.com', {app: 'firefox'});
-
- // Specify app arguments
- await open('https://sindresorhus.com', {app: ['google chrome', '--incognito']});
-})();
-```
-
-
-## API
-
-It uses the command `open` on macOS, `start` on Windows and `xdg-open` on other platforms.
-
-### open(target, [options])
-
-Returns a promise for the [spawned child process](https://nodejs.org/api/child_process.html#child_process_class_childprocess). You would normally not need to use this for anything, but it can be useful if you'd like to attach custom event listeners or perform other operations directly on the spawned process.
-
-#### target
-
-Type: `string`
-
-The thing you want to open. Can be a URL, file, or executable.
-
-Opens in the default app for the file type. For example, URLs opens in your default browser.
-
-#### options
-
-Type: `Object`
-
-##### wait
-
-Type: `boolean`
-Default: `false`
-
-Wait for the opened app to exit before fulfilling the promise. If `false` it's fulfilled immediately when opening the app.
-
-Note that it waits for the app to exit, not just for the window to close.
-
-On Windows, you have to explicitly specify an app for it to be able to wait.
-
-##### app
-
-Type: `string | string[]`
-
-Specify the app to open the `target` with, or an array with the app and app arguments.
-
-The app name is platform dependent. Don't hard code it in reusable modules. For example, Chrome is `google chrome` on macOS, `google-chrome` on Linux and `chrome` on Windows.
-
-You may also pass in the app's full path. For example on WSL, this can be `/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe` for the Windows installation of Chrome.
-
-
-## Related
-
-- [opn-cli](https://github.com/sindresorhus/opn-cli) - CLI for this module
-- [open-editor](https://github.com/sindresorhus/open-editor) - Open files in your editor at a specific line and column
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/opn/xdg-open b/node_modules/opn/xdg-open
deleted file mode 100755
index faaea7f..0000000
--- a/node_modules/opn/xdg-open
+++ /dev/null
@@ -1,1066 +0,0 @@
-#!/bin/sh
-#---------------------------------------------
-# xdg-open
-#
-# Utility script to open a URL in the registered default application.
-#
-# Refer to the usage() function below for usage.
-#
-# Copyright 2009-2010, Fathi Boudra
-# Copyright 2009-2010, Rex Dieter
-# Copyright 2006, Kevin Krammer
-# Copyright 2006, Jeremy White
-#
-# LICENSE:
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-# OTHER DEALINGS IN THE SOFTWARE.
-#
-#---------------------------------------------
-
-manualpage()
-{
-cat << _MANUALPAGE
-Name
-
- xdg-open -- opens a file or URL in the user's preferred
- application
-
-Synopsis
-
- xdg-open { file | URL }
-
- xdg-open { --help | --manual | --version }
-
-Description
-
- xdg-open opens a file or URL in the user's preferred
- application. If a URL is provided the URL will be opened in the
- user's preferred web browser. If a file is provided the file
- will be opened in the preferred application for files of that
- type. xdg-open supports file, ftp, http and https URLs.
-
- xdg-open is for use inside a desktop session only. It is not
- recommended to use xdg-open as root.
-
-Options
-
- --help
- Show command synopsis.
-
- --manual
- Show this manual page.
-
- --version
- Show the xdg-utils version information.
-
-Exit Codes
-
- An exit code of 0 indicates success while a non-zero exit code
- indicates failure. The following failure codes can be returned:
-
- 1
- Error in command line syntax.
-
- 2
- One of the files passed on the command line did not
- exist.
-
- 3
- A required tool could not be found.
-
- 4
- The action failed.
-
-See Also
-
- xdg-mime(1), xdg-settings(1), MIME applications associations
- specification
-
-Examples
-
-xdg-open 'http://www.freedesktop.org/'
-
- Opens the freedesktop.org website in the user's default
- browser.
-
-xdg-open /tmp/foobar.png
-
- Opens the PNG image file /tmp/foobar.png in the user's default
- image viewing application.
-_MANUALPAGE
-}
-
-usage()
-{
-cat << _USAGE
- xdg-open -- opens a file or URL in the user's preferred
- application
-
-Synopsis
-
- xdg-open { file | URL }
-
- xdg-open { --help | --manual | --version }
-
-_USAGE
-}
-
-#@xdg-utils-common@
-
-#----------------------------------------------------------------------------
-# Common utility functions included in all XDG wrapper scripts
-#----------------------------------------------------------------------------
-
-DEBUG()
-{
- [ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && return 0;
- [ ${XDG_UTILS_DEBUG_LEVEL} -lt $1 ] && return 0;
- shift
- echo "$@" >&2
-}
-
-# This handles backslashes but not quote marks.
-first_word()
-{
- read first rest
- echo "$first"
-}
-
-#-------------------------------------------------------------
-# map a binary to a .desktop file
-binary_to_desktop_file()
-{
- search="${XDG_DATA_HOME:-$HOME/.local/share}:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
- binary="`which "$1"`"
- binary="`readlink -f "$binary"`"
- base="`basename "$binary"`"
- IFS=:
- for dir in $search; do
- unset IFS
- [ "$dir" ] || continue
- [ -d "$dir/applications" ] || [ -d "$dir/applnk" ] || continue
- for file in "$dir"/applications/*.desktop "$dir"/applications/*/*.desktop "$dir"/applnk/*.desktop "$dir"/applnk/*/*.desktop; do
- [ -r "$file" ] || continue
- # Check to make sure it's worth the processing.
- grep -q "^Exec.*$base" "$file" || continue
- # Make sure it's a visible desktop file (e.g. not "preferred-web-browser.desktop").
- grep -Eq "^(NoDisplay|Hidden)=true" "$file" && continue
- command="`grep -E "^Exec(\[[^]=]*])?=" "$file" | cut -d= -f 2- | first_word`"
- command="`which "$command"`"
- if [ x"`readlink -f "$command"`" = x"$binary" ]; then
- # Fix any double slashes that got added path composition
- echo "$file" | sed -e 's,//*,/,g'
- return
- fi
- done
- done
-}
-
-#-------------------------------------------------------------
-# map a .desktop file to a binary
-desktop_file_to_binary()
-{
- search="${XDG_DATA_HOME:-$HOME/.local/share}:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
- desktop="`basename "$1"`"
- IFS=:
- for dir in $search; do
- unset IFS
- [ "$dir" ] && [ -d "$dir/applications" ] || [ -d "$dir/applnk" ] || continue
- # Check if desktop file contains -
- if [ "${desktop#*-}" != "$desktop" ]; then
- vendor=${desktop%-*}
- app=${desktop#*-}
- if [ -r $dir/applications/$vendor/$app ]; then
- file_path=$dir/applications/$vendor/$app
- elif [ -r $dir/applnk/$vendor/$app ]; then
- file_path=$dir/applnk/$vendor/$app
- fi
- fi
- if test -z "$file_path" ; then
- for indir in "$dir"/applications/ "$dir"/applications/*/ "$dir"/applnk/ "$dir"/applnk/*/; do
- file="$indir/$desktop"
- if [ -r "$file" ]; then
- file_path=$file
- break
- fi
- done
- fi
- if [ -r "$file_path" ]; then
- # Remove any arguments (%F, %f, %U, %u, etc.).
- command="`grep -E "^Exec(\[[^]=]*])?=" "$file_path" | cut -d= -f 2- | first_word`"
- command="`which "$command"`"
- readlink -f "$command"
- return
- fi
- done
-}
-
-#-------------------------------------------------------------
-# Exit script on successfully completing the desired operation
-
-exit_success()
-{
- if [ $# -gt 0 ]; then
- echo "$@"
- echo
- fi
-
- exit 0
-}
-
-
-#-----------------------------------------
-# Exit script on malformed arguments, not enough arguments
-# or missing required option.
-# prints usage information
-
-exit_failure_syntax()
-{
- if [ $# -gt 0 ]; then
- echo "xdg-open: $@" >&2
- echo "Try 'xdg-open --help' for more information." >&2
- else
- usage
- echo "Use 'man xdg-open' or 'xdg-open --manual' for additional info."
- fi
-
- exit 1
-}
-
-#-------------------------------------------------------------
-# Exit script on missing file specified on command line
-
-exit_failure_file_missing()
-{
- if [ $# -gt 0 ]; then
- echo "xdg-open: $@" >&2
- fi
-
- exit 2
-}
-
-#-------------------------------------------------------------
-# Exit script on failure to locate necessary tool applications
-
-exit_failure_operation_impossible()
-{
- if [ $# -gt 0 ]; then
- echo "xdg-open: $@" >&2
- fi
-
- exit 3
-}
-
-#-------------------------------------------------------------
-# Exit script on failure returned by a tool application
-
-exit_failure_operation_failed()
-{
- if [ $# -gt 0 ]; then
- echo "xdg-open: $@" >&2
- fi
-
- exit 4
-}
-
-#------------------------------------------------------------
-# Exit script on insufficient permission to read a specified file
-
-exit_failure_file_permission_read()
-{
- if [ $# -gt 0 ]; then
- echo "xdg-open: $@" >&2
- fi
-
- exit 5
-}
-
-#------------------------------------------------------------
-# Exit script on insufficient permission to write a specified file
-
-exit_failure_file_permission_write()
-{
- if [ $# -gt 0 ]; then
- echo "xdg-open: $@" >&2
- fi
-
- exit 6
-}
-
-check_input_file()
-{
- if [ ! -e "$1" ]; then
- exit_failure_file_missing "file '$1' does not exist"
- fi
- if [ ! -r "$1" ]; then
- exit_failure_file_permission_read "no permission to read file '$1'"
- fi
-}
-
-check_vendor_prefix()
-{
- file_label="$2"
- [ -n "$file_label" ] || file_label="filename"
- file=`basename "$1"`
- case "$file" in
- [[:alpha:]]*-*)
- return
- ;;
- esac
-
- echo "xdg-open: $file_label '$file' does not have a proper vendor prefix" >&2
- echo 'A vendor prefix consists of alpha characters ([a-zA-Z]) and is terminated' >&2
- echo 'with a dash ("-"). An example '"$file_label"' is '"'example-$file'" >&2
- echo "Use --novendor to override or 'xdg-open --manual' for additional info." >&2
- exit 1
-}
-
-check_output_file()
-{
- # if the file exists, check if it is writeable
- # if it does not exists, check if we are allowed to write on the directory
- if [ -e "$1" ]; then
- if [ ! -w "$1" ]; then
- exit_failure_file_permission_write "no permission to write to file '$1'"
- fi
- else
- DIR=`dirname "$1"`
- if [ ! -w "$DIR" ] || [ ! -x "$DIR" ]; then
- exit_failure_file_permission_write "no permission to create file '$1'"
- fi
- fi
-}
-
-#----------------------------------------
-# Checks for shared commands, e.g. --help
-
-check_common_commands()
-{
- while [ $# -gt 0 ] ; do
- parm="$1"
- shift
-
- case "$parm" in
- --help)
- usage
- echo "Use 'man xdg-open' or 'xdg-open --manual' for additional info."
- exit_success
- ;;
-
- --manual)
- manualpage
- exit_success
- ;;
-
- --version)
- echo "xdg-open 1.1.3"
- exit_success
- ;;
- esac
- done
-}
-
-check_common_commands "$@"
-
-[ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && unset XDG_UTILS_DEBUG_LEVEL;
-if [ ${XDG_UTILS_DEBUG_LEVEL-0} -lt 1 ]; then
- # Be silent
- xdg_redirect_output=" > /dev/null 2> /dev/null"
-else
- # All output to stderr
- xdg_redirect_output=" >&2"
-fi
-
-#--------------------------------------
-# Checks for known desktop environments
-# set variable DE to the desktop environments name, lowercase
-
-detectDE()
-{
- # see https://bugs.freedesktop.org/show_bug.cgi?id=34164
- unset GREP_OPTIONS
-
- if [ -n "${XDG_CURRENT_DESKTOP}" ]; then
- case "${XDG_CURRENT_DESKTOP}" in
- # only recently added to menu-spec, pre-spec X- still in use
- Cinnamon|X-Cinnamon)
- DE=cinnamon;
- ;;
- ENLIGHTENMENT)
- DE=enlightenment;
- ;;
- # GNOME, GNOME-Classic:GNOME, or GNOME-Flashback:GNOME
- GNOME*)
- DE=gnome;
- ;;
- KDE)
- DE=kde;
- ;;
- # Deepin Desktop Environments
- DEEPIN|Deepin|deepin)
- DE=dde;
- ;;
- LXDE)
- DE=lxde;
- ;;
- LXQt)
- DE=lxqt;
- ;;
- MATE)
- DE=mate;
- ;;
- XFCE)
- DE=xfce
- ;;
- X-Generic)
- DE=generic
- ;;
- esac
- fi
-
- if [ x"$DE" = x"" ]; then
- # classic fallbacks
- if [ x"$KDE_FULL_SESSION" != x"" ]; then DE=kde;
- elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
- elif [ x"$MATE_DESKTOP_SESSION_ID" != x"" ]; then DE=mate;
- elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
- elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
- elif xprop -root 2> /dev/null | grep -i '^xfce_desktop_window' >/dev/null 2>&1; then DE=xfce
- elif echo $DESKTOP | grep -q '^Enlightenment'; then DE=enlightenment;
- elif [ x"$LXQT_SESSION_CONFIG" != x"" ]; then DE=lxqt;
- fi
- fi
-
- if [ x"$DE" = x"" ]; then
- # fallback to checking $DESKTOP_SESSION
- case "$DESKTOP_SESSION" in
- gnome)
- DE=gnome;
- ;;
- LXDE|Lubuntu)
- DE=lxde;
- ;;
- MATE)
- DE=mate;
- ;;
- xfce|xfce4|'Xfce Session')
- DE=xfce;
- ;;
- esac
- fi
-
- if [ x"$DE" = x"" ]; then
- # fallback to uname output for other platforms
- case "$(uname 2>/dev/null)" in
- CYGWIN*)
- DE=cygwin;
- ;;
- Darwin)
- DE=darwin;
- ;;
- esac
- fi
-
- if [ x"$DE" = x"gnome" ]; then
- # gnome-default-applications-properties is only available in GNOME 2.x
- # but not in GNOME 3.x
- which gnome-default-applications-properties > /dev/null 2>&1 || DE="gnome3"
- fi
-
- if [ -f "$XDG_RUNTIME_DIR/flatpak-info" ]; then
- DE="flatpak"
- fi
-}
-
-#----------------------------------------------------------------------------
-# kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4
-# It also always returns 1 in KDE 3.4 and earlier
-# Simply return 0 in such case
-
-kfmclient_fix_exit_code()
-{
- version=`LC_ALL=C.UTF-8 kde-config --version 2>/dev/null | grep '^KDE'`
- major=`echo $version | sed 's/KDE.*: \([0-9]\).*/\1/'`
- minor=`echo $version | sed 's/KDE.*: [0-9]*\.\([0-9]\).*/\1/'`
- release=`echo $version | sed 's/KDE.*: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'`
- test "$major" -gt 3 && return $1
- test "$minor" -gt 5 && return $1
- test "$release" -gt 4 && return $1
- return 0
-}
-
-#----------------------------------------------------------------------------
-# Returns true if there is a graphical display attached.
-
-has_display()
-{
- if [ -n "$DISPLAY" ] || [ -n "$WAYLAND_DISPLAY" ]; then
- return 0
- else
- return 1
- fi
-}
-
-# This handles backslashes but not quote marks.
-last_word()
-{
- read first rest
- echo "$rest"
-}
-
-# Get the value of a key in a desktop file's Desktop Entry group.
-# Example: Use get_key foo.desktop Exec
-# to get the values of the Exec= key for the Desktop Entry group.
-get_key()
-{
- local file="${1}"
- local key="${2}"
- local desktop_entry=""
-
- IFS_="${IFS}"
- IFS=""
- while read line
- do
- case "$line" in
- "[Desktop Entry]")
- desktop_entry="y"
- ;;
- # Reset match flag for other groups
- "["*)
- desktop_entry=""
- ;;
- "${key}="*)
- # Only match Desktop Entry group
- if [ -n "${desktop_entry}" ]
- then
- echo "${line}" | cut -d= -f 2-
- fi
- esac
- done < "${file}"
- IFS="${IFS_}"
-}
-
-# Returns true if argument is a file:// URL or path
-is_file_url_or_path()
-{
- if echo "$1" | grep -q '^file://' \
- || ! echo "$1" | egrep -q '^[[:alpha:]+\.\-]+:'; then
- return 0
- else
- return 1
- fi
-}
-
-# If argument is a file URL, convert it to a (percent-decoded) path.
-# If not, leave it as it is.
-file_url_to_path()
-{
- local file="$1"
- if echo "$file" | grep -q '^file:///'; then
- file=${file#file://}
- file=${file%%#*}
- file=$(echo "$file" | sed -r 's/\?.*$//')
- local printf=printf
- if [ -x /usr/bin/printf ]; then
- printf=/usr/bin/printf
- fi
- file=$($printf "$(echo "$file" | sed -e 's@%\([a-f0-9A-F]\{2\}\)@\\x\1@g')")
- fi
- echo "$file"
-}
-
-open_cygwin()
-{
- cygstart "$1"
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-open_darwin()
-{
- open "$1"
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-open_kde()
-{
- if [ -n "${KDE_SESSION_VERSION}" ]; then
- case "${KDE_SESSION_VERSION}" in
- 4)
- kde-open "$1"
- ;;
- 5)
- kde-open${KDE_SESSION_VERSION} "$1"
- ;;
- esac
- else
- kfmclient exec "$1"
- kfmclient_fix_exit_code $?
- fi
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-open_dde()
-{
- if dde-open -version >/dev/null 2>&1; then
- dde-open "$1"
- else
- open_generic "$1"
- fi
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-open_gnome3()
-{
- if gio help open 2>/dev/null 1>&2; then
- gio open "$1"
- elif gvfs-open --help 2>/dev/null 1>&2; then
- gvfs-open "$1"
- else
- open_generic "$1"
- fi
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-open_gnome()
-{
- if gio help open 2>/dev/null 1>&2; then
- gio open "$1"
- elif gvfs-open --help 2>/dev/null 1>&2; then
- gvfs-open "$1"
- elif gnome-open --help 2>/dev/null 1>&2; then
- gnome-open "$1"
- else
- open_generic "$1"
- fi
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-open_mate()
-{
- if gio help open 2>/dev/null 1>&2; then
- gio open "$1"
- elif gvfs-open --help 2>/dev/null 1>&2; then
- gvfs-open "$1"
- elif mate-open --help 2>/dev/null 1>&2; then
- mate-open "$1"
- else
- open_generic "$1"
- fi
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-open_xfce()
-{
- if exo-open --help 2>/dev/null 1>&2; then
- exo-open "$1"
- elif gio help open 2>/dev/null 1>&2; then
- gio open "$1"
- elif gvfs-open --help 2>/dev/null 1>&2; then
- gvfs-open "$1"
- else
- open_generic "$1"
- fi
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-open_enlightenment()
-{
- if enlightenment_open --help 2>/dev/null 1>&2; then
- enlightenment_open "$1"
- else
- open_generic "$1"
- fi
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-open_flatpak()
-{
- gdbus call --session \
- --dest org.freedesktop.portal.Desktop \
- --object-path /org/freedesktop/portal/desktop \
- --method org.freedesktop.portal.OpenURI.OpenURI \
- "" "$1" {}
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-#-----------------------------------------
-# Recursively search .desktop file
-
-search_desktop_file()
-{
- local default="$1"
- local dir="$2"
- local target="$3"
-
- local file=""
- # look for both vendor-app.desktop, vendor/app.desktop
- if [ -r "$dir/$default" ]; then
- file="$dir/$default"
- elif [ -r "$dir/`echo $default | sed -e 's|-|/|'`" ]; then
- file="$dir/`echo $default | sed -e 's|-|/|'`"
- fi
-
- if [ -r "$file" ] ; then
- command="$(get_key "${file}" "Exec" | first_word)"
- command_exec=`which $command 2>/dev/null`
- icon="$(get_key "${file}" "Icon")"
- # FIXME: Actually LC_MESSAGES should be used as described in
- # http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s04.html
- localised_name="$(get_key "${file}" "Name")"
- set -- $(get_key "${file}" "Exec" | last_word)
- # We need to replace any occurrence of "%f", "%F" and
- # the like by the target file. We examine each
- # argument and append the modified argument to the
- # end then shift.
- local args=$#
- local replaced=0
- while [ $args -gt 0 ]; do
- case $1 in
- %[c])
- replaced=1
- arg="${localised_name}"
- shift
- set -- "$@" "$arg"
- ;;
- %[fFuU])
- replaced=1
- arg="$target"
- shift
- set -- "$@" "$arg"
- ;;
- %[i])
- replaced=1
- shift
- set -- "$@" "--icon" "$icon"
- ;;
- *)
- arg="$1"
- shift
- set -- "$@" "$arg"
- ;;
- esac
- args=$(( $args - 1 ))
- done
- [ $replaced -eq 1 ] || set -- "$@" "$target"
- "$command_exec" "$@"
-
- if [ $? -eq 0 ]; then
- exit_success
- fi
- fi
-
- for d in $dir/*/; do
- [ -d "$d" ] && search_desktop_file "$default" "$d" "$target"
- done
-}
-
-
-open_generic_xdg_mime()
-{
- filetype="$2"
- default=`xdg-mime query default "$filetype"`
- if [ -n "$default" ] ; then
- xdg_user_dir="$XDG_DATA_HOME"
- [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
-
- xdg_system_dirs="$XDG_DATA_DIRS"
- [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/
-
-DEBUG 3 "$xdg_user_dir:$xdg_system_dirs"
- for x in `echo "$xdg_user_dir:$xdg_system_dirs" | sed 's/:/ /g'`; do
- search_desktop_file "$default" "$x/applications/" "$1"
- done
- fi
-}
-
-open_generic_xdg_file_mime()
-{
- filetype=`xdg-mime query filetype "$1" | sed "s/;.*//"`
- open_generic_xdg_mime "$1" "$filetype"
-}
-
-open_generic_xdg_x_scheme_handler()
-{
- scheme="`echo $1 | sed -n 's/\(^[[:alnum:]+\.-]*\):.*$/\1/p'`"
- if [ -n $scheme ]; then
- filetype="x-scheme-handler/$scheme"
- open_generic_xdg_mime "$1" "$filetype"
- fi
-}
-
-has_single_argument()
-{
- test $# = 1
-}
-
-open_envvar()
-{
- local oldifs="$IFS"
- local browser browser_with_arg
-
- IFS=":"
- for browser in $BROWSER; do
- IFS="$oldifs"
-
- if [ -z "$browser" ]; then
- continue
- fi
-
- if echo "$browser" | grep -q %s; then
- # Avoid argument injection.
- # See https://bugs.freedesktop.org/show_bug.cgi?id=103807
- # URIs don't have IFS characters spaces anyway.
- has_single_argument $1 && $(printf "$browser" "$1")
- else
- $browser "$1"
- fi
-
- if [ $? -eq 0 ]; then
- exit_success
- fi
- done
-}
-
-open_generic()
-{
- if is_file_url_or_path "$1"; then
- local file="$(file_url_to_path "$1")"
-
- check_input_file "$file"
-
- if has_display; then
- filetype=`xdg-mime query filetype "$file" | sed "s/;.*//"`
- open_generic_xdg_mime "$file" "$filetype"
- fi
-
- if which run-mailcap 2>/dev/null 1>&2; then
- run-mailcap --action=view "$file"
- if [ $? -eq 0 ]; then
- exit_success
- fi
- fi
-
- if has_display && mimeopen -v 2>/dev/null 1>&2; then
- mimeopen -L -n "$file"
- if [ $? -eq 0 ]; then
- exit_success
- fi
- fi
- fi
-
- if has_display; then
- open_generic_xdg_x_scheme_handler "$1"
- fi
-
- if [ -n "$BROWSER" ]; then
- open_envvar "$1"
- fi
-
- # if BROWSER variable is not set, check some well known browsers instead
- if [ x"$BROWSER" = x"" ]; then
- BROWSER=www-browser:links2:elinks:links:lynx:w3m
- if has_display; then
- BROWSER=x-www-browser:firefox:iceweasel:seamonkey:mozilla:epiphany:konqueror:chromium:chromium-browser:google-chrome:$BROWSER
- fi
- fi
-
- open_envvar "$1"
-
- exit_failure_operation_impossible "no method available for opening '$1'"
-}
-
-open_lxde()
-{
-
- # pcmanfm only knows how to handle file:// urls and filepaths, it seems.
- if pcmanfm --help >/dev/null 2>&1 && is_file_url_or_path "$1"; then
- local file="$(file_url_to_path "$1")"
-
- # handle relative paths
- if ! echo "$file" | grep -q ^/; then
- file="$(pwd)/$file"
- fi
-
- pcmanfm "$file"
- else
- open_generic "$1"
- fi
-
- if [ $? -eq 0 ]; then
- exit_success
- else
- exit_failure_operation_failed
- fi
-}
-
-open_lxqt()
-{
- open_generic "$1"
-}
-
-[ x"$1" != x"" ] || exit_failure_syntax
-
-url=
-while [ $# -gt 0 ] ; do
- parm="$1"
- shift
-
- case "$parm" in
- -*)
- exit_failure_syntax "unexpected option '$parm'"
- ;;
-
- *)
- if [ -n "$url" ] ; then
- exit_failure_syntax "unexpected argument '$parm'"
- fi
- url="$parm"
- ;;
- esac
-done
-
-if [ -z "${url}" ] ; then
- exit_failure_syntax "file or URL argument missing"
-fi
-
-detectDE
-
-if [ x"$DE" = x"" ]; then
- DE=generic
-fi
-
-DEBUG 2 "Selected DE $DE"
-
-# sanitize BROWSER (avoid caling ourselves in particular)
-case "${BROWSER}" in
- *:"xdg-open"|"xdg-open":*)
- BROWSER=$(echo $BROWSER | sed -e 's|:xdg-open||g' -e 's|xdg-open:||g')
- ;;
- "xdg-open")
- BROWSER=
- ;;
-esac
-
-case "$DE" in
- kde)
- open_kde "$url"
- ;;
-
- dde)
- open_dde "$url"
- ;;
-
- gnome3|cinnamon)
- open_gnome3 "$url"
- ;;
-
- gnome)
- open_gnome "$url"
- ;;
-
- mate)
- open_mate "$url"
- ;;
-
- xfce)
- open_xfce "$url"
- ;;
-
- lxde)
- open_lxde "$url"
- ;;
-
- lxqt)
- open_lxqt "$url"
- ;;
-
- enlightenment)
- open_enlightenment "$url"
- ;;
-
- cygwin)
- open_cygwin "$url"
- ;;
-
- darwin)
- open_darwin "$url"
- ;;
-
- flatpak)
- open_flatpak "$url"
- ;;
-
- generic)
- open_generic "$url"
- ;;
-
- *)
- exit_failure_operation_impossible "no method available for opening '$url'"
- ;;
-esac
diff --git a/node_modules/parseurl/HISTORY.md b/node_modules/parseurl/HISTORY.md
deleted file mode 100644
index 8e40954..0000000
--- a/node_modules/parseurl/HISTORY.md
+++ /dev/null
@@ -1,58 +0,0 @@
-1.3.3 / 2019-04-15
-==================
-
- * Fix Node.js 0.8 return value inconsistencies
-
-1.3.2 / 2017-09-09
-==================
-
- * perf: reduce overhead for full URLs
- * perf: unroll the "fast-path" `RegExp`
-
-1.3.1 / 2016-01-17
-==================
-
- * perf: enable strict mode
-
-1.3.0 / 2014-08-09
-==================
-
- * Add `parseurl.original` for parsing `req.originalUrl` with fallback
- * Return `undefined` if `req.url` is `undefined`
-
-1.2.0 / 2014-07-21
-==================
-
- * Cache URLs based on original value
- * Remove no-longer-needed URL mis-parse work-around
- * Simplify the "fast-path" `RegExp`
-
-1.1.3 / 2014-07-08
-==================
-
- * Fix typo
-
-1.1.2 / 2014-07-08
-==================
-
- * Seriously fix Node.js 0.8 compatibility
-
-1.1.1 / 2014-07-08
-==================
-
- * Fix Node.js 0.8 compatibility
-
-1.1.0 / 2014-07-08
-==================
-
- * Incorporate URL href-only parse fast-path
-
-1.0.1 / 2014-03-08
-==================
-
- * Add missing `require`
-
-1.0.0 / 2014-03-08
-==================
-
- * Genesis from `connect`
diff --git a/node_modules/parseurl/LICENSE b/node_modules/parseurl/LICENSE
deleted file mode 100644
index 27653d3..0000000
--- a/node_modules/parseurl/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-
-(The MIT License)
-
-Copyright (c) 2014 Jonathan Ong
-Copyright (c) 2014-2017 Douglas Christopher Wilson
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/parseurl/README.md b/node_modules/parseurl/README.md
deleted file mode 100644
index 443e716..0000000
--- a/node_modules/parseurl/README.md
+++ /dev/null
@@ -1,133 +0,0 @@
-# parseurl
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-image]][node-url]
-[![Build Status][travis-image]][travis-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-Parse a URL with memoization.
-
-## Install
-
-This is a [Node.js](https://nodejs.org/en/) module available through the
-[npm registry](https://www.npmjs.com/). Installation is done using the
-[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
-
-```sh
-$ npm install parseurl
-```
-
-## API
-
-```js
-var parseurl = require('parseurl')
-```
-
-### parseurl(req)
-
-Parse the URL of the given request object (looks at the `req.url` property)
-and return the result. The result is the same as `url.parse` in Node.js core.
-Calling this function multiple times on the same `req` where `req.url` does
-not change will return a cached parsed object, rather than parsing again.
-
-### parseurl.original(req)
-
-Parse the original URL of the given request object and return the result.
-This works by trying to parse `req.originalUrl` if it is a string, otherwise
-parses `req.url`. The result is the same as `url.parse` in Node.js core.
-Calling this function multiple times on the same `req` where `req.originalUrl`
-does not change will return a cached parsed object, rather than parsing again.
-
-## Benchmark
-
-```bash
-$ npm run-script bench
-
-> parseurl@1.3.3 bench nodejs-parseurl
-> node benchmark/index.js
-
- http_parser@2.8.0
- node@10.6.0
- v8@6.7.288.46-node.13
- uv@1.21.0
- zlib@1.2.11
- ares@1.14.0
- modules@64
- nghttp2@1.32.0
- napi@3
- openssl@1.1.0h
- icu@61.1
- unicode@10.0
- cldr@33.0
- tz@2018c
-
-> node benchmark/fullurl.js
-
- Parsing URL "http://localhost:8888/foo/bar?user=tj&pet=fluffy"
-
- 4 tests completed.
-
- fasturl x 2,207,842 ops/sec ±3.76% (184 runs sampled)
- nativeurl - legacy x 507,180 ops/sec ±0.82% (191 runs sampled)
- nativeurl - whatwg x 290,044 ops/sec ±1.96% (189 runs sampled)
- parseurl x 488,907 ops/sec ±2.13% (192 runs sampled)
-
-> node benchmark/pathquery.js
-
- Parsing URL "/foo/bar?user=tj&pet=fluffy"
-
- 4 tests completed.
-
- fasturl x 3,812,564 ops/sec ±3.15% (188 runs sampled)
- nativeurl - legacy x 2,651,631 ops/sec ±1.68% (189 runs sampled)
- nativeurl - whatwg x 161,837 ops/sec ±2.26% (189 runs sampled)
- parseurl x 4,166,338 ops/sec ±2.23% (184 runs sampled)
-
-> node benchmark/samerequest.js
-
- Parsing URL "/foo/bar?user=tj&pet=fluffy" on same request object
-
- 4 tests completed.
-
- fasturl x 3,821,651 ops/sec ±2.42% (185 runs sampled)
- nativeurl - legacy x 2,651,162 ops/sec ±1.90% (187 runs sampled)
- nativeurl - whatwg x 175,166 ops/sec ±1.44% (188 runs sampled)
- parseurl x 14,912,606 ops/sec ±3.59% (183 runs sampled)
-
-> node benchmark/simplepath.js
-
- Parsing URL "/foo/bar"
-
- 4 tests completed.
-
- fasturl x 12,421,765 ops/sec ±2.04% (191 runs sampled)
- nativeurl - legacy x 7,546,036 ops/sec ±1.41% (188 runs sampled)
- nativeurl - whatwg x 198,843 ops/sec ±1.83% (189 runs sampled)
- parseurl x 24,244,006 ops/sec ±0.51% (194 runs sampled)
-
-> node benchmark/slash.js
-
- Parsing URL "/"
-
- 4 tests completed.
-
- fasturl x 17,159,456 ops/sec ±3.25% (188 runs sampled)
- nativeurl - legacy x 11,635,097 ops/sec ±3.79% (184 runs sampled)
- nativeurl - whatwg x 240,693 ops/sec ±0.83% (189 runs sampled)
- parseurl x 42,279,067 ops/sec ±0.55% (190 runs sampled)
-```
-
-## License
-
- [MIT](LICENSE)
-
-[coveralls-image]: https://badgen.net/coveralls/c/github/pillarjs/parseurl/master
-[coveralls-url]: https://coveralls.io/r/pillarjs/parseurl?branch=master
-[node-image]: https://badgen.net/npm/node/parseurl
-[node-url]: https://nodejs.org/en/download
-[npm-downloads-image]: https://badgen.net/npm/dm/parseurl
-[npm-url]: https://npmjs.org/package/parseurl
-[npm-version-image]: https://badgen.net/npm/v/parseurl
-[travis-image]: https://badgen.net/travis/pillarjs/parseurl/master
-[travis-url]: https://travis-ci.org/pillarjs/parseurl
diff --git a/node_modules/parseurl/index.js b/node_modules/parseurl/index.js
deleted file mode 100644
index ece7223..0000000
--- a/node_modules/parseurl/index.js
+++ /dev/null
@@ -1,158 +0,0 @@
-/*!
- * parseurl
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2014-2017 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module dependencies.
- * @private
- */
-
-var url = require('url')
-var parse = url.parse
-var Url = url.Url
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = parseurl
-module.exports.original = originalurl
-
-/**
- * Parse the `req` url with memoization.
- *
- * @param {ServerRequest} req
- * @return {Object}
- * @public
- */
-
-function parseurl (req) {
- var url = req.url
-
- if (url === undefined) {
- // URL is undefined
- return undefined
- }
-
- var parsed = req._parsedUrl
-
- if (fresh(url, parsed)) {
- // Return cached URL parse
- return parsed
- }
-
- // Parse the URL
- parsed = fastparse(url)
- parsed._raw = url
-
- return (req._parsedUrl = parsed)
-};
-
-/**
- * Parse the `req` original url with fallback and memoization.
- *
- * @param {ServerRequest} req
- * @return {Object}
- * @public
- */
-
-function originalurl (req) {
- var url = req.originalUrl
-
- if (typeof url !== 'string') {
- // Fallback
- return parseurl(req)
- }
-
- var parsed = req._parsedOriginalUrl
-
- if (fresh(url, parsed)) {
- // Return cached URL parse
- return parsed
- }
-
- // Parse the URL
- parsed = fastparse(url)
- parsed._raw = url
-
- return (req._parsedOriginalUrl = parsed)
-};
-
-/**
- * Parse the `str` url with fast-path short-cut.
- *
- * @param {string} str
- * @return {Object}
- * @private
- */
-
-function fastparse (str) {
- if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) {
- return parse(str)
- }
-
- var pathname = str
- var query = null
- var search = null
-
- // This takes the regexp from https://github.com/joyent/node/pull/7878
- // Which is /^(\/[^?#\s]*)(\?[^#\s]*)?$/
- // And unrolls it into a for loop
- for (var i = 1; i < str.length; i++) {
- switch (str.charCodeAt(i)) {
- case 0x3f: /* ? */
- if (search === null) {
- pathname = str.substring(0, i)
- query = str.substring(i + 1)
- search = str.substring(i)
- }
- break
- case 0x09: /* \t */
- case 0x0a: /* \n */
- case 0x0c: /* \f */
- case 0x0d: /* \r */
- case 0x20: /* */
- case 0x23: /* # */
- case 0xa0:
- case 0xfeff:
- return parse(str)
- }
- }
-
- var url = Url !== undefined
- ? new Url()
- : {}
-
- url.path = str
- url.href = str
- url.pathname = pathname
-
- if (search !== null) {
- url.query = query
- url.search = search
- }
-
- return url
-}
-
-/**
- * Determine if parsed is still fresh for url.
- *
- * @param {string} url
- * @param {object} parsedUrl
- * @return {boolean}
- * @private
- */
-
-function fresh (url, parsedUrl) {
- return typeof parsedUrl === 'object' &&
- parsedUrl !== null &&
- (Url === undefined || parsedUrl instanceof Url) &&
- parsedUrl._raw === url
-}
diff --git a/node_modules/parseurl/package.json b/node_modules/parseurl/package.json
deleted file mode 100644
index 6b443ca..0000000
--- a/node_modules/parseurl/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "parseurl",
- "description": "parse a url with memoization",
- "version": "1.3.3",
- "contributors": [
- "Douglas Christopher Wilson ",
- "Jonathan Ong (http://jongleberry.com)"
- ],
- "repository": "pillarjs/parseurl",
- "license": "MIT",
- "devDependencies": {
- "beautify-benchmark": "0.2.4",
- "benchmark": "2.1.4",
- "eslint": "5.16.0",
- "eslint-config-standard": "12.0.0",
- "eslint-plugin-import": "2.17.1",
- "eslint-plugin-node": "7.0.1",
- "eslint-plugin-promise": "4.1.1",
- "eslint-plugin-standard": "4.0.0",
- "fast-url-parser": "1.1.3",
- "istanbul": "0.4.5",
- "mocha": "6.1.3"
- },
- "files": [
- "LICENSE",
- "HISTORY.md",
- "README.md",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.8"
- },
- "scripts": {
- "bench": "node benchmark/index.js",
- "lint": "eslint .",
- "test": "mocha --check-leaks --bail --reporter spec test/",
- "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/",
- "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"
- }
-}
diff --git a/node_modules/pascalcase/LICENSE b/node_modules/pascalcase/LICENSE
deleted file mode 100644
index 65f90ac..0000000
--- a/node_modules/pascalcase/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/pascalcase/README.md b/node_modules/pascalcase/README.md
deleted file mode 100644
index fa3fd00..0000000
--- a/node_modules/pascalcase/README.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# pascalcase [](http://badge.fury.io/js/pascalcase)
-
-> Convert a string to pascal-case.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/)
-
-```sh
-$ npm i pascalcase --save
-```
-
-## Usage
-
-```js
-var pascalcase = require('pascalcase');
-
-pascalcase('a');
-//=> 'A'
-
-pascalcase('foo bar baz');
-//=> 'FooBarBaz'
-
-pascalcase('foo_bar-baz');
-//=> 'FooBarBaz'
-
-pascalcase('foo.bar.baz');
-//=> 'FooBarBaz'
-
-pascalcase('foo/bar/baz');
-//=> 'FooBarBaz'
-
-pascalcase('foo[bar)baz');
-//=> 'FooBarBaz'
-
-pascalcase('#foo+bar*baz');
-//=> 'FooBarBaz'
-
-pascalcase('$foo~bar`baz');
-//=> 'FooBarBaz'
-
-pascalcase('_foo_bar-baz-');
-//=> 'FooBarBaz'
-```
-
-## Related projects
-
-* [justified](https://github.com/jonschlinkert/justified): Wrap words to a specified length and justified the text.
-* [pad-left](https://github.com/jonschlinkert/pad-left): Left pad a string with zeros or a specified string. Fastest implementation.
-* [pad-right](https://github.com/jonschlinkert/pad-right): Right pad a string with zeros or a specified string. Fastest implementation.
-* [repeat-string](https://github.com/jonschlinkert/repeat-string): Repeat the given string n times. Fastest implementation for repeating a string.
-* [word-wrap](https://github.com/jonschlinkert/word-wrap): Wrap words to a specified length.
-
-## Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm i -d && npm test
-```
-
-## Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/pascalcase/issues/new)
-
-## Author
-
-**Jon Schlinkert**
-
-+ [github/jonschlinkert](https://github.com/jonschlinkert)
-+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-## License
-
-Copyright © 2015 Jon Schlinkert
-Released under the MIT license.
-
-***
-
-_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 19, 2015._
\ No newline at end of file
diff --git a/node_modules/pascalcase/index.js b/node_modules/pascalcase/index.js
deleted file mode 100644
index 7e8159c..0000000
--- a/node_modules/pascalcase/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*!
- * pascalcase
- *
- * Copyright (c) 2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-function pascalcase(str) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string.');
- }
- str = str.replace(/([A-Z])/g, ' $1');
- if (str.length === 1) { return str.toUpperCase(); }
- str = str.replace(/^[\W_]+|[\W_]+$/g, '').toLowerCase();
- str = str.charAt(0).toUpperCase() + str.slice(1);
- return str.replace(/[\W_]+(\w|$)/g, function (_, ch) {
- return ch.toUpperCase();
- });
-}
-
-module.exports = pascalcase;
diff --git a/node_modules/pascalcase/package.json b/node_modules/pascalcase/package.json
deleted file mode 100644
index 0576d13..0000000
--- a/node_modules/pascalcase/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "pascalcase",
- "description": "Convert a string to pascal-case.",
- "version": "0.1.1",
- "homepage": "https://github.com/jonschlinkert/pascalcase",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/pascalcase",
- "bugs": {
- "url": "https://github.com/jonschlinkert/pascalcase/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "mocha": "*",
- "should": "*"
- },
- "keywords": [
- "camelcase",
- "case",
- "casing",
- "pascal",
- "pascal-case",
- "pascalcase",
- "string"
- ],
- "verb": {
- "related": {
- "list": [
- "pad-left",
- "pad-right",
- "word-wrap",
- "repeat-string",
- "justified"
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/node_modules/path-dirname/index.js b/node_modules/path-dirname/index.js
deleted file mode 100644
index ed67817..0000000
--- a/node_modules/path-dirname/index.js
+++ /dev/null
@@ -1,143 +0,0 @@
-'use strict';
-
-var path = require('path');
-var inspect = require('util').inspect;
-
-function assertPath(path) {
- if (typeof path !== 'string') {
- throw new TypeError('Path must be a string. Received ' + inspect(path));
- }
-}
-
-function posix(path) {
- assertPath(path);
- if (path.length === 0)
- return '.';
- var code = path.charCodeAt(0);
- var hasRoot = (code === 47/*/*/);
- var end = -1;
- var matchedSlash = true;
- for (var i = path.length - 1; i >= 1; --i) {
- code = path.charCodeAt(i);
- if (code === 47/*/*/) {
- if (!matchedSlash) {
- end = i;
- break;
- }
- } else {
- // We saw the first non-path separator
- matchedSlash = false;
- }
- }
-
- if (end === -1)
- return hasRoot ? '/' : '.';
- if (hasRoot && end === 1)
- return '//';
- return path.slice(0, end);
-}
-
-function win32(path) {
- assertPath(path);
- var len = path.length;
- if (len === 0)
- return '.';
- var rootEnd = -1;
- var end = -1;
- var matchedSlash = true;
- var offset = 0;
- var code = path.charCodeAt(0);
-
- // Try to match a root
- if (len > 1) {
- if (code === 47/*/*/ || code === 92/*\*/) {
- // Possible UNC root
-
- rootEnd = offset = 1;
-
- code = path.charCodeAt(1);
- if (code === 47/*/*/ || code === 92/*\*/) {
- // Matched double path separator at beginning
- var j = 2;
- var last = j;
- // Match 1 or more non-path separators
- for (; j < len; ++j) {
- code = path.charCodeAt(j);
- if (code === 47/*/*/ || code === 92/*\*/)
- break;
- }
- if (j < len && j !== last) {
- // Matched!
- last = j;
- // Match 1 or more path separators
- for (; j < len; ++j) {
- code = path.charCodeAt(j);
- if (code !== 47/*/*/ && code !== 92/*\*/)
- break;
- }
- if (j < len && j !== last) {
- // Matched!
- last = j;
- // Match 1 or more non-path separators
- for (; j < len; ++j) {
- code = path.charCodeAt(j);
- if (code === 47/*/*/ || code === 92/*\*/)
- break;
- }
- if (j === len) {
- // We matched a UNC root only
- return path;
- }
- if (j !== last) {
- // We matched a UNC root with leftovers
-
- // Offset by 1 to include the separator after the UNC root to
- // treat it as a "normal root" on top of a (UNC) root
- rootEnd = offset = j + 1;
- }
- }
- }
- }
- } else if ((code >= 65/*A*/ && code <= 90/*Z*/) ||
- (code >= 97/*a*/ && code <= 122/*z*/)) {
- // Possible device root
-
- code = path.charCodeAt(1);
- if (path.charCodeAt(1) === 58/*:*/) {
- rootEnd = offset = 2;
- if (len > 2) {
- code = path.charCodeAt(2);
- if (code === 47/*/*/ || code === 92/*\*/)
- rootEnd = offset = 3;
- }
- }
- }
- } else if (code === 47/*/*/ || code === 92/*\*/) {
- return path[0];
- }
-
- for (var i = len - 1; i >= offset; --i) {
- code = path.charCodeAt(i);
- if (code === 47/*/*/ || code === 92/*\*/) {
- if (!matchedSlash) {
- end = i;
- break;
- }
- } else {
- // We saw the first non-path separator
- matchedSlash = false;
- }
- }
-
- if (end === -1) {
- if (rootEnd === -1)
- return '.';
- else
- end = rootEnd;
- }
- return path.slice(0, end);
-}
-
-module.exports = process.platform === 'win32' ? win32 : posix;
-module.exports.posix = posix;
-module.exports.win32 = win32;
diff --git a/node_modules/path-dirname/license b/node_modules/path-dirname/license
deleted file mode 100644
index 1981663..0000000
--- a/node_modules/path-dirname/license
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) Elan Shanker and Node.js contributors. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
diff --git a/node_modules/path-dirname/package.json b/node_modules/path-dirname/package.json
deleted file mode 100644
index eb78533..0000000
--- a/node_modules/path-dirname/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "path-dirname",
- "version": "1.0.2",
- "description": "Node.js path.dirname() ponyfill",
- "license": "MIT",
- "repository": "es128/path-dirname",
- "author": "Elan Shanker",
- "scripts": {
- "test": "node test.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "dirname",
- "dir",
- "path",
- "paths",
- "file",
- "built-in",
- "util",
- "utils",
- "core",
- "stdlib",
- "ponyfill",
- "polyfill",
- "shim"
- ]
-}
diff --git a/node_modules/path-dirname/readme.md b/node_modules/path-dirname/readme.md
deleted file mode 100644
index 652a562..0000000
--- a/node_modules/path-dirname/readme.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# path-dirname [](https://travis-ci.org/es128/path-dirname)
-
-> Node.js [`path.dirname()`](https://nodejs.org/api/path.html#path_path_dirname_path) [ponyfill](https://ponyfill.com)
-
-This was needed in order to expose `path.posix.dirname()` on Node.js v0.10
-
-## Install
-
-```
-$ npm install --save path-dirname
-```
-
-
-## Usage
-
-```js
-const pathDirname = require('path-dirname');
-
-pathDirname('/home/foo');
-//=> '/home'
-pathDirname('C:\\Users\\foo');
-//=> 'C:\\Users'
-pathDirname('foo');
-//=> '.'
-pathDirname('foo/bar');
-//=> 'foo'
-
-//Using posix version for consistent output when dealing with glob escape chars
-pathDirname.win32('C:\\Users\\foo/\\*bar');
-//=> 'C:\\Users\\foo/'
-pathDirname.posix('C:\\Users\\foo/\\*bar');
-//=> 'C:\\Users\\foo'
-```
-
-
-## API
-
-See the [`path.dirname()` docs](https://nodejs.org/api/path.html#path_path_dirname_path).
-
-### pathDirname(path)
-
-### pathDirname.posix(path)
-
-POSIX specific version.
-
-### pathDirname.win32(path)
-
-Windows specific version.
-
-
-## License
-
-MIT
diff --git a/node_modules/path-is-absolute/index.js b/node_modules/path-is-absolute/index.js
deleted file mode 100644
index 22aa6c3..0000000
--- a/node_modules/path-is-absolute/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-function posix(path) {
- return path.charAt(0) === '/';
-}
-
-function win32(path) {
- // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
- var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
- var result = splitDeviceRe.exec(path);
- var device = result[1] || '';
- var isUnc = Boolean(device && device.charAt(1) !== ':');
-
- // UNC paths are always absolute
- return Boolean(result[2] || isUnc);
-}
-
-module.exports = process.platform === 'win32' ? win32 : posix;
-module.exports.posix = posix;
-module.exports.win32 = win32;
diff --git a/node_modules/path-is-absolute/license b/node_modules/path-is-absolute/license
deleted file mode 100644
index 654d0bf..0000000
--- a/node_modules/path-is-absolute/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/path-is-absolute/package.json b/node_modules/path-is-absolute/package.json
deleted file mode 100644
index 91196d5..0000000
--- a/node_modules/path-is-absolute/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "path-is-absolute",
- "version": "1.0.1",
- "description": "Node.js 0.12 path.isAbsolute() ponyfill",
- "license": "MIT",
- "repository": "sindresorhus/path-is-absolute",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "xo && node test.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "path",
- "paths",
- "file",
- "dir",
- "absolute",
- "isabsolute",
- "is-absolute",
- "built-in",
- "util",
- "utils",
- "core",
- "ponyfill",
- "polyfill",
- "shim",
- "is",
- "detect",
- "check"
- ],
- "devDependencies": {
- "xo": "^0.16.0"
- }
-}
diff --git a/node_modules/path-is-absolute/readme.md b/node_modules/path-is-absolute/readme.md
deleted file mode 100644
index 8dbdf5f..0000000
--- a/node_modules/path-is-absolute/readme.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# path-is-absolute [](https://travis-ci.org/sindresorhus/path-is-absolute)
-
-> Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) [ponyfill](https://ponyfill.com)
-
-
-## Install
-
-```
-$ npm install --save path-is-absolute
-```
-
-
-## Usage
-
-```js
-const pathIsAbsolute = require('path-is-absolute');
-
-// Running on Linux
-pathIsAbsolute('/home/foo');
-//=> true
-pathIsAbsolute('C:/Users/foo');
-//=> false
-
-// Running on Windows
-pathIsAbsolute('C:/Users/foo');
-//=> true
-pathIsAbsolute('/home/foo');
-//=> false
-
-// Running on any OS
-pathIsAbsolute.posix('/home/foo');
-//=> true
-pathIsAbsolute.posix('C:/Users/foo');
-//=> false
-pathIsAbsolute.win32('C:/Users/foo');
-//=> true
-pathIsAbsolute.win32('/home/foo');
-//=> false
-```
-
-
-## API
-
-See the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path).
-
-### pathIsAbsolute(path)
-
-### pathIsAbsolute.posix(path)
-
-POSIX specific version.
-
-### pathIsAbsolute.win32(path)
-
-Windows specific version.
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/pause-stream/.npmignore b/node_modules/pause-stream/.npmignore
deleted file mode 100644
index 13abef4..0000000
--- a/node_modules/pause-stream/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-node_modules/*
-npm_debug.log
diff --git a/node_modules/pause-stream/LICENSE b/node_modules/pause-stream/LICENSE
deleted file mode 100644
index 6a477d4..0000000
--- a/node_modules/pause-stream/LICENSE
+++ /dev/null
@@ -1,231 +0,0 @@
-Dual Licensed MIT and Apache 2
-
-The MIT License
-
-Copyright (c) 2013 Dominic Tarr
-
-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.
-
-
- -----------------------------------------------------------------------
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright (c) 2013 Dominic Tarr
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
\ No newline at end of file
diff --git a/node_modules/pause-stream/index.js b/node_modules/pause-stream/index.js
deleted file mode 100644
index 0e0bf96..0000000
--- a/node_modules/pause-stream/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-//through@2 handles this by default!
-module.exports = require('through')
-
diff --git a/node_modules/pause-stream/package.json b/node_modules/pause-stream/package.json
deleted file mode 100644
index 2a22646..0000000
--- a/node_modules/pause-stream/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "pause-stream",
- "version": "0.0.11",
- "description": "a ThroughStream that strictly buffers all readable events when paused.",
- "main": "index.js",
- "directories": {
- "test": "test"
- },
- "devDependencies": {
- "stream-tester": "0.0.2",
- "stream-spec": "~0.2.0"
- },
- "scripts": {
- "test": "node test/index.js && node test/pause-end.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/dominictarr/pause-stream.git"
- },
- "keywords": [
- "stream",
- "pipe",
- "pause",
- "drain",
- "buffer"
- ],
- "author": "Dominic Tarr (dominictarr.com)",
- "license": [
- "MIT",
- "Apache2"
- ],
- "dependencies": {
- "through": "~2.3"
- }
-}
diff --git a/node_modules/pause-stream/readme.markdown b/node_modules/pause-stream/readme.markdown
deleted file mode 100644
index 2366939..0000000
--- a/node_modules/pause-stream/readme.markdown
+++ /dev/null
@@ -1,29 +0,0 @@
-# PauseStream
-
-This is a `Stream` that will strictly buffer when paused.
-Connect it to anything you need buffered.
-
-``` js
- var ps = require('pause-stream')();
-
- badlyBehavedStream.pipe(ps.pause())
-
- aLittleLater(function (err, data) {
- ps.pipe(createAnotherStream(data))
- ps.resume()
- })
-```
-
-`PauseStream` will buffer whenever paused.
-it will buffer when yau have called `pause` manually.
-but also when it's downstream `dest.write()===false`.
-it will attempt to drain the buffer when you call resume
-or the downstream emits `'drain'`
-
-`PauseStream` is tested using [stream-spec](https://github.com/dominictarr/stream-spec)
-and [stream-tester](https://github.com/dominictarr/stream-tester)
-
-This is now the default case of
-[through](https://github.com/dominictarr/through)
-
-https://github.com/dominictarr/pause-stream/commit/4a6fe3dc2c11091b1efbfde912e0473719ed9cc0
diff --git a/node_modules/pause-stream/test/index.js b/node_modules/pause-stream/test/index.js
deleted file mode 100644
index db8778d..0000000
--- a/node_modules/pause-stream/test/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var spec = require('stream-spec')
-var tester = require('stream-tester')
-var ps = require('..')()
-
-spec(ps)
- .through({strict: false})
- .validateOnExit()
-
-var master = tester.createConsistent
-
-tester.createRandomStream(1000) //1k random numbers
- .pipe(master = tester.createConsistentStream())
- .pipe(tester.createUnpauseStream())
- .pipe(ps)
- .pipe(tester.createPauseStream())
- .pipe(master.createSlave())
-
diff --git a/node_modules/pause-stream/test/pause-end.js b/node_modules/pause-stream/test/pause-end.js
deleted file mode 100644
index a6c27ef..0000000
--- a/node_modules/pause-stream/test/pause-end.js
+++ /dev/null
@@ -1,33 +0,0 @@
-
-var pause = require('..')
-var assert = require('assert')
-
-var ps = pause()
-var read = [], ended = false
-
-ps.on('data', function (i) {
- read.push(i)
-})
-
-ps.on('end', function () {
- ended = true
-})
-
-assert.deepEqual(read, [])
-
-ps.write(0)
-ps.write(1)
-ps.write(2)
-
-assert.deepEqual(read, [0, 1, 2])
-
-ps.pause()
-
-assert.deepEqual(read, [0, 1, 2])
-
-ps.end()
-assert.equal(ended, false)
-ps.resume()
-assert.equal(ended, true)
-
-
diff --git a/node_modules/posix-character-classes/LICENSE b/node_modules/posix-character-classes/LICENSE
deleted file mode 100644
index b11cb79..0000000
--- a/node_modules/posix-character-classes/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016-2017, Jon Schlinkert
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/posix-character-classes/README.md b/node_modules/posix-character-classes/README.md
deleted file mode 100644
index 894ae23..0000000
--- a/node_modules/posix-character-classes/README.md
+++ /dev/null
@@ -1,103 +0,0 @@
-# posix-character-classes [](https://www.npmjs.com/package/posix-character-classes) [](https://npmjs.org/package/posix-character-classes) [](https://npmjs.org/package/posix-character-classes) [](https://travis-ci.org/jonschlinkert/posix-character-classes)
-
-> POSIX character classes for creating regular expressions.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save posix-character-classes
-```
-
-Install with [yarn](https://yarnpkg.com):
-
-```sh
-$ yarn add posix-character-classes
-```
-
-## Usage
-
-```js
-var posix = require('posix-character-classes');
-console.log(posix.alpha);
-//=> 'A-Za-z'
-```
-
-## POSIX Character classes
-
-The POSIX standard supports the following classes or categories of charactersh (note that classes must be defined within brackets):
-
-| **POSIX class** | **Equivalent to** | **Matches** |
-| --- | --- | --- |
-| `[:alnum:]` | `[A-Za-z0-9]` | digits, uppercase and lowercase letters |
-| `[:alpha:]` | `[A-Za-z]` | upper- and lowercase letters |
-| `[:ascii:]` | `[\x00-\x7F]` | ASCII characters |
-| `[:blank:]` | `[ \t]` | space and TAB characters only |
-| `[:cntrl:]` | `[\x00-\x1F\x7F]` | Control characters |
-| `[:digit:]` | `[0-9]` | digits |
-| `[:graph:]` | `[^[:cntrl:]]` | graphic characters (all characters which have graphic representation) |
-| `[:lower:]` | `[a-z]` | lowercase letters |
-| `[:print:]` | `[[:graph] ]` | graphic characters and space |
-| `[:punct:]` | ``[-!"#$%&'()*+,./:;<=>?@[]^_`{ | }~]`` | all punctuation characters (all graphic characters except letters and digits) |
-| `[:space:]` | `[ \t\n\r\f\v]` | all blank (whitespace) characters, including spaces, tabs, new lines, carriage returns, form feeds, and vertical tabs |
-| `[:upper:]` | `[A-Z]` | uppercase letters |
-| `[:word:]` | `[A-Za-z0-9_]` | word characters |
-| `[:xdigit:]` | `[0-9A-Fa-f]` | hexadecimal digits |
-
-## Examples
-
-* `a[[:digit:]]b` matches `a0b`, `a1b`, ..., `a9b`.
-* `a[:digit:]b` is invalid, character classes must be enclosed in brackets
-* `[[:digit:]abc]` matches any digit, as well as `a`, `b`, and `c`.
-* `[abc[:digit:]]` is the same as the previous, matching any digit, as well as `a`, `b`, and `c`
-* `[^ABZ[:lower:]]` matches any character except lowercase letters, `A`, `B`, and `Z`.
-
-## About
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 20, 2017._
-
-
-
\ No newline at end of file
diff --git a/node_modules/posix-character-classes/index.js b/node_modules/posix-character-classes/index.js
deleted file mode 100644
index 19f1c98..0000000
--- a/node_modules/posix-character-classes/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-/**
- * POSIX character classes
- */
-
-module.exports = {
- alnum: 'a-zA-Z0-9',
- alpha: 'a-zA-Z',
- ascii: '\\x00-\\x7F',
- blank: ' \\t',
- cntrl: '\\x00-\\x1F\\x7F',
- digit: '0-9',
- graph: '\\x21-\\x7E',
- lower: 'a-z',
- print: '\\x20-\\x7E ',
- punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~',
- space: ' \\t\\r\\n\\v\\f',
- upper: 'A-Z',
- word: 'A-Za-z0-9_',
- xdigit: 'A-Fa-f0-9'
-};
diff --git a/node_modules/posix-character-classes/package.json b/node_modules/posix-character-classes/package.json
deleted file mode 100644
index acce4ba..0000000
--- a/node_modules/posix-character-classes/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "posix-character-classes",
- "description": "POSIX character classes for creating regular expressions.",
- "version": "0.1.1",
- "homepage": "https://github.com/jonschlinkert/posix-character-classes",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/posix-character-classes",
- "bugs": {
- "url": "https://github.com/jonschlinkert/posix-character-classes/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "gulp-format-md": "^0.1.12",
- "mocha": "^3.2.0"
- },
- "keywords": [
- "character",
- "classes",
- "posix"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "reflinks": [
- "verb",
- "verb-generate-readme"
- ],
- "lint": {
- "reflinks": true
- },
- "related-list": [
- "micromatch",
- "nanomatch",
- "extglob",
- "expand-brackets"
- ]
- }
-}
diff --git a/node_modules/process-nextick-args/index.js b/node_modules/process-nextick-args/index.js
deleted file mode 100644
index 3eecf11..0000000
--- a/node_modules/process-nextick-args/index.js
+++ /dev/null
@@ -1,45 +0,0 @@
-'use strict';
-
-if (typeof process === 'undefined' ||
- !process.version ||
- process.version.indexOf('v0.') === 0 ||
- process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
- module.exports = { nextTick: nextTick };
-} else {
- module.exports = process
-}
-
-function nextTick(fn, arg1, arg2, arg3) {
- if (typeof fn !== 'function') {
- throw new TypeError('"callback" argument must be a function');
- }
- var len = arguments.length;
- var args, i;
- switch (len) {
- case 0:
- case 1:
- return process.nextTick(fn);
- case 2:
- return process.nextTick(function afterTickOne() {
- fn.call(null, arg1);
- });
- case 3:
- return process.nextTick(function afterTickTwo() {
- fn.call(null, arg1, arg2);
- });
- case 4:
- return process.nextTick(function afterTickThree() {
- fn.call(null, arg1, arg2, arg3);
- });
- default:
- args = new Array(len - 1);
- i = 0;
- while (i < args.length) {
- args[i++] = arguments[i];
- }
- return process.nextTick(function afterTick() {
- fn.apply(null, args);
- });
- }
-}
-
diff --git a/node_modules/process-nextick-args/license.md b/node_modules/process-nextick-args/license.md
deleted file mode 100644
index c67e353..0000000
--- a/node_modules/process-nextick-args/license.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (c) 2015 Calvin Metcalf
-
-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/process-nextick-args/package.json b/node_modules/process-nextick-args/package.json
deleted file mode 100644
index 6070b72..0000000
--- a/node_modules/process-nextick-args/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "name": "process-nextick-args",
- "version": "2.0.1",
- "description": "process.nextTick but always with args",
- "main": "index.js",
- "files": [
- "index.js"
- ],
- "scripts": {
- "test": "node test.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/calvinmetcalf/process-nextick-args.git"
- },
- "author": "",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/calvinmetcalf/process-nextick-args/issues"
- },
- "homepage": "https://github.com/calvinmetcalf/process-nextick-args",
- "devDependencies": {
- "tap": "~0.2.6"
- }
-}
diff --git a/node_modules/process-nextick-args/readme.md b/node_modules/process-nextick-args/readme.md
deleted file mode 100644
index ecb432c..0000000
--- a/node_modules/process-nextick-args/readme.md
+++ /dev/null
@@ -1,18 +0,0 @@
-process-nextick-args
-=====
-
-[](https://travis-ci.org/calvinmetcalf/process-nextick-args)
-
-```bash
-npm install --save process-nextick-args
-```
-
-Always be able to pass arguments to process.nextTick, no matter the platform
-
-```js
-var pna = require('process-nextick-args');
-
-pna.nextTick(function (a, b, c) {
- console.log(a, b, c);
-}, 'step', 3, 'profit');
-```
diff --git a/node_modules/proxy-middleware/.npmignore b/node_modules/proxy-middleware/.npmignore
deleted file mode 100644
index e216ae5..0000000
--- a/node_modules/proxy-middleware/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/node_modules
-/test
diff --git a/node_modules/proxy-middleware/.travis.yml b/node_modules/proxy-middleware/.travis.yml
deleted file mode 100644
index df63076..0000000
--- a/node_modules/proxy-middleware/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
- - "0.8"
diff --git a/node_modules/proxy-middleware/LICENSE b/node_modules/proxy-middleware/LICENSE
deleted file mode 100644
index 0bbb53e..0000000
--- a/node_modules/proxy-middleware/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-The MIT License (Expat)
-
-Copyright (c) 2014 Andrew Kelley
-
-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/proxy-middleware/README.md b/node_modules/proxy-middleware/README.md
deleted file mode 100644
index 6bcb842..0000000
--- a/node_modules/proxy-middleware/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-[](http://travis-ci.org/andrewrk/node-proxy-middleware)
-
-### Usage:
-
-```js
-var connect = require('connect');
-var url = require('url');
-var proxy = require('proxy-middleware');
-
-var app = connect();
-app.use('/api', proxy(url.parse('https://example.com/endpoint')));
-// now requests to '/api/x/y/z' are proxied to 'https://example.com/endpoint/x/y/z'
-
-//same as example above but also uses a short hand string only parameter
-app.use('/api-string-only', proxy('https://example.com/endpoint'));
-```
-
-### Documentation:
-
-`proxyMiddleware(options)`
-
-`options` allows any options that are permitted on the [`http`](http://nodejs.org/api/http.html#http_http_request_options_callback) or [`https`](http://nodejs.org/api/https.html#https_https_request_options_callback) request options.
-
-Other options:
-- `route`: you can pass the route for connect middleware within the options, as well.
-- `via`: by default no [via header](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.45) is added. If you pass `true` for this option the local hostname will be used for the via header. You can also pass a string for this option in which case that will be used for the via header.
-- `cookieRewrite`: this option can be used to support cookies via the proxy by rewriting the cookie domain to that of the proxy server. By default cookie domains are not rewritten. The `cookieRewrite` option works as the `via` option - if you pass `true` the local hostname will be used, and if you pass a string that will be used as the rewritten cookie domain.
-- `preserveHost`: When enabled, this option will pass the Host: line from the incoming request to the proxied host. Default: `false`.
-
-### Usage with route:
-
-```js
-var proxyOptions = url.parse('https://example.com/endpoint');
-proxyOptions.route = '/api';
-
-var middleWares = [proxy(proxyOptions) /*, ...*/];
-
-// Grunt connect uses this method
-connect(middleWares);
-```
diff --git a/node_modules/proxy-middleware/index.js b/node_modules/proxy-middleware/index.js
deleted file mode 100644
index b8c573e..0000000
--- a/node_modules/proxy-middleware/index.js
+++ /dev/null
@@ -1,141 +0,0 @@
-var os = require('os');
-var http = require('http');
-var https = require('https');
-var owns = {}.hasOwnProperty;
-
-module.exports = function proxyMiddleware(options) {
- //enable ability to quickly pass a url for shorthand setup
- if(typeof options === 'string'){
- options = require('url').parse(options);
- }
-
- var httpLib = options.protocol === 'https:' ? https : http;
- var request = httpLib.request;
-
- options = options || {};
- options.hostname = options.hostname;
- options.port = options.port;
- options.pathname = options.pathname || '/';
-
- return function (req, resp, next) {
- var url = req.url;
- // You can pass the route within the options, as well
- if (typeof options.route === 'string') {
- if (url === options.route) {
- url = '';
- } else if (url.slice(0, options.route.length) === options.route) {
- url = url.slice(options.route.length);
- } else {
- return next();
- }
- }
-
- //options for this request
- var opts = extend({}, options);
- if (url && url.charAt(0) === '?') { // prevent /api/resource/?offset=0
- if (options.pathname.length > 1 && options.pathname.charAt(options.pathname.length - 1) === '/') {
- opts.path = options.pathname.substring(0, options.pathname.length - 1) + url;
- } else {
- opts.path = options.pathname + url;
- }
- } else if (url) {
- opts.path = slashJoin(options.pathname, url);
- } else {
- opts.path = options.pathname;
- }
- opts.method = req.method;
- opts.headers = options.headers ? merge(req.headers, options.headers) : req.headers;
-
- applyViaHeader(req.headers, opts, opts.headers);
-
- if (!options.preserveHost) {
- // Forwarding the host breaks dotcloud
- delete opts.headers.host;
- }
-
- var myReq = request(opts, function (myRes) {
- var statusCode = myRes.statusCode
- , headers = myRes.headers
- , location = headers.location;
- // Fix the location
- if (((statusCode > 300 && statusCode < 304) || statusCode === 201) && location && location.indexOf(options.href) > -1) {
- // absoulte path
- headers.location = location.replace(options.href, slashJoin('/', slashJoin((options.route || ''), '')));
- }
- applyViaHeader(myRes.headers, opts, myRes.headers);
- rewriteCookieHosts(myRes.headers, opts, myRes.headers, req);
- resp.writeHead(myRes.statusCode, myRes.headers);
- myRes.on('error', function (err) {
- next(err);
- });
- myRes.pipe(resp);
- });
- myReq.on('error', function (err) {
- next(err);
- });
- if (!req.readable) {
- myReq.end();
- } else {
- req.pipe(myReq);
- }
- };
-};
-
-function applyViaHeader(existingHeaders, opts, applyTo) {
- if (!opts.via) return;
-
- var viaName = (true === opts.via) ? os.hostname() : opts.via;
- var viaHeader = '1.1 ' + viaName;
- if(existingHeaders.via) {
- viaHeader = existingHeaders.via + ', ' + viaHeader;
- }
-
- applyTo.via = viaHeader;
-}
-
-function rewriteCookieHosts(existingHeaders, opts, applyTo, req) {
- if (!opts.cookieRewrite || !owns.call(existingHeaders, 'set-cookie')) {
- return;
- }
-
- var existingCookies = existingHeaders['set-cookie'],
- rewrittenCookies = [],
- rewriteHostname = (true === opts.cookieRewrite) ? os.hostname() : opts.cookieRewrite;
-
- if (!Array.isArray(existingCookies)) {
- existingCookies = [ existingCookies ];
- }
-
- for (var i = 0; i < existingCookies.length; i++) {
- var rewrittenCookie = existingCookies[i].replace(/(Domain)=[a-z\.-_]*?(;|$)/gi, '$1=' + rewriteHostname + '$2');
-
- if (!req.connection.encrypted) {
- rewrittenCookie = rewrittenCookie.replace(/;\s*?(Secure)/i, '');
- }
- rewrittenCookies.push(rewrittenCookie);
- }
-
- applyTo['set-cookie'] = rewrittenCookies;
-}
-
-function slashJoin(p1, p2) {
- var trailing_slash = false;
-
- if (p1.length && p1[p1.length - 1] === '/') { trailing_slash = true; }
- if (trailing_slash && p2.length && p2[0] === '/') {p2 = p2.substring(1); }
-
- return p1 + p2;
-}
-
-function extend(obj, src) {
- for (var key in src) if (owns.call(src, key)) obj[key] = src[key];
- return obj;
-}
-
-//merges data without changing state in either argument
-function merge(src1, src2) {
- var merged = {};
- extend(merged, src1);
- extend(merged, src2);
- return merged;
-}
diff --git a/node_modules/proxy-middleware/package.json b/node_modules/proxy-middleware/package.json
deleted file mode 100644
index af7170e..0000000
--- a/node_modules/proxy-middleware/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "proxy-middleware",
- "version": "0.15.0",
- "description": "http(s) proxy as connect middleware",
- "main": "index.js",
- "scripts": {
- "test": "mocha"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/andrewrk/connect-proxy"
- },
- "keywords": [
- "connect",
- "proxy",
- "middleware",
- "https",
- "http",
- "ssl"
- ],
- "author": "Andrew Kelley",
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- },
- "devDependencies": {
- "connect": "~3.3.5",
- "mocha": "~2.2.5",
- "serve-static": "~1.9.3"
- }
-}
diff --git a/node_modules/range-parser/HISTORY.md b/node_modules/range-parser/HISTORY.md
deleted file mode 100644
index 70a973d..0000000
--- a/node_modules/range-parser/HISTORY.md
+++ /dev/null
@@ -1,56 +0,0 @@
-1.2.1 / 2019-05-10
-==================
-
- * Improve error when `str` is not a string
-
-1.2.0 / 2016-06-01
-==================
-
- * Add `combine` option to combine overlapping ranges
-
-1.1.0 / 2016-05-13
-==================
-
- * Fix incorrectly returning -1 when there is at least one valid range
- * perf: remove internal function
-
-1.0.3 / 2015-10-29
-==================
-
- * perf: enable strict mode
-
-1.0.2 / 2014-09-08
-==================
-
- * Support Node.js 0.6
-
-1.0.1 / 2014-09-07
-==================
-
- * Move repository to jshttp
-
-1.0.0 / 2013-12-11
-==================
-
- * Add repository to package.json
- * Add MIT license
-
-0.0.4 / 2012-06-17
-==================
-
- * Change ret -1 for unsatisfiable and -2 when invalid
-
-0.0.3 / 2012-06-17
-==================
-
- * Fix last-byte-pos default to len - 1
-
-0.0.2 / 2012-06-14
-==================
-
- * Add `.type`
-
-0.0.1 / 2012-06-11
-==================
-
- * Initial release
diff --git a/node_modules/range-parser/LICENSE b/node_modules/range-parser/LICENSE
deleted file mode 100644
index 3599954..0000000
--- a/node_modules/range-parser/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2012-2014 TJ Holowaychuk
-Copyright (c) 2015-2016 Douglas Christopher Wilson
-
-```js
-var parseRange = require('range-parser')
-```
-
-### parseRange(size, header, options)
-
-Parse the given `header` string where `size` is the maximum size of the resource.
-An array of ranges will be returned or negative numbers indicating an error parsing.
-
- * `-2` signals a malformed header string
- * `-1` signals an unsatisfiable range
-
-
-
-```js
-// parse header from request
-var range = parseRange(size, req.headers.range)
-
-// the type of the range
-if (range.type === 'bytes') {
- // the ranges
- range.forEach(function (r) {
- // do something with r.start and r.end
- })
-}
-```
-
-#### Options
-
-These properties are accepted in the options object.
-
-##### combine
-
-Specifies if overlapping & adjacent ranges should be combined, defaults to `false`.
-When `true`, ranges will be combined and returned as if they were specified that
-way in the header.
-
-
-
-```js
-parseRange(100, 'bytes=50-55,0-10,5-10,56-60', { combine: true })
-// => [
-// { start: 0, end: 10 },
-// { start: 50, end: 60 }
-// ]
-```
-
-## License
-
-[MIT](LICENSE)
-
-[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/range-parser/master
-[coveralls-url]: https://coveralls.io/r/jshttp/range-parser?branch=master
-[node-image]: https://badgen.net/npm/node/range-parser
-[node-url]: https://nodejs.org/en/download
-[npm-downloads-image]: https://badgen.net/npm/dm/range-parser
-[npm-url]: https://npmjs.org/package/range-parser
-[npm-version-image]: https://badgen.net/npm/v/range-parser
-[travis-image]: https://badgen.net/travis/jshttp/range-parser/master
-[travis-url]: https://travis-ci.org/jshttp/range-parser
diff --git a/node_modules/range-parser/index.js b/node_modules/range-parser/index.js
deleted file mode 100644
index b7dc5c0..0000000
--- a/node_modules/range-parser/index.js
+++ /dev/null
@@ -1,162 +0,0 @@
-/*!
- * range-parser
- * Copyright(c) 2012-2014 TJ Holowaychuk
- * Copyright(c) 2015-2016 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = rangeParser
-
-/**
- * Parse "Range" header `str` relative to the given file `size`.
- *
- * @param {Number} size
- * @param {String} str
- * @param {Object} [options]
- * @return {Array}
- * @public
- */
-
-function rangeParser (size, str, options) {
- if (typeof str !== 'string') {
- throw new TypeError('argument str must be a string')
- }
-
- var index = str.indexOf('=')
-
- if (index === -1) {
- return -2
- }
-
- // split the range string
- var arr = str.slice(index + 1).split(',')
- var ranges = []
-
- // add ranges type
- ranges.type = str.slice(0, index)
-
- // parse all ranges
- for (var i = 0; i < arr.length; i++) {
- var range = arr[i].split('-')
- var start = parseInt(range[0], 10)
- var end = parseInt(range[1], 10)
-
- // -nnn
- if (isNaN(start)) {
- start = size - end
- end = size - 1
- // nnn-
- } else if (isNaN(end)) {
- end = size - 1
- }
-
- // limit last-byte-pos to current length
- if (end > size - 1) {
- end = size - 1
- }
-
- // invalid or unsatisifiable
- if (isNaN(start) || isNaN(end) || start > end || start < 0) {
- continue
- }
-
- // add range
- ranges.push({
- start: start,
- end: end
- })
- }
-
- if (ranges.length < 1) {
- // unsatisifiable
- return -1
- }
-
- return options && options.combine
- ? combineRanges(ranges)
- : ranges
-}
-
-/**
- * Combine overlapping & adjacent ranges.
- * @private
- */
-
-function combineRanges (ranges) {
- var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart)
-
- for (var j = 0, i = 1; i < ordered.length; i++) {
- var range = ordered[i]
- var current = ordered[j]
-
- if (range.start > current.end + 1) {
- // next range
- ordered[++j] = range
- } else if (range.end > current.end) {
- // extend range
- current.end = range.end
- current.index = Math.min(current.index, range.index)
- }
- }
-
- // trim ordered array
- ordered.length = j + 1
-
- // generate combined range
- var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex)
-
- // copy ranges type
- combined.type = ranges.type
-
- return combined
-}
-
-/**
- * Map function to add index value to ranges.
- * @private
- */
-
-function mapWithIndex (range, index) {
- return {
- start: range.start,
- end: range.end,
- index: index
- }
-}
-
-/**
- * Map function to remove index value from ranges.
- * @private
- */
-
-function mapWithoutIndex (range) {
- return {
- start: range.start,
- end: range.end
- }
-}
-
-/**
- * Sort function to sort ranges by index.
- * @private
- */
-
-function sortByRangeIndex (a, b) {
- return a.index - b.index
-}
-
-/**
- * Sort function to sort ranges by start position.
- * @private
- */
-
-function sortByRangeStart (a, b) {
- return a.start - b.start
-}
diff --git a/node_modules/range-parser/package.json b/node_modules/range-parser/package.json
deleted file mode 100644
index abea6d8..0000000
--- a/node_modules/range-parser/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "range-parser",
- "author": "TJ Holowaychuk (http://tjholowaychuk.com)",
- "description": "Range header field string parser",
- "version": "1.2.1",
- "contributors": [
- "Douglas Christopher Wilson ",
- "James Wyatt Cready ",
- "Jonathan Ong (http://jongleberry.com)"
- ],
- "license": "MIT",
- "keywords": [
- "range",
- "parser",
- "http"
- ],
- "repository": "jshttp/range-parser",
- "devDependencies": {
- "deep-equal": "1.0.1",
- "eslint": "5.16.0",
- "eslint-config-standard": "12.0.0",
- "eslint-plugin-markdown": "1.0.0",
- "eslint-plugin-import": "2.17.2",
- "eslint-plugin-node": "8.0.1",
- "eslint-plugin-promise": "4.1.1",
- "eslint-plugin-standard": "4.0.0",
- "mocha": "6.1.4",
- "nyc": "14.1.1"
- },
- "files": [
- "HISTORY.md",
- "LICENSE",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "lint": "eslint --plugin markdown --ext js,md .",
- "test": "mocha --reporter spec",
- "test-cov": "nyc --reporter=html --reporter=text npm test",
- "test-travis": "nyc --reporter=text npm test"
- }
-}
diff --git a/node_modules/readable-stream/.travis.yml b/node_modules/readable-stream/.travis.yml
deleted file mode 100644
index f62cdac..0000000
--- a/node_modules/readable-stream/.travis.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-sudo: false
-language: node_js
-before_install:
- - (test $NPM_LEGACY && npm install -g npm@2 && npm install -g npm@3) || true
-notifications:
- email: false
-matrix:
- fast_finish: true
- include:
- - node_js: '0.8'
- env: NPM_LEGACY=true
- - node_js: '0.10'
- env: NPM_LEGACY=true
- - node_js: '0.11'
- env: NPM_LEGACY=true
- - node_js: '0.12'
- env: NPM_LEGACY=true
- - node_js: 1
- env: NPM_LEGACY=true
- - node_js: 2
- env: NPM_LEGACY=true
- - node_js: 3
- env: NPM_LEGACY=true
- - node_js: 4
- - node_js: 5
- - node_js: 6
- - node_js: 7
- - node_js: 8
- - node_js: 9
-script: "npm run test"
-env:
- global:
- - secure: rE2Vvo7vnjabYNULNyLFxOyt98BoJexDqsiOnfiD6kLYYsiQGfr/sbZkPMOFm9qfQG7pjqx+zZWZjGSswhTt+626C0t/njXqug7Yps4c3dFblzGfreQHp7wNX5TFsvrxd6dAowVasMp61sJcRnB2w8cUzoe3RAYUDHyiHktwqMc=
- - secure: g9YINaKAdMatsJ28G9jCGbSaguXCyxSTy+pBO6Ch0Cf57ZLOTka3HqDj8p3nV28LUIHZ3ut5WO43CeYKwt4AUtLpBS3a0dndHdY6D83uY6b2qh5hXlrcbeQTq2cvw2y95F7hm4D1kwrgZ7ViqaKggRcEupAL69YbJnxeUDKWEdI=
diff --git a/node_modules/readable-stream/CONTRIBUTING.md b/node_modules/readable-stream/CONTRIBUTING.md
deleted file mode 100644
index f478d58..0000000
--- a/node_modules/readable-stream/CONTRIBUTING.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Developer's Certificate of Origin 1.1
-
-By making a contribution to this project, I certify that:
-
-* (a) The contribution was created in whole or in part by me and I
- have the right to submit it under the open source license
- indicated in the file; or
-
-* (b) The contribution is based upon previous work that, to the best
- of my knowledge, is covered under an appropriate open source
- license and I have the right under that license to submit that
- work with modifications, whether created in whole or in part
- by me, under the same open source license (unless I am
- permitted to submit under a different license), as indicated
- in the file; or
-
-* (c) The contribution was provided directly to me by some other
- person who certified (a), (b) or (c) and I have not modified
- it.
-
-* (d) I understand and agree that this project and the contribution
- are public and that a record of the contribution (including all
- personal information I submit with it, including my sign-off) is
- maintained indefinitely and may be redistributed consistent with
- this project or the open source license(s) involved.
-
-## Moderation Policy
-
-The [Node.js Moderation Policy] applies to this WG.
-
-## Code of Conduct
-
-The [Node.js Code of Conduct][] applies to this WG.
-
-[Node.js Code of Conduct]:
-https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md
-[Node.js Moderation Policy]:
-https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md
diff --git a/node_modules/readable-stream/GOVERNANCE.md b/node_modules/readable-stream/GOVERNANCE.md
deleted file mode 100644
index 16ffb93..0000000
--- a/node_modules/readable-stream/GOVERNANCE.md
+++ /dev/null
@@ -1,136 +0,0 @@
-### Streams Working Group
-
-The Node.js Streams is jointly governed by a Working Group
-(WG)
-that is responsible for high-level guidance of the project.
-
-The WG has final authority over this project including:
-
-* Technical direction
-* Project governance and process (including this policy)
-* Contribution policy
-* GitHub repository hosting
-* Conduct guidelines
-* Maintaining the list of additional Collaborators
-
-For the current list of WG members, see the project
-[README.md](./README.md#current-project-team-members).
-
-### Collaborators
-
-The readable-stream GitHub repository is
-maintained by the WG and additional Collaborators who are added by the
-WG on an ongoing basis.
-
-Individuals making significant and valuable contributions are made
-Collaborators and given commit-access to the project. These
-individuals are identified by the WG and their addition as
-Collaborators is discussed during the WG meeting.
-
-_Note:_ If you make a significant contribution and are not considered
-for commit-access log an issue or contact a WG member directly and it
-will be brought up in the next WG meeting.
-
-Modifications of the contents of the readable-stream repository are
-made on
-a collaborative basis. Anybody with a GitHub account may propose a
-modification via pull request and it will be considered by the project
-Collaborators. All pull requests must be reviewed and accepted by a
-Collaborator with sufficient expertise who is able to take full
-responsibility for the change. In the case of pull requests proposed
-by an existing Collaborator, an additional Collaborator is required
-for sign-off. Consensus should be sought if additional Collaborators
-participate and there is disagreement around a particular
-modification. See _Consensus Seeking Process_ below for further detail
-on the consensus model used for governance.
-
-Collaborators may opt to elevate significant or controversial
-modifications, or modifications that have not found consensus to the
-WG for discussion by assigning the ***WG-agenda*** tag to a pull
-request or issue. The WG should serve as the final arbiter where
-required.
-
-For the current list of Collaborators, see the project
-[README.md](./README.md#members).
-
-### WG Membership
-
-WG seats are not time-limited. There is no fixed size of the WG.
-However, the expected target is between 6 and 12, to ensure adequate
-coverage of important areas of expertise, balanced with the ability to
-make decisions efficiently.
-
-There is no specific set of requirements or qualifications for WG
-membership beyond these rules.
-
-The WG may add additional members to the WG by unanimous consensus.
-
-A WG member may be removed from the WG by voluntary resignation, or by
-unanimous consensus of all other WG members.
-
-Changes to WG membership should be posted in the agenda, and may be
-suggested as any other agenda item (see "WG Meetings" below).
-
-If an addition or removal is proposed during a meeting, and the full
-WG is not in attendance to participate, then the addition or removal
-is added to the agenda for the subsequent meeting. This is to ensure
-that all members are given the opportunity to participate in all
-membership decisions. If a WG member is unable to attend a meeting
-where a planned membership decision is being made, then their consent
-is assumed.
-
-No more than 1/3 of the WG members may be affiliated with the same
-employer. If removal or resignation of a WG member, or a change of
-employment by a WG member, creates a situation where more than 1/3 of
-the WG membership shares an employer, then the situation must be
-immediately remedied by the resignation or removal of one or more WG
-members affiliated with the over-represented employer(s).
-
-### WG Meetings
-
-The WG meets occasionally on a Google Hangout On Air. A designated moderator
-approved by the WG runs the meeting. Each meeting should be
-published to YouTube.
-
-Items are added to the WG agenda that are considered contentious or
-are modifications of governance, contribution policy, WG membership,
-or release process.
-
-The intention of the agenda is not to approve or review all patches;
-that should happen continuously on GitHub and be handled by the larger
-group of Collaborators.
-
-Any community member or contributor can ask that something be added to
-the next meeting's agenda by logging a GitHub Issue. Any Collaborator,
-WG member or the moderator can add the item to the agenda by adding
-the ***WG-agenda*** tag to the issue.
-
-Prior to each WG meeting the moderator will share the Agenda with
-members of the WG. WG members can add any items they like to the
-agenda at the beginning of each meeting. The moderator and the WG
-cannot veto or remove items.
-
-The WG may invite persons or representatives from certain projects to
-participate in a non-voting capacity.
-
-The moderator is responsible for summarizing the discussion of each
-agenda item and sends it as a pull request after the meeting.
-
-### Consensus Seeking Process
-
-The WG follows a
-[Consensus
-Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making)
-decision-making model.
-
-When an agenda item has appeared to reach a consensus the moderator
-will ask "Does anyone object?" as a final call for dissent from the
-consensus.
-
-If an agenda item cannot reach a consensus a WG member can call for
-either a closing vote or a vote to table the issue to the next
-meeting. The call for a vote must be seconded by a majority of the WG
-or else the discussion will continue. Simple majority wins.
-
-Note that changes to WG membership require a majority consensus. See
-"WG Membership" above.
diff --git a/node_modules/readable-stream/LICENSE b/node_modules/readable-stream/LICENSE
deleted file mode 100644
index 2873b3b..0000000
--- a/node_modules/readable-stream/LICENSE
+++ /dev/null
@@ -1,47 +0,0 @@
-Node.js is licensed for use as follows:
-
-"""
-Copyright Node.js contributors. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-"""
-
-This license applies to parts of Node.js originating from the
-https://github.com/joyent/node repository:
-
-"""
-Copyright Joyent, Inc. and other Node contributors. All rights reserved.
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-"""
diff --git a/node_modules/readable-stream/README.md b/node_modules/readable-stream/README.md
deleted file mode 100644
index f1c5a93..0000000
--- a/node_modules/readable-stream/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# readable-stream
-
-***Node-core v8.17.0 streams for userland*** [](https://travis-ci.org/nodejs/readable-stream)
-
-
-[](https://nodei.co/npm/readable-stream/)
-[](https://nodei.co/npm/readable-stream/)
-
-
-[](https://saucelabs.com/u/readable-stream)
-
-```bash
-npm install --save readable-stream
-```
-
-***Node-core streams for userland***
-
-This package is a mirror of the Streams2 and Streams3 implementations in
-Node-core.
-
-Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.17.0/docs/api/stream.html).
-
-If you want to guarantee a stable streams base, regardless of what version of
-Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).
-
-As of version 2.0.0 **readable-stream** uses semantic versioning.
-
-# Streams Working Group
-
-`readable-stream` is maintained by the Streams Working Group, which
-oversees the development and maintenance of the Streams API within
-Node.js. The responsibilities of the Streams Working Group include:
-
-* Addressing stream issues on the Node.js issue tracker.
-* Authoring and editing stream documentation within the Node.js project.
-* Reviewing changes to stream subclasses within the Node.js project.
-* Redirecting changes to streams from the Node.js project to this
- project.
-* Assisting in the implementation of stream providers within Node.js.
-* Recommending versions of `readable-stream` to be included in Node.js.
-* Messaging about the future of streams to give the community advance
- notice of changes.
-
-
-## Team Members
-
-* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com>
- - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B
-* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com>
- - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242
-* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) <rod@vagg.org>
- - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D
-* **Sam Newman** ([@sonewman](https://github.com/sonewman)) <newmansam@outlook.com>
-* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com>
-* **Domenic Denicola** ([@domenic](https://github.com/domenic)) <d@domenic.me>
-* **Matteo Collina** ([@mcollina](https://github.com/mcollina)) <matteo.collina@gmail.com>
- - Release GPG key: 3ABC01543F22DD2239285CDD818674489FBC127E
-* **Irina Shestak** ([@lrlna](https://github.com/lrlna)) <shestak.irina@gmail.com>
diff --git a/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md
deleted file mode 100644
index 83275f1..0000000
--- a/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# streams WG Meeting 2015-01-30
-
-## Links
-
-* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg
-* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106
-* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/
-
-## Agenda
-
-Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting.
-
-* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105)
-* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101)
-* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102)
-* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99)
-
-## Minutes
-
-### adopt a charter
-
-* group: +1's all around
-
-### What versioning scheme should be adopted?
-* group: +1’s 3.0.0
-* domenic+group: pulling in patches from other sources where appropriate
-* mikeal: version independently, suggesting versions for io.js
-* mikeal+domenic: work with TC to notify in advance of changes
-simpler stream creation
-
-### streamline creation of streams
-* sam: streamline creation of streams
-* domenic: nice simple solution posted
- but, we lose the opportunity to change the model
- may not be backwards incompatible (double check keys)
-
- **action item:** domenic will check
-
-### remove implicit flowing of streams on(‘data’)
-* add isFlowing / isPaused
-* mikeal: worrying that we’re documenting polyfill methods – confuses users
-* domenic: more reflective API is probably good, with warning labels for users
-* new section for mad scientists (reflective stream access)
-* calvin: name the “third state”
-* mikeal: maybe borrow the name from whatwg?
-* domenic: we’re missing the “third state”
-* consensus: kind of difficult to name the third state
-* mikeal: figure out differences in states / compat
-* mathias: always flow on data – eliminates third state
- * explore what it breaks
-
-**action items:**
-* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream)
-* ask rod/build for infrastructure
-* **chris**: explore the “flow on data” approach
-* add isPaused/isFlowing
-* add new docs section
-* move isPaused to that section
-
-
diff --git a/node_modules/readable-stream/duplex-browser.js b/node_modules/readable-stream/duplex-browser.js
deleted file mode 100644
index f8b2db8..0000000
--- a/node_modules/readable-stream/duplex-browser.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib/_stream_duplex.js');
diff --git a/node_modules/readable-stream/duplex.js b/node_modules/readable-stream/duplex.js
deleted file mode 100644
index 46924cb..0000000
--- a/node_modules/readable-stream/duplex.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./readable').Duplex
diff --git a/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/readable-stream/lib/_stream_duplex.js
deleted file mode 100644
index 57003c3..0000000
--- a/node_modules/readable-stream/lib/_stream_duplex.js
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// a duplex stream is just a stream that is both readable and writable.
-// Since JS doesn't have multiple prototypal inheritance, this class
-// prototypally inherits from Readable, and then parasitically from
-// Writable.
-
-'use strict';
-
-/**/
-
-var pna = require('process-nextick-args');
-/**/
-
-/**/
-var objectKeys = Object.keys || function (obj) {
- var keys = [];
- for (var key in obj) {
- keys.push(key);
- }return keys;
-};
-/**/
-
-module.exports = Duplex;
-
-/**/
-var util = Object.create(require('core-util-is'));
-util.inherits = require('inherits');
-/**/
-
-var Readable = require('./_stream_readable');
-var Writable = require('./_stream_writable');
-
-util.inherits(Duplex, Readable);
-
-{
- // avoid scope creep, the keys array can then be collected
- var keys = objectKeys(Writable.prototype);
- for (var v = 0; v < keys.length; v++) {
- var method = keys[v];
- if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
- }
-}
-
-function Duplex(options) {
- if (!(this instanceof Duplex)) return new Duplex(options);
-
- Readable.call(this, options);
- Writable.call(this, options);
-
- if (options && options.readable === false) this.readable = false;
-
- if (options && options.writable === false) this.writable = false;
-
- this.allowHalfOpen = true;
- if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
-
- this.once('end', onend);
-}
-
-Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function () {
- return this._writableState.highWaterMark;
- }
-});
-
-// the no-half-open enforcer
-function onend() {
- // if we allow half-open state, or if the writable side ended,
- // then we're ok.
- if (this.allowHalfOpen || this._writableState.ended) return;
-
- // no more data can be written.
- // But allow more writes to happen in this tick.
- pna.nextTick(onEndNT, this);
-}
-
-function onEndNT(self) {
- self.end();
-}
-
-Object.defineProperty(Duplex.prototype, 'destroyed', {
- get: function () {
- if (this._readableState === undefined || this._writableState === undefined) {
- return false;
- }
- return this._readableState.destroyed && this._writableState.destroyed;
- },
- set: function (value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (this._readableState === undefined || this._writableState === undefined) {
- return;
- }
-
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._readableState.destroyed = value;
- this._writableState.destroyed = value;
- }
-});
-
-Duplex.prototype._destroy = function (err, cb) {
- this.push(null);
- this.end();
-
- pna.nextTick(cb, err);
-};
\ No newline at end of file
diff --git a/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/readable-stream/lib/_stream_passthrough.js
deleted file mode 100644
index 612edb4..0000000
--- a/node_modules/readable-stream/lib/_stream_passthrough.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// a passthrough stream.
-// basically just the most minimal sort of Transform stream.
-// Every written chunk gets output as-is.
-
-'use strict';
-
-module.exports = PassThrough;
-
-var Transform = require('./_stream_transform');
-
-/**/
-var util = Object.create(require('core-util-is'));
-util.inherits = require('inherits');
-/**/
-
-util.inherits(PassThrough, Transform);
-
-function PassThrough(options) {
- if (!(this instanceof PassThrough)) return new PassThrough(options);
-
- Transform.call(this, options);
-}
-
-PassThrough.prototype._transform = function (chunk, encoding, cb) {
- cb(null, chunk);
-};
\ No newline at end of file
diff --git a/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/readable-stream/lib/_stream_readable.js
deleted file mode 100644
index 3af95cb..0000000
--- a/node_modules/readable-stream/lib/_stream_readable.js
+++ /dev/null
@@ -1,1019 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-'use strict';
-
-/**/
-
-var pna = require('process-nextick-args');
-/**/
-
-module.exports = Readable;
-
-/**/
-var isArray = require('isarray');
-/**/
-
-/**/
-var Duplex;
-/**/
-
-Readable.ReadableState = ReadableState;
-
-/**/
-var EE = require('events').EventEmitter;
-
-var EElistenerCount = function (emitter, type) {
- return emitter.listeners(type).length;
-};
-/**/
-
-/**/
-var Stream = require('./internal/streams/stream');
-/**/
-
-/**/
-
-var Buffer = require('safe-buffer').Buffer;
-var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
-function _uint8ArrayToBuffer(chunk) {
- return Buffer.from(chunk);
-}
-function _isUint8Array(obj) {
- return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
-}
-
-/**/
-
-/**/
-var util = Object.create(require('core-util-is'));
-util.inherits = require('inherits');
-/**/
-
-/**/
-var debugUtil = require('util');
-var debug = void 0;
-if (debugUtil && debugUtil.debuglog) {
- debug = debugUtil.debuglog('stream');
-} else {
- debug = function () {};
-}
-/**/
-
-var BufferList = require('./internal/streams/BufferList');
-var destroyImpl = require('./internal/streams/destroy');
-var StringDecoder;
-
-util.inherits(Readable, Stream);
-
-var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
-
-function prependListener(emitter, event, fn) {
- // Sadly this is not cacheable as some libraries bundle their own
- // event emitter implementation with them.
- if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
-
- // This is a hack to make sure that our error handler is attached before any
- // userland ones. NEVER DO THIS. This is here only because this code needs
- // to continue to work with older versions of Node.js that do not include
- // the prependListener() method. The goal is to eventually remove this hack.
- if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
-}
-
-function ReadableState(options, stream) {
- Duplex = Duplex || require('./_stream_duplex');
-
- options = options || {};
-
- // Duplex streams are both readable and writable, but share
- // the same options object.
- // However, some cases require setting options to different
- // values for the readable and the writable sides of the duplex stream.
- // These options can be provided separately as readableXXX and writableXXX.
- var isDuplex = stream instanceof Duplex;
-
- // object stream flag. Used to make read(n) ignore n and to
- // make all the buffer merging and length checks go away
- this.objectMode = !!options.objectMode;
-
- if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
-
- // the point at which it stops calling _read() to fill the buffer
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
- var hwm = options.highWaterMark;
- var readableHwm = options.readableHighWaterMark;
- var defaultHwm = this.objectMode ? 16 : 16 * 1024;
-
- if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
-
- // cast to ints.
- this.highWaterMark = Math.floor(this.highWaterMark);
-
- // A linked list is used to store data chunks instead of an array because the
- // linked list can remove elements from the beginning faster than
- // array.shift()
- this.buffer = new BufferList();
- this.length = 0;
- this.pipes = null;
- this.pipesCount = 0;
- this.flowing = null;
- this.ended = false;
- this.endEmitted = false;
- this.reading = false;
-
- // a flag to be able to tell if the event 'readable'/'data' is emitted
- // immediately, or on a later tick. We set this to true at first, because
- // any actions that shouldn't happen until "later" should generally also
- // not happen before the first read call.
- this.sync = true;
-
- // whenever we return null, then we set a flag to say
- // that we're awaiting a 'readable' event emission.
- this.needReadable = false;
- this.emittedReadable = false;
- this.readableListening = false;
- this.resumeScheduled = false;
-
- // has it been destroyed
- this.destroyed = false;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // the number of writers that are awaiting a drain event in .pipe()s
- this.awaitDrain = 0;
-
- // if true, a maybeReadMore has been scheduled
- this.readingMore = false;
-
- this.decoder = null;
- this.encoding = null;
- if (options.encoding) {
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
- this.decoder = new StringDecoder(options.encoding);
- this.encoding = options.encoding;
- }
-}
-
-function Readable(options) {
- Duplex = Duplex || require('./_stream_duplex');
-
- if (!(this instanceof Readable)) return new Readable(options);
-
- this._readableState = new ReadableState(options, this);
-
- // legacy
- this.readable = true;
-
- if (options) {
- if (typeof options.read === 'function') this._read = options.read;
-
- if (typeof options.destroy === 'function') this._destroy = options.destroy;
- }
-
- Stream.call(this);
-}
-
-Object.defineProperty(Readable.prototype, 'destroyed', {
- get: function () {
- if (this._readableState === undefined) {
- return false;
- }
- return this._readableState.destroyed;
- },
- set: function (value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (!this._readableState) {
- return;
- }
-
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._readableState.destroyed = value;
- }
-});
-
-Readable.prototype.destroy = destroyImpl.destroy;
-Readable.prototype._undestroy = destroyImpl.undestroy;
-Readable.prototype._destroy = function (err, cb) {
- this.push(null);
- cb(err);
-};
-
-// Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-Readable.prototype.push = function (chunk, encoding) {
- var state = this._readableState;
- var skipChunkCheck;
-
- if (!state.objectMode) {
- if (typeof chunk === 'string') {
- encoding = encoding || state.defaultEncoding;
- if (encoding !== state.encoding) {
- chunk = Buffer.from(chunk, encoding);
- encoding = '';
- }
- skipChunkCheck = true;
- }
- } else {
- skipChunkCheck = true;
- }
-
- return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
-};
-
-// Unshift should *always* be something directly out of read()
-Readable.prototype.unshift = function (chunk) {
- return readableAddChunk(this, chunk, null, true, false);
-};
-
-function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
- var state = stream._readableState;
- if (chunk === null) {
- state.reading = false;
- onEofChunk(stream, state);
- } else {
- var er;
- if (!skipChunkCheck) er = chunkInvalid(state, chunk);
- if (er) {
- stream.emit('error', er);
- } else if (state.objectMode || chunk && chunk.length > 0) {
- if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
- chunk = _uint8ArrayToBuffer(chunk);
- }
-
- if (addToFront) {
- if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
- } else if (state.ended) {
- stream.emit('error', new Error('stream.push() after EOF'));
- } else {
- state.reading = false;
- if (state.decoder && !encoding) {
- chunk = state.decoder.write(chunk);
- if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
- } else {
- addChunk(stream, state, chunk, false);
- }
- }
- } else if (!addToFront) {
- state.reading = false;
- }
- }
-
- return needMoreData(state);
-}
-
-function addChunk(stream, state, chunk, addToFront) {
- if (state.flowing && state.length === 0 && !state.sync) {
- stream.emit('data', chunk);
- stream.read(0);
- } else {
- // update the buffer info.
- state.length += state.objectMode ? 1 : chunk.length;
- if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
-
- if (state.needReadable) emitReadable(stream);
- }
- maybeReadMore(stream, state);
-}
-
-function chunkInvalid(state, chunk) {
- var er;
- if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- return er;
-}
-
-// if it's past the high water mark, we can push in some more.
-// Also, if we have no data yet, we can stand some
-// more bytes. This is to work around cases where hwm=0,
-// such as the repl. Also, if the push() triggered a
-// readable event, and the user called read(largeNumber) such that
-// needReadable was set, then we ought to push more, so that another
-// 'readable' event will be triggered.
-function needMoreData(state) {
- return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
-}
-
-Readable.prototype.isPaused = function () {
- return this._readableState.flowing === false;
-};
-
-// backwards compatibility.
-Readable.prototype.setEncoding = function (enc) {
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
- this._readableState.decoder = new StringDecoder(enc);
- this._readableState.encoding = enc;
- return this;
-};
-
-// Don't raise the hwm > 8MB
-var MAX_HWM = 0x800000;
-function computeNewHighWaterMark(n) {
- if (n >= MAX_HWM) {
- n = MAX_HWM;
- } else {
- // Get the next highest power of 2 to prevent increasing hwm excessively in
- // tiny amounts
- n--;
- n |= n >>> 1;
- n |= n >>> 2;
- n |= n >>> 4;
- n |= n >>> 8;
- n |= n >>> 16;
- n++;
- }
- return n;
-}
-
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function howMuchToRead(n, state) {
- if (n <= 0 || state.length === 0 && state.ended) return 0;
- if (state.objectMode) return 1;
- if (n !== n) {
- // Only flow one buffer at a time
- if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
- }
- // If we're asking for more than the current hwm, then raise the hwm.
- if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
- if (n <= state.length) return n;
- // Don't have enough
- if (!state.ended) {
- state.needReadable = true;
- return 0;
- }
- return state.length;
-}
-
-// you can override either this method, or the async _read(n) below.
-Readable.prototype.read = function (n) {
- debug('read', n);
- n = parseInt(n, 10);
- var state = this._readableState;
- var nOrig = n;
-
- if (n !== 0) state.emittedReadable = false;
-
- // if we're doing read(0) to trigger a readable event, but we
- // already have a bunch of data in the buffer, then just trigger
- // the 'readable' event and move on.
- if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
- debug('read: emitReadable', state.length, state.ended);
- if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
- return null;
- }
-
- n = howMuchToRead(n, state);
-
- // if we've ended, and we're now clear, then finish it up.
- if (n === 0 && state.ended) {
- if (state.length === 0) endReadable(this);
- return null;
- }
-
- // All the actual chunk generation logic needs to be
- // *below* the call to _read. The reason is that in certain
- // synthetic stream cases, such as passthrough streams, _read
- // may be a completely synchronous operation which may change
- // the state of the read buffer, providing enough data when
- // before there was *not* enough.
- //
- // So, the steps are:
- // 1. Figure out what the state of things will be after we do
- // a read from the buffer.
- //
- // 2. If that resulting state will trigger a _read, then call _read.
- // Note that this may be asynchronous, or synchronous. Yes, it is
- // deeply ugly to write APIs this way, but that still doesn't mean
- // that the Readable class should behave improperly, as streams are
- // designed to be sync/async agnostic.
- // Take note if the _read call is sync or async (ie, if the read call
- // has returned yet), so that we know whether or not it's safe to emit
- // 'readable' etc.
- //
- // 3. Actually pull the requested chunks out of the buffer and return.
-
- // if we need a readable event, then we need to do some reading.
- var doRead = state.needReadable;
- debug('need readable', doRead);
-
- // if we currently have less than the highWaterMark, then also read some
- if (state.length === 0 || state.length - n < state.highWaterMark) {
- doRead = true;
- debug('length less than watermark', doRead);
- }
-
- // however, if we've ended, then there's no point, and if we're already
- // reading, then it's unnecessary.
- if (state.ended || state.reading) {
- doRead = false;
- debug('reading or ended', doRead);
- } else if (doRead) {
- debug('do read');
- state.reading = true;
- state.sync = true;
- // if the length is currently zero, then we *need* a readable event.
- if (state.length === 0) state.needReadable = true;
- // call internal read method
- this._read(state.highWaterMark);
- state.sync = false;
- // If _read pushed data synchronously, then `reading` will be false,
- // and we need to re-evaluate how much data we can return to the user.
- if (!state.reading) n = howMuchToRead(nOrig, state);
- }
-
- var ret;
- if (n > 0) ret = fromList(n, state);else ret = null;
-
- if (ret === null) {
- state.needReadable = true;
- n = 0;
- } else {
- state.length -= n;
- }
-
- if (state.length === 0) {
- // If we have nothing in the buffer, then we want to know
- // as soon as we *do* get something into the buffer.
- if (!state.ended) state.needReadable = true;
-
- // If we tried to read() past the EOF, then emit end on the next tick.
- if (nOrig !== n && state.ended) endReadable(this);
- }
-
- if (ret !== null) this.emit('data', ret);
-
- return ret;
-};
-
-function onEofChunk(stream, state) {
- if (state.ended) return;
- if (state.decoder) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) {
- state.buffer.push(chunk);
- state.length += state.objectMode ? 1 : chunk.length;
- }
- }
- state.ended = true;
-
- // emit 'readable' now to make sure it gets picked up.
- emitReadable(stream);
-}
-
-// Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow. This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-function emitReadable(stream) {
- var state = stream._readableState;
- state.needReadable = false;
- if (!state.emittedReadable) {
- debug('emitReadable', state.flowing);
- state.emittedReadable = true;
- if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
- }
-}
-
-function emitReadable_(stream) {
- debug('emit readable');
- stream.emit('readable');
- flow(stream);
-}
-
-// at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data. that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-function maybeReadMore(stream, state) {
- if (!state.readingMore) {
- state.readingMore = true;
- pna.nextTick(maybeReadMore_, stream, state);
- }
-}
-
-function maybeReadMore_(stream, state) {
- var len = state.length;
- while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
- debug('maybeReadMore read 0');
- stream.read(0);
- if (len === state.length)
- // didn't get any data, stop spinning.
- break;else len = state.length;
- }
- state.readingMore = false;
-}
-
-// abstract method. to be overridden in specific implementation classes.
-// call cb(er, data) where data is <= n in length.
-// for virtual (non-string, non-buffer) streams, "length" is somewhat
-// arbitrary, and perhaps not very meaningful.
-Readable.prototype._read = function (n) {
- this.emit('error', new Error('_read() is not implemented'));
-};
-
-Readable.prototype.pipe = function (dest, pipeOpts) {
- var src = this;
- var state = this._readableState;
-
- switch (state.pipesCount) {
- case 0:
- state.pipes = dest;
- break;
- case 1:
- state.pipes = [state.pipes, dest];
- break;
- default:
- state.pipes.push(dest);
- break;
- }
- state.pipesCount += 1;
- debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
-
- var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
-
- var endFn = doEnd ? onend : unpipe;
- if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
-
- dest.on('unpipe', onunpipe);
- function onunpipe(readable, unpipeInfo) {
- debug('onunpipe');
- if (readable === src) {
- if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
- unpipeInfo.hasUnpiped = true;
- cleanup();
- }
- }
- }
-
- function onend() {
- debug('onend');
- dest.end();
- }
-
- // when the dest drains, it reduces the awaitDrain counter
- // on the source. This would be more elegant with a .once()
- // handler in flow(), but adding and removing repeatedly is
- // too slow.
- var ondrain = pipeOnDrain(src);
- dest.on('drain', ondrain);
-
- var cleanedUp = false;
- function cleanup() {
- debug('cleanup');
- // cleanup event handlers once the pipe is broken
- dest.removeListener('close', onclose);
- dest.removeListener('finish', onfinish);
- dest.removeListener('drain', ondrain);
- dest.removeListener('error', onerror);
- dest.removeListener('unpipe', onunpipe);
- src.removeListener('end', onend);
- src.removeListener('end', unpipe);
- src.removeListener('data', ondata);
-
- cleanedUp = true;
-
- // if the reader is waiting for a drain event from this
- // specific writer, then it would cause it to never start
- // flowing again.
- // So, if this is awaiting a drain, then we just call it now.
- // If we don't know, then assume that we are waiting for one.
- if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
- }
-
- // If the user pushes more data while we're writing to dest then we'll end up
- // in ondata again. However, we only want to increase awaitDrain once because
- // dest will only emit one 'drain' event for the multiple writes.
- // => Introduce a guard on increasing awaitDrain.
- var increasedAwaitDrain = false;
- src.on('data', ondata);
- function ondata(chunk) {
- debug('ondata');
- increasedAwaitDrain = false;
- var ret = dest.write(chunk);
- if (false === ret && !increasedAwaitDrain) {
- // If the user unpiped during `dest.write()`, it is possible
- // to get stuck in a permanently paused state if that write
- // also returned false.
- // => Check whether `dest` is still a piping destination.
- if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
- debug('false write response, pause', state.awaitDrain);
- state.awaitDrain++;
- increasedAwaitDrain = true;
- }
- src.pause();
- }
- }
-
- // if the dest has an error, then stop piping into it.
- // however, don't suppress the throwing behavior for this.
- function onerror(er) {
- debug('onerror', er);
- unpipe();
- dest.removeListener('error', onerror);
- if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
- }
-
- // Make sure our error handler is attached before userland ones.
- prependListener(dest, 'error', onerror);
-
- // Both close and finish should trigger unpipe, but only once.
- function onclose() {
- dest.removeListener('finish', onfinish);
- unpipe();
- }
- dest.once('close', onclose);
- function onfinish() {
- debug('onfinish');
- dest.removeListener('close', onclose);
- unpipe();
- }
- dest.once('finish', onfinish);
-
- function unpipe() {
- debug('unpipe');
- src.unpipe(dest);
- }
-
- // tell the dest that it's being piped to
- dest.emit('pipe', src);
-
- // start the flow if it hasn't been started already.
- if (!state.flowing) {
- debug('pipe resume');
- src.resume();
- }
-
- return dest;
-};
-
-function pipeOnDrain(src) {
- return function () {
- var state = src._readableState;
- debug('pipeOnDrain', state.awaitDrain);
- if (state.awaitDrain) state.awaitDrain--;
- if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
- state.flowing = true;
- flow(src);
- }
- };
-}
-
-Readable.prototype.unpipe = function (dest) {
- var state = this._readableState;
- var unpipeInfo = { hasUnpiped: false };
-
- // if we're not piping anywhere, then do nothing.
- if (state.pipesCount === 0) return this;
-
- // just one destination. most common case.
- if (state.pipesCount === 1) {
- // passed in one, but it's not the right one.
- if (dest && dest !== state.pipes) return this;
-
- if (!dest) dest = state.pipes;
-
- // got a match.
- state.pipes = null;
- state.pipesCount = 0;
- state.flowing = false;
- if (dest) dest.emit('unpipe', this, unpipeInfo);
- return this;
- }
-
- // slow case. multiple pipe destinations.
-
- if (!dest) {
- // remove all.
- var dests = state.pipes;
- var len = state.pipesCount;
- state.pipes = null;
- state.pipesCount = 0;
- state.flowing = false;
-
- for (var i = 0; i < len; i++) {
- dests[i].emit('unpipe', this, { hasUnpiped: false });
- }return this;
- }
-
- // try to find the right one.
- var index = indexOf(state.pipes, dest);
- if (index === -1) return this;
-
- state.pipes.splice(index, 1);
- state.pipesCount -= 1;
- if (state.pipesCount === 1) state.pipes = state.pipes[0];
-
- dest.emit('unpipe', this, unpipeInfo);
-
- return this;
-};
-
-// set up data events if they are asked for
-// Ensure readable listeners eventually get something
-Readable.prototype.on = function (ev, fn) {
- var res = Stream.prototype.on.call(this, ev, fn);
-
- if (ev === 'data') {
- // Start flowing on next tick if stream isn't explicitly paused
- if (this._readableState.flowing !== false) this.resume();
- } else if (ev === 'readable') {
- var state = this._readableState;
- if (!state.endEmitted && !state.readableListening) {
- state.readableListening = state.needReadable = true;
- state.emittedReadable = false;
- if (!state.reading) {
- pna.nextTick(nReadingNextTick, this);
- } else if (state.length) {
- emitReadable(this);
- }
- }
- }
-
- return res;
-};
-Readable.prototype.addListener = Readable.prototype.on;
-
-function nReadingNextTick(self) {
- debug('readable nexttick read 0');
- self.read(0);
-}
-
-// pause() and resume() are remnants of the legacy readable stream API
-// If the user uses them, then switch into old mode.
-Readable.prototype.resume = function () {
- var state = this._readableState;
- if (!state.flowing) {
- debug('resume');
- state.flowing = true;
- resume(this, state);
- }
- return this;
-};
-
-function resume(stream, state) {
- if (!state.resumeScheduled) {
- state.resumeScheduled = true;
- pna.nextTick(resume_, stream, state);
- }
-}
-
-function resume_(stream, state) {
- if (!state.reading) {
- debug('resume read 0');
- stream.read(0);
- }
-
- state.resumeScheduled = false;
- state.awaitDrain = 0;
- stream.emit('resume');
- flow(stream);
- if (state.flowing && !state.reading) stream.read(0);
-}
-
-Readable.prototype.pause = function () {
- debug('call pause flowing=%j', this._readableState.flowing);
- if (false !== this._readableState.flowing) {
- debug('pause');
- this._readableState.flowing = false;
- this.emit('pause');
- }
- return this;
-};
-
-function flow(stream) {
- var state = stream._readableState;
- debug('flow', state.flowing);
- while (state.flowing && stream.read() !== null) {}
-}
-
-// wrap an old-style stream as the async data source.
-// This is *not* part of the readable stream interface.
-// It is an ugly unfortunate mess of history.
-Readable.prototype.wrap = function (stream) {
- var _this = this;
-
- var state = this._readableState;
- var paused = false;
-
- stream.on('end', function () {
- debug('wrapped end');
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) _this.push(chunk);
- }
-
- _this.push(null);
- });
-
- stream.on('data', function (chunk) {
- debug('wrapped data');
- if (state.decoder) chunk = state.decoder.write(chunk);
-
- // don't skip over falsy values in objectMode
- if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
-
- var ret = _this.push(chunk);
- if (!ret) {
- paused = true;
- stream.pause();
- }
- });
-
- // proxy all the other methods.
- // important when wrapping filters and duplexes.
- for (var i in stream) {
- if (this[i] === undefined && typeof stream[i] === 'function') {
- this[i] = function (method) {
- return function () {
- return stream[method].apply(stream, arguments);
- };
- }(i);
- }
- }
-
- // proxy certain important events.
- for (var n = 0; n < kProxyEvents.length; n++) {
- stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
- }
-
- // when we try to consume some more bytes, simply unpause the
- // underlying stream.
- this._read = function (n) {
- debug('wrapped _read', n);
- if (paused) {
- paused = false;
- stream.resume();
- }
- };
-
- return this;
-};
-
-Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function () {
- return this._readableState.highWaterMark;
- }
-});
-
-// exposed for testing purposes only.
-Readable._fromList = fromList;
-
-// Pluck off n bytes from an array of buffers.
-// Length is the combined lengths of all the buffers in the list.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function fromList(n, state) {
- // nothing buffered
- if (state.length === 0) return null;
-
- var ret;
- if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
- // read it all, truncate the list
- if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
- state.buffer.clear();
- } else {
- // read part of list
- ret = fromListPartial(n, state.buffer, state.decoder);
- }
-
- return ret;
-}
-
-// Extracts only enough buffered data to satisfy the amount requested.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function fromListPartial(n, list, hasStrings) {
- var ret;
- if (n < list.head.data.length) {
- // slice is the same for buffers and strings
- ret = list.head.data.slice(0, n);
- list.head.data = list.head.data.slice(n);
- } else if (n === list.head.data.length) {
- // first chunk is a perfect match
- ret = list.shift();
- } else {
- // result spans more than one buffer
- ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
- }
- return ret;
-}
-
-// Copies a specified amount of characters from the list of buffered data
-// chunks.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function copyFromBufferString(n, list) {
- var p = list.head;
- var c = 1;
- var ret = p.data;
- n -= ret.length;
- while (p = p.next) {
- var str = p.data;
- var nb = n > str.length ? str.length : n;
- if (nb === str.length) ret += str;else ret += str.slice(0, n);
- n -= nb;
- if (n === 0) {
- if (nb === str.length) {
- ++c;
- if (p.next) list.head = p.next;else list.head = list.tail = null;
- } else {
- list.head = p;
- p.data = str.slice(nb);
- }
- break;
- }
- ++c;
- }
- list.length -= c;
- return ret;
-}
-
-// Copies a specified amount of bytes from the list of buffered data chunks.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function copyFromBuffer(n, list) {
- var ret = Buffer.allocUnsafe(n);
- var p = list.head;
- var c = 1;
- p.data.copy(ret);
- n -= p.data.length;
- while (p = p.next) {
- var buf = p.data;
- var nb = n > buf.length ? buf.length : n;
- buf.copy(ret, ret.length - n, 0, nb);
- n -= nb;
- if (n === 0) {
- if (nb === buf.length) {
- ++c;
- if (p.next) list.head = p.next;else list.head = list.tail = null;
- } else {
- list.head = p;
- p.data = buf.slice(nb);
- }
- break;
- }
- ++c;
- }
- list.length -= c;
- return ret;
-}
-
-function endReadable(stream) {
- var state = stream._readableState;
-
- // If we get here before consuming all the bytes, then that is a
- // bug in node. Should never happen.
- if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
-
- if (!state.endEmitted) {
- state.ended = true;
- pna.nextTick(endReadableNT, state, stream);
- }
-}
-
-function endReadableNT(state, stream) {
- // Check that we didn't get one last unshift.
- if (!state.endEmitted && state.length === 0) {
- state.endEmitted = true;
- stream.readable = false;
- stream.emit('end');
- }
-}
-
-function indexOf(xs, x) {
- for (var i = 0, l = xs.length; i < l; i++) {
- if (xs[i] === x) return i;
- }
- return -1;
-}
\ No newline at end of file
diff --git a/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/readable-stream/lib/_stream_transform.js
deleted file mode 100644
index fcfc105..0000000
--- a/node_modules/readable-stream/lib/_stream_transform.js
+++ /dev/null
@@ -1,214 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// a transform stream is a readable/writable stream where you do
-// something with the data. Sometimes it's called a "filter",
-// but that's not a great name for it, since that implies a thing where
-// some bits pass through, and others are simply ignored. (That would
-// be a valid example of a transform, of course.)
-//
-// While the output is causally related to the input, it's not a
-// necessarily symmetric or synchronous transformation. For example,
-// a zlib stream might take multiple plain-text writes(), and then
-// emit a single compressed chunk some time in the future.
-//
-// Here's how this works:
-//
-// The Transform stream has all the aspects of the readable and writable
-// stream classes. When you write(chunk), that calls _write(chunk,cb)
-// internally, and returns false if there's a lot of pending writes
-// buffered up. When you call read(), that calls _read(n) until
-// there's enough pending readable data buffered up.
-//
-// In a transform stream, the written data is placed in a buffer. When
-// _read(n) is called, it transforms the queued up data, calling the
-// buffered _write cb's as it consumes chunks. If consuming a single
-// written chunk would result in multiple output chunks, then the first
-// outputted bit calls the readcb, and subsequent chunks just go into
-// the read buffer, and will cause it to emit 'readable' if necessary.
-//
-// This way, back-pressure is actually determined by the reading side,
-// since _read has to be called to start processing a new chunk. However,
-// a pathological inflate type of transform can cause excessive buffering
-// here. For example, imagine a stream where every byte of input is
-// interpreted as an integer from 0-255, and then results in that many
-// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
-// 1kb of data being output. In this case, you could write a very small
-// amount of input, and end up with a very large amount of output. In
-// such a pathological inflating mechanism, there'd be no way to tell
-// the system to stop doing the transform. A single 4MB write could
-// cause the system to run out of memory.
-//
-// However, even in such a pathological case, only a single written chunk
-// would be consumed, and then the rest would wait (un-transformed) until
-// the results of the previous transformed chunk were consumed.
-
-'use strict';
-
-module.exports = Transform;
-
-var Duplex = require('./_stream_duplex');
-
-/**/
-var util = Object.create(require('core-util-is'));
-util.inherits = require('inherits');
-/**/
-
-util.inherits(Transform, Duplex);
-
-function afterTransform(er, data) {
- var ts = this._transformState;
- ts.transforming = false;
-
- var cb = ts.writecb;
-
- if (!cb) {
- return this.emit('error', new Error('write callback called multiple times'));
- }
-
- ts.writechunk = null;
- ts.writecb = null;
-
- if (data != null) // single equals check for both `null` and `undefined`
- this.push(data);
-
- cb(er);
-
- var rs = this._readableState;
- rs.reading = false;
- if (rs.needReadable || rs.length < rs.highWaterMark) {
- this._read(rs.highWaterMark);
- }
-}
-
-function Transform(options) {
- if (!(this instanceof Transform)) return new Transform(options);
-
- Duplex.call(this, options);
-
- this._transformState = {
- afterTransform: afterTransform.bind(this),
- needTransform: false,
- transforming: false,
- writecb: null,
- writechunk: null,
- writeencoding: null
- };
-
- // start out asking for a readable event once data is transformed.
- this._readableState.needReadable = true;
-
- // we have implemented the _read method, and done the other things
- // that Readable wants before the first _read call, so unset the
- // sync guard flag.
- this._readableState.sync = false;
-
- if (options) {
- if (typeof options.transform === 'function') this._transform = options.transform;
-
- if (typeof options.flush === 'function') this._flush = options.flush;
- }
-
- // When the writable side finishes, then flush out anything remaining.
- this.on('prefinish', prefinish);
-}
-
-function prefinish() {
- var _this = this;
-
- if (typeof this._flush === 'function') {
- this._flush(function (er, data) {
- done(_this, er, data);
- });
- } else {
- done(this, null, null);
- }
-}
-
-Transform.prototype.push = function (chunk, encoding) {
- this._transformState.needTransform = false;
- return Duplex.prototype.push.call(this, chunk, encoding);
-};
-
-// This is the part where you do stuff!
-// override this function in implementation classes.
-// 'chunk' is an input chunk.
-//
-// Call `push(newChunk)` to pass along transformed output
-// to the readable side. You may call 'push' zero or more times.
-//
-// Call `cb(err)` when you are done with this chunk. If you pass
-// an error, then that'll put the hurt on the whole operation. If you
-// never call cb(), then you'll never get another chunk.
-Transform.prototype._transform = function (chunk, encoding, cb) {
- throw new Error('_transform() is not implemented');
-};
-
-Transform.prototype._write = function (chunk, encoding, cb) {
- var ts = this._transformState;
- ts.writecb = cb;
- ts.writechunk = chunk;
- ts.writeencoding = encoding;
- if (!ts.transforming) {
- var rs = this._readableState;
- if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
- }
-};
-
-// Doesn't matter what the args are here.
-// _transform does all the work.
-// That we got here means that the readable side wants more data.
-Transform.prototype._read = function (n) {
- var ts = this._transformState;
-
- if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
- ts.transforming = true;
- this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
- } else {
- // mark that we need a transform, so that any data that comes in
- // will get processed, now that we've asked for it.
- ts.needTransform = true;
- }
-};
-
-Transform.prototype._destroy = function (err, cb) {
- var _this2 = this;
-
- Duplex.prototype._destroy.call(this, err, function (err2) {
- cb(err2);
- _this2.emit('close');
- });
-};
-
-function done(stream, er, data) {
- if (er) return stream.emit('error', er);
-
- if (data != null) // single equals check for both `null` and `undefined`
- stream.push(data);
-
- // if there's nothing in the write buffer, then that means
- // that nothing more will ever be provided
- if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
-
- if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
-
- return stream.push(null);
-}
\ No newline at end of file
diff --git a/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/readable-stream/lib/_stream_writable.js
deleted file mode 100644
index e1e897f..0000000
--- a/node_modules/readable-stream/lib/_stream_writable.js
+++ /dev/null
@@ -1,685 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// A bit simpler than readable streams.
-// Implement an async ._write(chunk, encoding, cb), and it'll handle all
-// the drain event emission and buffering.
-
-'use strict';
-
-/**/
-
-var pna = require('process-nextick-args');
-/**/
-
-module.exports = Writable;
-
-/* */
-function WriteReq(chunk, encoding, cb) {
- this.chunk = chunk;
- this.encoding = encoding;
- this.callback = cb;
- this.next = null;
-}
-
-// It seems a linked list but it is not
-// there will be only 2 of these for each stream
-function CorkedRequest(state) {
- var _this = this;
-
- this.next = null;
- this.entry = null;
- this.finish = function () {
- onCorkedFinish(_this, state);
- };
-}
-/* */
-
-/**/
-var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
-/**/
-
-/**/
-var Duplex;
-/**/
-
-Writable.WritableState = WritableState;
-
-/**/
-var util = Object.create(require('core-util-is'));
-util.inherits = require('inherits');
-/**/
-
-/**/
-var internalUtil = {
- deprecate: require('util-deprecate')
-};
-/**/
-
-/**/
-var Stream = require('./internal/streams/stream');
-/**/
-
-/**/
-
-var Buffer = require('safe-buffer').Buffer;
-var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
-function _uint8ArrayToBuffer(chunk) {
- return Buffer.from(chunk);
-}
-function _isUint8Array(obj) {
- return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
-}
-
-/**/
-
-var destroyImpl = require('./internal/streams/destroy');
-
-util.inherits(Writable, Stream);
-
-function nop() {}
-
-function WritableState(options, stream) {
- Duplex = Duplex || require('./_stream_duplex');
-
- options = options || {};
-
- // Duplex streams are both readable and writable, but share
- // the same options object.
- // However, some cases require setting options to different
- // values for the readable and the writable sides of the duplex stream.
- // These options can be provided separately as readableXXX and writableXXX.
- var isDuplex = stream instanceof Duplex;
-
- // object stream flag to indicate whether or not this stream
- // contains buffers or objects.
- this.objectMode = !!options.objectMode;
-
- if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
-
- // the point at which write() starts returning false
- // Note: 0 is a valid value, means that we always return false if
- // the entire buffer is not flushed immediately on write()
- var hwm = options.highWaterMark;
- var writableHwm = options.writableHighWaterMark;
- var defaultHwm = this.objectMode ? 16 : 16 * 1024;
-
- if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
-
- // cast to ints.
- this.highWaterMark = Math.floor(this.highWaterMark);
-
- // if _final has been called
- this.finalCalled = false;
-
- // drain event flag.
- this.needDrain = false;
- // at the start of calling end()
- this.ending = false;
- // when end() has been called, and returned
- this.ended = false;
- // when 'finish' is emitted
- this.finished = false;
-
- // has it been destroyed
- this.destroyed = false;
-
- // should we decode strings into buffers before passing to _write?
- // this is here so that some node-core streams can optimize string
- // handling at a lower level.
- var noDecode = options.decodeStrings === false;
- this.decodeStrings = !noDecode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // not an actual buffer we keep track of, but a measurement
- // of how much we're waiting to get pushed to some underlying
- // socket or file.
- this.length = 0;
-
- // a flag to see when we're in the middle of a write.
- this.writing = false;
-
- // when true all writes will be buffered until .uncork() call
- this.corked = 0;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, because any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // a flag to know if we're processing previously buffered items, which
- // may call the _write() callback in the same tick, so that we don't
- // end up in an overlapped onwrite situation.
- this.bufferProcessing = false;
-
- // the callback that's passed to _write(chunk,cb)
- this.onwrite = function (er) {
- onwrite(stream, er);
- };
-
- // the callback that the user supplies to write(chunk,encoding,cb)
- this.writecb = null;
-
- // the amount that is being written when _write is called.
- this.writelen = 0;
-
- this.bufferedRequest = null;
- this.lastBufferedRequest = null;
-
- // number of pending user-supplied write callbacks
- // this must be 0 before 'finish' can be emitted
- this.pendingcb = 0;
-
- // emit prefinish if the only thing we're waiting for is _write cbs
- // This is relevant for synchronous Transform streams
- this.prefinished = false;
-
- // True if the error was already emitted and should not be thrown again
- this.errorEmitted = false;
-
- // count buffered requests
- this.bufferedRequestCount = 0;
-
- // allocate the first CorkedRequest, there is always
- // one allocated and free to use, and we maintain at most two
- this.corkedRequestsFree = new CorkedRequest(this);
-}
-
-WritableState.prototype.getBuffer = function getBuffer() {
- var current = this.bufferedRequest;
- var out = [];
- while (current) {
- out.push(current);
- current = current.next;
- }
- return out;
-};
-
-(function () {
- try {
- Object.defineProperty(WritableState.prototype, 'buffer', {
- get: internalUtil.deprecate(function () {
- return this.getBuffer();
- }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
- });
- } catch (_) {}
-})();
-
-// Test _writableState for inheritance to account for Duplex streams,
-// whose prototype chain only points to Readable.
-var realHasInstance;
-if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
- realHasInstance = Function.prototype[Symbol.hasInstance];
- Object.defineProperty(Writable, Symbol.hasInstance, {
- value: function (object) {
- if (realHasInstance.call(this, object)) return true;
- if (this !== Writable) return false;
-
- return object && object._writableState instanceof WritableState;
- }
- });
-} else {
- realHasInstance = function (object) {
- return object instanceof this;
- };
-}
-
-function Writable(options) {
- Duplex = Duplex || require('./_stream_duplex');
-
- // Writable ctor is applied to Duplexes, too.
- // `realHasInstance` is necessary because using plain `instanceof`
- // would return false, as no `_writableState` property is attached.
-
- // Trying to use the custom `instanceof` for Writable here will also break the
- // Node.js LazyTransform implementation, which has a non-trivial getter for
- // `_writableState` that would lead to infinite recursion.
- if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
- return new Writable(options);
- }
-
- this._writableState = new WritableState(options, this);
-
- // legacy.
- this.writable = true;
-
- if (options) {
- if (typeof options.write === 'function') this._write = options.write;
-
- if (typeof options.writev === 'function') this._writev = options.writev;
-
- if (typeof options.destroy === 'function') this._destroy = options.destroy;
-
- if (typeof options.final === 'function') this._final = options.final;
- }
-
- Stream.call(this);
-}
-
-// Otherwise people can pipe Writable streams, which is just wrong.
-Writable.prototype.pipe = function () {
- this.emit('error', new Error('Cannot pipe, not readable'));
-};
-
-function writeAfterEnd(stream, cb) {
- var er = new Error('write after end');
- // TODO: defer error events consistently everywhere, not just the cb
- stream.emit('error', er);
- pna.nextTick(cb, er);
-}
-
-// Checks that a user-supplied chunk is valid, especially for the particular
-// mode the stream is in. Currently this means that `null` is never accepted
-// and undefined/non-string values are only allowed in object mode.
-function validChunk(stream, state, chunk, cb) {
- var valid = true;
- var er = false;
-
- if (chunk === null) {
- er = new TypeError('May not write null values to stream');
- } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- if (er) {
- stream.emit('error', er);
- pna.nextTick(cb, er);
- valid = false;
- }
- return valid;
-}
-
-Writable.prototype.write = function (chunk, encoding, cb) {
- var state = this._writableState;
- var ret = false;
- var isBuf = !state.objectMode && _isUint8Array(chunk);
-
- if (isBuf && !Buffer.isBuffer(chunk)) {
- chunk = _uint8ArrayToBuffer(chunk);
- }
-
- if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
-
- if (typeof cb !== 'function') cb = nop;
-
- if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
- state.pendingcb++;
- ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
- }
-
- return ret;
-};
-
-Writable.prototype.cork = function () {
- var state = this._writableState;
-
- state.corked++;
-};
-
-Writable.prototype.uncork = function () {
- var state = this._writableState;
-
- if (state.corked) {
- state.corked--;
-
- if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
- }
-};
-
-Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
- // node::ParseEncoding() requires lower case.
- if (typeof encoding === 'string') encoding = encoding.toLowerCase();
- if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
- this._writableState.defaultEncoding = encoding;
- return this;
-};
-
-function decodeChunk(state, chunk, encoding) {
- if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
- chunk = Buffer.from(chunk, encoding);
- }
- return chunk;
-}
-
-Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable: false,
- get: function () {
- return this._writableState.highWaterMark;
- }
-});
-
-// if we're already writing something, then just put this
-// in the queue, and wait our turn. Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
- if (!isBuf) {
- var newChunk = decodeChunk(state, chunk, encoding);
- if (chunk !== newChunk) {
- isBuf = true;
- encoding = 'buffer';
- chunk = newChunk;
- }
- }
- var len = state.objectMode ? 1 : chunk.length;
-
- state.length += len;
-
- var ret = state.length < state.highWaterMark;
- // we must ensure that previous needDrain will not be reset to false.
- if (!ret) state.needDrain = true;
-
- if (state.writing || state.corked) {
- var last = state.lastBufferedRequest;
- state.lastBufferedRequest = {
- chunk: chunk,
- encoding: encoding,
- isBuf: isBuf,
- callback: cb,
- next: null
- };
- if (last) {
- last.next = state.lastBufferedRequest;
- } else {
- state.bufferedRequest = state.lastBufferedRequest;
- }
- state.bufferedRequestCount += 1;
- } else {
- doWrite(stream, state, false, len, chunk, encoding, cb);
- }
-
- return ret;
-}
-
-function doWrite(stream, state, writev, len, chunk, encoding, cb) {
- state.writelen = len;
- state.writecb = cb;
- state.writing = true;
- state.sync = true;
- if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
- state.sync = false;
-}
-
-function onwriteError(stream, state, sync, er, cb) {
- --state.pendingcb;
-
- if (sync) {
- // defer the callback if we are being called synchronously
- // to avoid piling up things on the stack
- pna.nextTick(cb, er);
- // this can emit finish, and it will always happen
- // after error
- pna.nextTick(finishMaybe, stream, state);
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
- } else {
- // the caller expect this to happen before if
- // it is async
- cb(er);
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
- // this can emit finish, but finish must
- // always follow error
- finishMaybe(stream, state);
- }
-}
-
-function onwriteStateUpdate(state) {
- state.writing = false;
- state.writecb = null;
- state.length -= state.writelen;
- state.writelen = 0;
-}
-
-function onwrite(stream, er) {
- var state = stream._writableState;
- var sync = state.sync;
- var cb = state.writecb;
-
- onwriteStateUpdate(state);
-
- if (er) onwriteError(stream, state, sync, er, cb);else {
- // Check if we're actually ready to finish, but don't emit yet
- var finished = needFinish(state);
-
- if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
- clearBuffer(stream, state);
- }
-
- if (sync) {
- /**/
- asyncWrite(afterWrite, stream, state, finished, cb);
- /**/
- } else {
- afterWrite(stream, state, finished, cb);
- }
- }
-}
-
-function afterWrite(stream, state, finished, cb) {
- if (!finished) onwriteDrain(stream, state);
- state.pendingcb--;
- cb();
- finishMaybe(stream, state);
-}
-
-// Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-function onwriteDrain(stream, state) {
- if (state.length === 0 && state.needDrain) {
- state.needDrain = false;
- stream.emit('drain');
- }
-}
-
-// if there's something in the buffer waiting, then process it
-function clearBuffer(stream, state) {
- state.bufferProcessing = true;
- var entry = state.bufferedRequest;
-
- if (stream._writev && entry && entry.next) {
- // Fast case, write everything using _writev()
- var l = state.bufferedRequestCount;
- var buffer = new Array(l);
- var holder = state.corkedRequestsFree;
- holder.entry = entry;
-
- var count = 0;
- var allBuffers = true;
- while (entry) {
- buffer[count] = entry;
- if (!entry.isBuf) allBuffers = false;
- entry = entry.next;
- count += 1;
- }
- buffer.allBuffers = allBuffers;
-
- doWrite(stream, state, true, state.length, buffer, '', holder.finish);
-
- // doWrite is almost always async, defer these to save a bit of time
- // as the hot path ends with doWrite
- state.pendingcb++;
- state.lastBufferedRequest = null;
- if (holder.next) {
- state.corkedRequestsFree = holder.next;
- holder.next = null;
- } else {
- state.corkedRequestsFree = new CorkedRequest(state);
- }
- state.bufferedRequestCount = 0;
- } else {
- // Slow case, write chunks one-by-one
- while (entry) {
- var chunk = entry.chunk;
- var encoding = entry.encoding;
- var cb = entry.callback;
- var len = state.objectMode ? 1 : chunk.length;
-
- doWrite(stream, state, false, len, chunk, encoding, cb);
- entry = entry.next;
- state.bufferedRequestCount--;
- // if we didn't call the onwrite immediately, then
- // it means that we need to wait until it does.
- // also, that means that the chunk and cb are currently
- // being processed, so move the buffer counter past them.
- if (state.writing) {
- break;
- }
- }
-
- if (entry === null) state.lastBufferedRequest = null;
- }
-
- state.bufferedRequest = entry;
- state.bufferProcessing = false;
-}
-
-Writable.prototype._write = function (chunk, encoding, cb) {
- cb(new Error('_write() is not implemented'));
-};
-
-Writable.prototype._writev = null;
-
-Writable.prototype.end = function (chunk, encoding, cb) {
- var state = this._writableState;
-
- if (typeof chunk === 'function') {
- cb = chunk;
- chunk = null;
- encoding = null;
- } else if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
-
- // .end() fully uncorks
- if (state.corked) {
- state.corked = 1;
- this.uncork();
- }
-
- // ignore unnecessary end() calls.
- if (!state.ending) endWritable(this, state, cb);
-};
-
-function needFinish(state) {
- return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
-}
-function callFinal(stream, state) {
- stream._final(function (err) {
- state.pendingcb--;
- if (err) {
- stream.emit('error', err);
- }
- state.prefinished = true;
- stream.emit('prefinish');
- finishMaybe(stream, state);
- });
-}
-function prefinish(stream, state) {
- if (!state.prefinished && !state.finalCalled) {
- if (typeof stream._final === 'function') {
- state.pendingcb++;
- state.finalCalled = true;
- pna.nextTick(callFinal, stream, state);
- } else {
- state.prefinished = true;
- stream.emit('prefinish');
- }
- }
-}
-
-function finishMaybe(stream, state) {
- var need = needFinish(state);
- if (need) {
- prefinish(stream, state);
- if (state.pendingcb === 0) {
- state.finished = true;
- stream.emit('finish');
- }
- }
- return need;
-}
-
-function endWritable(stream, state, cb) {
- state.ending = true;
- finishMaybe(stream, state);
- if (cb) {
- if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
- }
- state.ended = true;
- stream.writable = false;
-}
-
-function onCorkedFinish(corkReq, state, err) {
- var entry = corkReq.entry;
- corkReq.entry = null;
- while (entry) {
- var cb = entry.callback;
- state.pendingcb--;
- cb(err);
- entry = entry.next;
- }
-
- // reuse the free corkReq.
- state.corkedRequestsFree.next = corkReq;
-}
-
-Object.defineProperty(Writable.prototype, 'destroyed', {
- get: function () {
- if (this._writableState === undefined) {
- return false;
- }
- return this._writableState.destroyed;
- },
- set: function (value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (!this._writableState) {
- return;
- }
-
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._writableState.destroyed = value;
- }
-});
-
-Writable.prototype.destroy = destroyImpl.destroy;
-Writable.prototype._undestroy = destroyImpl.undestroy;
-Writable.prototype._destroy = function (err, cb) {
- this.end();
- cb(err);
-};
\ No newline at end of file
diff --git a/node_modules/readable-stream/lib/internal/streams/BufferList.js b/node_modules/readable-stream/lib/internal/streams/BufferList.js
deleted file mode 100644
index 5e08097..0000000
--- a/node_modules/readable-stream/lib/internal/streams/BufferList.js
+++ /dev/null
@@ -1,78 +0,0 @@
-'use strict';
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Buffer = require('safe-buffer').Buffer;
-var util = require('util');
-
-function copyBuffer(src, target, offset) {
- src.copy(target, offset);
-}
-
-module.exports = function () {
- function BufferList() {
- _classCallCheck(this, BufferList);
-
- this.head = null;
- this.tail = null;
- this.length = 0;
- }
-
- BufferList.prototype.push = function push(v) {
- var entry = { data: v, next: null };
- if (this.length > 0) this.tail.next = entry;else this.head = entry;
- this.tail = entry;
- ++this.length;
- };
-
- BufferList.prototype.unshift = function unshift(v) {
- var entry = { data: v, next: this.head };
- if (this.length === 0) this.tail = entry;
- this.head = entry;
- ++this.length;
- };
-
- BufferList.prototype.shift = function shift() {
- if (this.length === 0) return;
- var ret = this.head.data;
- if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
- --this.length;
- return ret;
- };
-
- BufferList.prototype.clear = function clear() {
- this.head = this.tail = null;
- this.length = 0;
- };
-
- BufferList.prototype.join = function join(s) {
- if (this.length === 0) return '';
- var p = this.head;
- var ret = '' + p.data;
- while (p = p.next) {
- ret += s + p.data;
- }return ret;
- };
-
- BufferList.prototype.concat = function concat(n) {
- if (this.length === 0) return Buffer.alloc(0);
- var ret = Buffer.allocUnsafe(n >>> 0);
- var p = this.head;
- var i = 0;
- while (p) {
- copyBuffer(p.data, ret, i);
- i += p.data.length;
- p = p.next;
- }
- return ret;
- };
-
- return BufferList;
-}();
-
-if (util && util.inspect && util.inspect.custom) {
- module.exports.prototype[util.inspect.custom] = function () {
- var obj = util.inspect({ length: this.length });
- return this.constructor.name + ' ' + obj;
- };
-}
\ No newline at end of file
diff --git a/node_modules/readable-stream/lib/internal/streams/destroy.js b/node_modules/readable-stream/lib/internal/streams/destroy.js
deleted file mode 100644
index 85a8214..0000000
--- a/node_modules/readable-stream/lib/internal/streams/destroy.js
+++ /dev/null
@@ -1,84 +0,0 @@
-'use strict';
-
-/**/
-
-var pna = require('process-nextick-args');
-/**/
-
-// undocumented cb() API, needed for core, not for public API
-function destroy(err, cb) {
- var _this = this;
-
- var readableDestroyed = this._readableState && this._readableState.destroyed;
- var writableDestroyed = this._writableState && this._writableState.destroyed;
-
- if (readableDestroyed || writableDestroyed) {
- if (cb) {
- cb(err);
- } else if (err) {
- if (!this._writableState) {
- pna.nextTick(emitErrorNT, this, err);
- } else if (!this._writableState.errorEmitted) {
- this._writableState.errorEmitted = true;
- pna.nextTick(emitErrorNT, this, err);
- }
- }
-
- return this;
- }
-
- // we set destroyed to true before firing error callbacks in order
- // to make it re-entrance safe in case destroy() is called within callbacks
-
- if (this._readableState) {
- this._readableState.destroyed = true;
- }
-
- // if this is a duplex stream mark the writable part as destroyed as well
- if (this._writableState) {
- this._writableState.destroyed = true;
- }
-
- this._destroy(err || null, function (err) {
- if (!cb && err) {
- if (!_this._writableState) {
- pna.nextTick(emitErrorNT, _this, err);
- } else if (!_this._writableState.errorEmitted) {
- _this._writableState.errorEmitted = true;
- pna.nextTick(emitErrorNT, _this, err);
- }
- } else if (cb) {
- cb(err);
- }
- });
-
- return this;
-}
-
-function undestroy() {
- if (this._readableState) {
- this._readableState.destroyed = false;
- this._readableState.reading = false;
- this._readableState.ended = false;
- this._readableState.endEmitted = false;
- }
-
- if (this._writableState) {
- this._writableState.destroyed = false;
- this._writableState.ended = false;
- this._writableState.ending = false;
- this._writableState.finalCalled = false;
- this._writableState.prefinished = false;
- this._writableState.finished = false;
- this._writableState.errorEmitted = false;
- }
-}
-
-function emitErrorNT(self, err) {
- self.emit('error', err);
-}
-
-module.exports = {
- destroy: destroy,
- undestroy: undestroy
-};
\ No newline at end of file
diff --git a/node_modules/readable-stream/lib/internal/streams/stream-browser.js b/node_modules/readable-stream/lib/internal/streams/stream-browser.js
deleted file mode 100644
index 9332a3f..0000000
--- a/node_modules/readable-stream/lib/internal/streams/stream-browser.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('events').EventEmitter;
diff --git a/node_modules/readable-stream/lib/internal/streams/stream.js b/node_modules/readable-stream/lib/internal/streams/stream.js
deleted file mode 100644
index ce2ad5b..0000000
--- a/node_modules/readable-stream/lib/internal/streams/stream.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('stream');
diff --git a/node_modules/readable-stream/package.json b/node_modules/readable-stream/package.json
deleted file mode 100644
index 514c178..0000000
--- a/node_modules/readable-stream/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "readable-stream",
- "version": "2.3.8",
- "description": "Streams3, a user-land copy of the stream library from Node.js",
- "main": "readable.js",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- },
- "devDependencies": {
- "assert": "^1.4.0",
- "babel-polyfill": "^6.9.1",
- "buffer": "^4.9.0",
- "lolex": "^2.3.2",
- "nyc": "^6.4.0",
- "tap": "^0.7.0",
- "tape": "^4.8.0"
- },
- "scripts": {
- "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js",
- "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
- "cover": "nyc npm test",
- "report": "nyc report --reporter=lcov"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/nodejs/readable-stream"
- },
- "keywords": [
- "readable",
- "stream",
- "pipe"
- ],
- "browser": {
- "util": false,
- "./readable.js": "./readable-browser.js",
- "./writable.js": "./writable-browser.js",
- "./duplex.js": "./duplex-browser.js",
- "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js"
- },
- "nyc": {
- "include": [
- "lib/**.js"
- ]
- },
- "license": "MIT"
-}
diff --git a/node_modules/readable-stream/passthrough.js b/node_modules/readable-stream/passthrough.js
deleted file mode 100644
index ffd791d..0000000
--- a/node_modules/readable-stream/passthrough.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./readable').PassThrough
diff --git a/node_modules/readable-stream/readable-browser.js b/node_modules/readable-stream/readable-browser.js
deleted file mode 100644
index e503725..0000000
--- a/node_modules/readable-stream/readable-browser.js
+++ /dev/null
@@ -1,7 +0,0 @@
-exports = module.exports = require('./lib/_stream_readable.js');
-exports.Stream = exports;
-exports.Readable = exports;
-exports.Writable = require('./lib/_stream_writable.js');
-exports.Duplex = require('./lib/_stream_duplex.js');
-exports.Transform = require('./lib/_stream_transform.js');
-exports.PassThrough = require('./lib/_stream_passthrough.js');
diff --git a/node_modules/readable-stream/readable.js b/node_modules/readable-stream/readable.js
deleted file mode 100644
index ec89ec5..0000000
--- a/node_modules/readable-stream/readable.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var Stream = require('stream');
-if (process.env.READABLE_STREAM === 'disable' && Stream) {
- module.exports = Stream;
- exports = module.exports = Stream.Readable;
- exports.Readable = Stream.Readable;
- exports.Writable = Stream.Writable;
- exports.Duplex = Stream.Duplex;
- exports.Transform = Stream.Transform;
- exports.PassThrough = Stream.PassThrough;
- exports.Stream = Stream;
-} else {
- exports = module.exports = require('./lib/_stream_readable.js');
- exports.Stream = Stream || exports;
- exports.Readable = exports;
- exports.Writable = require('./lib/_stream_writable.js');
- exports.Duplex = require('./lib/_stream_duplex.js');
- exports.Transform = require('./lib/_stream_transform.js');
- exports.PassThrough = require('./lib/_stream_passthrough.js');
-}
diff --git a/node_modules/readable-stream/transform.js b/node_modules/readable-stream/transform.js
deleted file mode 100644
index b1baba2..0000000
--- a/node_modules/readable-stream/transform.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./readable').Transform
diff --git a/node_modules/readable-stream/writable-browser.js b/node_modules/readable-stream/writable-browser.js
deleted file mode 100644
index ebdde6a..0000000
--- a/node_modules/readable-stream/writable-browser.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib/_stream_writable.js');
diff --git a/node_modules/readable-stream/writable.js b/node_modules/readable-stream/writable.js
deleted file mode 100644
index 3211a6f..0000000
--- a/node_modules/readable-stream/writable.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var Stream = require("stream")
-var Writable = require("./lib/_stream_writable.js")
-
-if (process.env.READABLE_STREAM === 'disable') {
- module.exports = Stream && Stream.Writable || Writable
-} else {
- module.exports = Writable
-}
diff --git a/node_modules/readdirp/LICENSE b/node_modules/readdirp/LICENSE
deleted file mode 100644
index 8a63b80..0000000
--- a/node_modules/readdirp/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-This software is released under the MIT license:
-
-Copyright (c) 2012-2015 Thorsten Lorenz
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/readdirp/README.md b/node_modules/readdirp/README.md
deleted file mode 100644
index 431f402..0000000
--- a/node_modules/readdirp/README.md
+++ /dev/null
@@ -1,204 +0,0 @@
-# readdirp [](http://travis-ci.org/thlorenz/readdirp)
-
-[](https://nodei.co/npm/readdirp/)
-
-Recursive version of [fs.readdir](http://nodejs.org/docs/latest/api/fs.html#fs_fs_readdir_path_callback). Exposes a **stream api**.
-
-```javascript
-var readdirp = require('readdirp')
- , path = require('path')
- , es = require('event-stream');
-
-// print out all JavaScript files along with their size
-
-var stream = readdirp({ root: path.join(__dirname), fileFilter: '*.js' });
-stream
- .on('warn', function (err) {
- console.error('non-fatal error', err);
- // optionally call stream.destroy() here in order to abort and cause 'close' to be emitted
- })
- .on('error', function (err) { console.error('fatal error', err); })
- .pipe(es.mapSync(function (entry) {
- return { path: entry.path, size: entry.stat.size };
- }))
- .pipe(es.stringify())
- .pipe(process.stdout);
-```
-
-Meant to be one of the recursive versions of [fs](http://nodejs.org/docs/latest/api/fs.html) functions, e.g., like [mkdirp](https://github.com/substack/node-mkdirp).
-
-**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
-
-- [Installation](#installation)
-- [API](#api)
- - [entry stream](#entry-stream)
- - [options](#options)
- - [entry info](#entry-info)
- - [Filters](#filters)
- - [Callback API](#callback-api)
- - [allProcessed ](#allprocessed)
- - [fileProcessed](#fileprocessed)
-- [More Examples](#more-examples)
- - [stream api](#stream-api)
- - [stream api pipe](#stream-api-pipe)
- - [grep](#grep)
- - [using callback api](#using-callback-api)
- - [tests](#tests)
-
-
-# Installation
-
- npm install readdirp
-
-# API
-
-***var entryStream = readdirp (options)***
-
-Reads given root recursively and returns a `stream` of [entry info](#entry-info)s.
-
-## entry stream
-
-Behaves as follows:
-
-- `emit('data')` passes an [entry info](#entry-info) whenever one is found
-- `emit('warn')` passes a non-fatal `Error` that prevents a file/directory from being processed (i.e., if it is
- inaccessible to the user)
-- `emit('error')` passes a fatal `Error` which also ends the stream (i.e., when illegal options where passed)
-- `emit('end')` called when all entries were found and no more will be emitted (i.e., we are done)
-- `emit('close')` called when the stream is destroyed via `stream.destroy()` (which could be useful if you want to
- manually abort even on a non fatal error) - at that point the stream is no longer `readable` and no more entries,
- warning or errors are emitted
-- to learn more about streams, consult the very detailed
- [nodejs streams documentation](http://nodejs.org/api/stream.html) or the
- [stream-handbook](https://github.com/substack/stream-handbook)
-
-
-## options
-
-- **root**: path in which to start reading and recursing into subdirectories
-
-- **fileFilter**: filter to include/exclude files found (see [Filters](#filters) for more)
-
-- **directoryFilter**: filter to include/exclude directories found and to recurse into (see [Filters](#filters) for more)
-
-- **depth**: depth at which to stop recursing even if more subdirectories are found
-
-- **entryType**: determines if data events on the stream should be emitted for `'files'`, `'directories'`, `'both'`, or `'all'`. Setting to `'all'` will also include entries for other types of file descriptors like character devices, unix sockets and named pipes. Defaults to `'files'`.
-
-- **lstat**: if `true`, readdirp uses `fs.lstat` instead of `fs.stat` in order to stat files and includes symlink entries in the stream along with files.
-
-## entry info
-
-Has the following properties:
-
-- **parentDir** : directory in which entry was found (relative to given root)
-- **fullParentDir** : full path to parent directory
-- **name** : name of the file/directory
-- **path** : path to the file/directory (relative to given root)
-- **fullPath** : full path to the file/directory found
-- **stat** : built in [stat object](http://nodejs.org/docs/v0.4.9/api/fs.html#fs.Stats)
-- **Example**: (assuming root was `/User/dev/readdirp`)
-
- parentDir : 'test/bed/root_dir1',
- fullParentDir : '/User/dev/readdirp/test/bed/root_dir1',
- name : 'root_dir1_subdir1',
- path : 'test/bed/root_dir1/root_dir1_subdir1',
- fullPath : '/User/dev/readdirp/test/bed/root_dir1/root_dir1_subdir1',
- stat : [ ... ]
-
-## Filters
-
-There are three different ways to specify filters for files and directories respectively.
-
-- **function**: a function that takes an entry info as a parameter and returns true to include or false to exclude the entry
-
-- **glob string**: a string (e.g., `*.js`) which is matched using [minimatch](https://github.com/isaacs/minimatch), so go there for more
- information.
-
- Globstars (`**`) are not supported since specifying a recursive pattern for an already recursive function doesn't make sense.
-
- Negated globs (as explained in the minimatch documentation) are allowed, e.g., `!*.txt` matches everything but text files.
-
-- **array of glob strings**: either need to be all inclusive or all exclusive (negated) patterns otherwise an error is thrown.
-
- `[ '*.json', '*.js' ]` includes all JavaScript and Json files.
-
-
- `[ '!.git', '!node_modules' ]` includes all directories except the '.git' and 'node_modules'.
-
-Directories that do not pass a filter will not be recursed into.
-
-## Callback API
-
-Although the stream api is recommended, readdirp also exposes a callback based api.
-
-***readdirp (options, callback1 [, callback2])***
-
-If callback2 is given, callback1 functions as the **fileProcessed** callback, and callback2 as the **allProcessed** callback.
-
-If only callback1 is given, it functions as the **allProcessed** callback.
-
-### allProcessed
-
-- function with err and res parameters, e.g., `function (err, res) { ... }`
-- **err**: array of errors that occurred during the operation, **res may still be present, even if errors occurred**
-- **res**: collection of file/directory [entry infos](#entry-info)
-
-### fileProcessed
-
-- function with [entry info](#entry-info) parameter e.g., `function (entryInfo) { ... }`
-
-
-# More Examples
-
-`on('error', ..)`, `on('warn', ..)` and `on('end', ..)` handling omitted for brevity
-
-```javascript
-var readdirp = require('readdirp');
-
-// Glob file filter
-readdirp({ root: './test/bed', fileFilter: '*.js' })
- .on('data', function (entry) {
- // do something with each JavaScript file entry
- });
-
-// Combined glob file filters
-readdirp({ root: './test/bed', fileFilter: [ '*.js', '*.json' ] })
- .on('data', function (entry) {
- // do something with each JavaScript and Json file entry
- });
-
-// Combined negated directory filters
-readdirp({ root: './test/bed', directoryFilter: [ '!.git', '!*modules' ] })
- .on('data', function (entry) {
- // do something with each file entry found outside '.git' or any modules directory
- });
-
-// Function directory filter
-readdirp({ root: './test/bed', directoryFilter: function (di) { return di.name.length === 9; } })
- .on('data', function (entry) {
- // do something with each file entry found inside directories whose name has length 9
- });
-
-// Limiting depth
-readdirp({ root: './test/bed', depth: 1 })
- .on('data', function (entry) {
- // do something with each file entry found up to 1 subdirectory deep
- });
-
-// callback api
-readdirp({ root: '.' }, function(fileInfo) {
- // do something with file entry here
- }, function (err, res) {
- // all done, move on or do final step for all file entries here
-});
-```
-
-Try more examples by following [instructions](https://github.com/paulmillr/readdirp/blob/master/examples/Readme.md)
-on how to get going.
-
-## tests
-
-The [readdirp tests](https://github.com/paulmillr/readdirp/blob/master/test/readdirp.js) also will give you a good idea on
-how things work.
-
diff --git a/node_modules/readdirp/package.json b/node_modules/readdirp/package.json
deleted file mode 100644
index 39314a2..0000000
--- a/node_modules/readdirp/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "author": "Thorsten Lorenz (thlorenz.com)",
- "name": "readdirp",
- "description": "Recursive version of fs.readdir with streaming api.",
- "version": "2.2.1",
- "homepage": "https://github.com/paulmillr/readdirp",
- "repository": {
- "type": "git",
- "url": "git://github.com/paulmillr/readdirp.git"
- },
- "engines": {
- "node": ">=0.10"
- },
- "files": [
- "readdirp.js",
- "stream-api.js"
- ],
- "keywords": [
- "recursive",
- "fs",
- "stream",
- "streams",
- "readdir",
- "filesystem",
- "find",
- "filter"
- ],
- "main": "readdirp.js",
- "scripts": {
- "test-main": "(cd test && set -e; for t in ./*.js; do node $t; done)",
- "test-0.10": "nave use 0.10 npm run test-main",
- "test-0.12": "nave use 0.12 npm run test-main",
- "test-4": "nave use 4.4 npm run test-main",
- "test-6": "nave use 6.2 npm run test-main",
- "test-all": "npm run test-main && npm run test-0.10 && npm run test-0.12 && npm run test-4 && npm run test-6",
- "test": "npm run test-main"
- },
- "dependencies": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- },
- "devDependencies": {
- "nave": "^0.5.1",
- "proxyquire": "^1.7.9",
- "tap": "1.3.2",
- "through2": "^2.0.0"
- },
- "license": "MIT"
-}
diff --git a/node_modules/readdirp/readdirp.js b/node_modules/readdirp/readdirp.js
deleted file mode 100644
index 863bd17..0000000
--- a/node_modules/readdirp/readdirp.js
+++ /dev/null
@@ -1,294 +0,0 @@
-'use strict';
-
-var fs = require('graceful-fs')
- , path = require('path')
- , micromatch = require('micromatch').isMatch
- , toString = Object.prototype.toString
- ;
-
-
-// Standard helpers
-function isFunction (obj) {
- return toString.call(obj) === '[object Function]';
-}
-
-function isString (obj) {
- return toString.call(obj) === '[object String]';
-}
-
-function isUndefined (obj) {
- return obj === void 0;
-}
-
-/**
- * Main function which ends up calling readdirRec and reads all files and directories in given root recursively.
- * @param { Object } opts Options to specify root (start directory), filters and recursion depth
- * @param { function } callback1 When callback2 is given calls back for each processed file - function (fileInfo) { ... },
- * when callback2 is not given, it behaves like explained in callback2
- * @param { function } callback2 Calls back once all files have been processed with an array of errors and file infos
- * function (err, fileInfos) { ... }
- */
-function readdir(opts, callback1, callback2) {
- var stream
- , handleError
- , handleFatalError
- , errors = []
- , readdirResult = {
- directories: []
- , files: []
- }
- , fileProcessed
- , allProcessed
- , realRoot
- , aborted = false
- , paused = false
- ;
-
- // If no callbacks were given we will use a streaming interface
- if (isUndefined(callback1)) {
- var api = require('./stream-api')();
- stream = api.stream;
- callback1 = api.processEntry;
- callback2 = api.done;
- handleError = api.handleError;
- handleFatalError = api.handleFatalError;
-
- stream.on('close', function () { aborted = true; });
- stream.on('pause', function () { paused = true; });
- stream.on('resume', function () { paused = false; });
- } else {
- handleError = function (err) { errors.push(err); };
- handleFatalError = function (err) {
- handleError(err);
- allProcessed(errors, null);
- };
- }
-
- if (isUndefined(opts)){
- handleFatalError(new Error (
- 'Need to pass at least one argument: opts! \n' +
- 'https://github.com/paulmillr/readdirp#options'
- )
- );
- return stream;
- }
-
- opts.root = opts.root || '.';
- opts.fileFilter = opts.fileFilter || function() { return true; };
- opts.directoryFilter = opts.directoryFilter || function() { return true; };
- opts.depth = typeof opts.depth === 'undefined' ? 999999999 : opts.depth;
- opts.entryType = opts.entryType || 'files';
-
- var statfn = opts.lstat === true ? fs.lstat.bind(fs) : fs.stat.bind(fs);
-
- if (isUndefined(callback2)) {
- fileProcessed = function() { };
- allProcessed = callback1;
- } else {
- fileProcessed = callback1;
- allProcessed = callback2;
- }
-
- function normalizeFilter (filter) {
-
- if (isUndefined(filter)) return undefined;
-
- function isNegated (filters) {
-
- function negated(f) {
- return f.indexOf('!') === 0;
- }
-
- var some = filters.some(negated);
- if (!some) {
- return false;
- } else {
- if (filters.every(negated)) {
- return true;
- } else {
- // if we detect illegal filters, bail out immediately
- throw new Error(
- 'Cannot mix negated with non negated glob filters: ' + filters + '\n' +
- 'https://github.com/paulmillr/readdirp#filters'
- );
- }
- }
- }
-
- // Turn all filters into a function
- if (isFunction(filter)) {
-
- return filter;
-
- } else if (isString(filter)) {
-
- return function (entryInfo) {
- return micromatch(entryInfo.name, filter.trim());
- };
-
- } else if (filter && Array.isArray(filter)) {
-
- if (filter) filter = filter.map(function (f) {
- return f.trim();
- });
-
- return isNegated(filter) ?
- // use AND to concat multiple negated filters
- function (entryInfo) {
- return filter.every(function (f) {
- return micromatch(entryInfo.name, f);
- });
- }
- :
- // use OR to concat multiple inclusive filters
- function (entryInfo) {
- return filter.some(function (f) {
- return micromatch(entryInfo.name, f);
- });
- };
- }
- }
-
- function processDir(currentDir, entries, callProcessed) {
- if (aborted) return;
- var total = entries.length
- , processed = 0
- , entryInfos = []
- ;
-
- fs.realpath(currentDir, function(err, realCurrentDir) {
- if (aborted) return;
- if (err) {
- handleError(err);
- callProcessed(entryInfos);
- return;
- }
-
- var relDir = path.relative(realRoot, realCurrentDir);
-
- if (entries.length === 0) {
- callProcessed([]);
- } else {
- entries.forEach(function (entry) {
-
- var fullPath = path.join(realCurrentDir, entry)
- , relPath = path.join(relDir, entry);
-
- statfn(fullPath, function (err, stat) {
- if (err) {
- handleError(err);
- } else {
- entryInfos.push({
- name : entry
- , path : relPath // relative to root
- , fullPath : fullPath
-
- , parentDir : relDir // relative to root
- , fullParentDir : realCurrentDir
-
- , stat : stat
- });
- }
- processed++;
- if (processed === total) callProcessed(entryInfos);
- });
- });
- }
- });
- }
-
- function readdirRec(currentDir, depth, callCurrentDirProcessed) {
- var args = arguments;
- if (aborted) return;
- if (paused) {
- setImmediate(function () {
- readdirRec.apply(null, args);
- })
- return;
- }
-
- fs.readdir(currentDir, function (err, entries) {
- if (err) {
- handleError(err);
- callCurrentDirProcessed();
- return;
- }
-
- processDir(currentDir, entries, function(entryInfos) {
-
- var subdirs = entryInfos
- .filter(function (ei) { return ei.stat.isDirectory() && opts.directoryFilter(ei); });
-
- subdirs.forEach(function (di) {
- if(opts.entryType === 'directories' || opts.entryType === 'both' || opts.entryType === 'all') {
- fileProcessed(di);
- }
- readdirResult.directories.push(di);
- });
-
- entryInfos
- .filter(function(ei) {
- var isCorrectType = opts.entryType === 'all' ?
- !ei.stat.isDirectory() : ei.stat.isFile() || ei.stat.isSymbolicLink();
- return isCorrectType && opts.fileFilter(ei);
- })
- .forEach(function (fi) {
- if(opts.entryType === 'files' || opts.entryType === 'both' || opts.entryType === 'all') {
- fileProcessed(fi);
- }
- readdirResult.files.push(fi);
- });
-
- var pendingSubdirs = subdirs.length;
-
- // Be done if no more subfolders exist or we reached the maximum desired depth
- if(pendingSubdirs === 0 || depth === opts.depth) {
- callCurrentDirProcessed();
- } else {
- // recurse into subdirs, keeping track of which ones are done
- // and call back once all are processed
- subdirs.forEach(function (subdir) {
- readdirRec(subdir.fullPath, depth + 1, function () {
- pendingSubdirs = pendingSubdirs - 1;
- if(pendingSubdirs === 0) {
- callCurrentDirProcessed();
- }
- });
- });
- }
- });
- });
- }
-
- // Validate and normalize filters
- try {
- opts.fileFilter = normalizeFilter(opts.fileFilter);
- opts.directoryFilter = normalizeFilter(opts.directoryFilter);
- } catch (err) {
- // if we detect illegal filters, bail out immediately
- handleFatalError(err);
- return stream;
- }
-
- // If filters were valid get on with the show
- fs.realpath(opts.root, function(err, res) {
- if (err) {
- handleFatalError(err);
- return stream;
- }
-
- realRoot = res;
- readdirRec(opts.root, 0, function () {
- // All errors are collected into the errors array
- if (errors.length > 0) {
- allProcessed(errors, readdirResult);
- } else {
- allProcessed(null, readdirResult);
- }
- });
- });
-
- return stream;
-}
-
-module.exports = readdir;
diff --git a/node_modules/readdirp/stream-api.js b/node_modules/readdirp/stream-api.js
deleted file mode 100644
index bffd1a9..0000000
--- a/node_modules/readdirp/stream-api.js
+++ /dev/null
@@ -1,98 +0,0 @@
-'use strict';
-
-var stream = require('readable-stream');
-var util = require('util');
-
-var Readable = stream.Readable;
-
-module.exports = ReaddirpReadable;
-
-util.inherits(ReaddirpReadable, Readable);
-
-function ReaddirpReadable (opts) {
- if (!(this instanceof ReaddirpReadable)) return new ReaddirpReadable(opts);
-
- opts = opts || {};
-
- opts.objectMode = true;
- Readable.call(this, opts);
-
- // backpressure not implemented at this point
- this.highWaterMark = Infinity;
-
- this._destroyed = false;
- this._paused = false;
- this._warnings = [];
- this._errors = [];
-
- this._pauseResumeErrors();
-}
-
-var proto = ReaddirpReadable.prototype;
-
-proto._pauseResumeErrors = function () {
- var self = this;
- self.on('pause', function () { self._paused = true });
- self.on('resume', function () {
- if (self._destroyed) return;
- self._paused = false;
-
- self._warnings.forEach(function (err) { self.emit('warn', err) });
- self._warnings.length = 0;
-
- self._errors.forEach(function (err) { self.emit('error', err) });
- self._errors.length = 0;
- })
-}
-
-// called for each entry
-proto._processEntry = function (entry) {
- if (this._destroyed) return;
- this.push(entry);
-}
-
-proto._read = function () { }
-
-proto.destroy = function () {
- // when stream is destroyed it will emit nothing further, not even errors or warnings
- this.push(null);
- this.readable = false;
- this._destroyed = true;
- this.emit('close');
-}
-
-proto._done = function () {
- this.push(null);
-}
-
-// we emit errors and warnings async since we may handle errors like invalid args
-// within the initial event loop before any event listeners subscribed
-proto._handleError = function (err) {
- var self = this;
- setImmediate(function () {
- if (self._paused) return self._warnings.push(err);
- if (!self._destroyed) self.emit('warn', err);
- });
-}
-
-proto._handleFatalError = function (err) {
- var self = this;
- setImmediate(function () {
- if (self._paused) return self._errors.push(err);
- if (!self._destroyed) self.emit('error', err);
- });
-}
-
-function createStreamAPI () {
- var stream = new ReaddirpReadable();
-
- return {
- stream : stream
- , processEntry : stream._processEntry.bind(stream)
- , done : stream._done.bind(stream)
- , handleError : stream._handleError.bind(stream)
- , handleFatalError : stream._handleFatalError.bind(stream)
- };
-}
-
-module.exports = createStreamAPI;
diff --git a/node_modules/regex-not/LICENSE b/node_modules/regex-not/LICENSE
deleted file mode 100644
index 8ee09d9..0000000
--- a/node_modules/regex-not/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016, 2018, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/node_modules/regex-not/README.md b/node_modules/regex-not/README.md
deleted file mode 100644
index 24d00e7..0000000
--- a/node_modules/regex-not/README.md
+++ /dev/null
@@ -1,133 +0,0 @@
-# regex-not [](https://www.npmjs.com/package/regex-not) [](https://npmjs.org/package/regex-not) [](https://npmjs.org/package/regex-not) [](https://travis-ci.org/jonschlinkert/regex-not)
-
-> Create a javascript regular expression for matching everything except for the given string.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save regex-not
-```
-
-## Usage
-
-```js
-var not = require('regex-not');
-```
-
-The main export is a function that takes a string an options object.
-
-```js
-not(string[, options]);
-```
-
-**Example**
-
-```js
-var not = require('regex-not');
-console.log(not('foo'));
-//=> /^(?:(?!^(?:foo)$).)+$/
-```
-
-**Strict matching**
-
-By default, the returned regex is for strictly (not) matching the exact given pattern (in other words, "match this string if it does NOT _exactly equal_ `foo`"):
-
-```js
-var re = not('foo');
-console.log(re.test('foo')); //=> false
-console.log(re.test('bar')); //=> true
-console.log(re.test('foobar')); //=> true
-console.log(re.test('barfoo')); //=> true
-```
-
-### .create
-
-Returns a string to allow you to create your own regex:
-
-```js
-console.log(not.create('foo'));
-//=> '(?:(?!^(?:foo)$).)+'
-```
-
-### Options
-
-**options.contains**
-
-You can relax strict matching by setting `options.contains` to true (in other words, "match this string if it does NOT _contain_ `foo`"):
-
-```js
-var re = not('foo');
-console.log(re.test('foo', {contains: true})); //=> false
-console.log(re.test('bar', {contains: true})); //=> true
-console.log(re.test('foobar', {contains: true})); //=> false
-console.log(re.test('barfoo', {contains: true})); //=> false
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [regex-cache](https://www.npmjs.com/package/regex-cache): Memoize the results of a call to the RegExp constructor, avoiding repetitious runtime compilation of… [more](https://github.com/jonschlinkert/regex-cache) | [homepage](https://github.com/jonschlinkert/regex-cache "Memoize the results of a call to the RegExp constructor, avoiding repetitious runtime compilation of the same string and options, resulting in surprising performance improvements.")
-* [to-regex](https://www.npmjs.com/package/to-regex): Generate a regex from a string or array of strings. | [homepage](https://github.com/jonschlinkert/to-regex "Generate a regex from a string or array of strings.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 9 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [doowb](https://github.com/doowb) |
-| 1 | [EdwardBetts](https://github.com/EdwardBetts) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert)
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on February 19, 2018._
\ No newline at end of file
diff --git a/node_modules/regex-not/index.js b/node_modules/regex-not/index.js
deleted file mode 100644
index 02bfed4..0000000
--- a/node_modules/regex-not/index.js
+++ /dev/null
@@ -1,72 +0,0 @@
-'use strict';
-
-var extend = require('extend-shallow');
-var safe = require('safe-regex');
-
-/**
- * The main export is a function that takes a `pattern` string and an `options` object.
- *
- * ```js
- & var not = require('regex-not');
- & console.log(not('foo'));
- & //=> /^(?:(?!^(?:foo)$).)*$/
- * ```
- *
- * @param {String} `pattern`
- * @param {Object} `options`
- * @return {RegExp} Converts the given `pattern` to a regex using the specified `options`.
- * @api public
- */
-
-function toRegex(pattern, options) {
- return new RegExp(toRegex.create(pattern, options));
-}
-
-/**
- * Create a regex-compatible string from the given `pattern` and `options`.
- *
- * ```js
- & var not = require('regex-not');
- & console.log(not.create('foo'));
- & //=> '^(?:(?!^(?:foo)$).)*$'
- * ```
- * @param {String} `pattern`
- * @param {Object} `options`
- * @return {String}
- * @api public
- */
-
-toRegex.create = function(pattern, options) {
- if (typeof pattern !== 'string') {
- throw new TypeError('expected a string');
- }
-
- var opts = extend({}, options);
- if (opts.contains === true) {
- opts.strictNegate = false;
- }
-
- var open = opts.strictOpen !== false ? '^' : '';
- var close = opts.strictClose !== false ? '$' : '';
- var endChar = opts.endChar ? opts.endChar : '+';
- var str = pattern;
-
- if (opts.strictNegate === false) {
- str = '(?:(?!(?:' + pattern + ')).)' + endChar;
- } else {
- str = '(?:(?!^(?:' + pattern + ')$).)' + endChar;
- }
-
- var res = open + str + close;
- if (opts.safe === true && safe(res) === false) {
- throw new Error('potentially unsafe regular expression: ' + res);
- }
-
- return res;
-};
-
-/**
- * Expose `toRegex`
- */
-
-module.exports = toRegex;
diff --git a/node_modules/regex-not/node_modules/extend-shallow/LICENSE b/node_modules/regex-not/node_modules/extend-shallow/LICENSE
deleted file mode 100644
index 99c9369..0000000
--- a/node_modules/regex-not/node_modules/extend-shallow/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2015, 2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/regex-not/node_modules/extend-shallow/README.md b/node_modules/regex-not/node_modules/extend-shallow/README.md
deleted file mode 100644
index dee226f..0000000
--- a/node_modules/regex-not/node_modules/extend-shallow/README.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# extend-shallow [](https://www.npmjs.com/package/extend-shallow) [](https://npmjs.org/package/extend-shallow) [](https://npmjs.org/package/extend-shallow) [](https://travis-ci.org/jonschlinkert/extend-shallow)
-
-> Extend an object with the properties of additional objects. node.js/javascript util.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save extend-shallow
-```
-
-## Usage
-
-```js
-var extend = require('extend-shallow');
-
-extend({a: 'b'}, {c: 'd'})
-//=> {a: 'b', c: 'd'}
-```
-
-Pass an empty object to shallow clone:
-
-```js
-var obj = {};
-extend(obj, {a: 'b'}, {c: 'd'})
-//=> {a: 'b', c: 'd'}
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.")
-* [for-in](https://www.npmjs.com/package/for-in): Iterate over the own and inherited enumerable properties of an object, and return an object… [more](https://github.com/jonschlinkert/for-in) | [homepage](https://github.com/jonschlinkert/for-in "Iterate over the own and inherited enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js")
-* [for-own](https://www.npmjs.com/package/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) | [homepage](https://github.com/jonschlinkert/for-own "Iterate over the own enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js.")
-* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
-* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 33 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 1 | [pdehaan](https://github.com/pdehaan) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 19, 2017._
\ No newline at end of file
diff --git a/node_modules/regex-not/node_modules/extend-shallow/index.js b/node_modules/regex-not/node_modules/extend-shallow/index.js
deleted file mode 100644
index c9582f8..0000000
--- a/node_modules/regex-not/node_modules/extend-shallow/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-var isExtendable = require('is-extendable');
-var assignSymbols = require('assign-symbols');
-
-module.exports = Object.assign || function(obj/*, objects*/) {
- if (obj === null || typeof obj === 'undefined') {
- throw new TypeError('Cannot convert undefined or null to object');
- }
- if (!isObject(obj)) {
- obj = {};
- }
- for (var i = 1; i < arguments.length; i++) {
- var val = arguments[i];
- if (isString(val)) {
- val = toObject(val);
- }
- if (isObject(val)) {
- assign(obj, val);
- assignSymbols(obj, val);
- }
- }
- return obj;
-};
-
-function assign(a, b) {
- for (var key in b) {
- if (hasOwn(b, key)) {
- a[key] = b[key];
- }
- }
-}
-
-function isString(val) {
- return (val && typeof val === 'string');
-}
-
-function toObject(str) {
- var obj = {};
- for (var i in str) {
- obj[i] = str[i];
- }
- return obj;
-}
-
-function isObject(val) {
- return (val && typeof val === 'object') || isExtendable(val);
-}
-
-/**
- * Returns true if the given `key` is an own property of `obj`.
- */
-
-function hasOwn(obj, key) {
- return Object.prototype.hasOwnProperty.call(obj, key);
-}
-
-function isEnum(obj, key) {
- return Object.prototype.propertyIsEnumerable.call(obj, key);
-}
diff --git a/node_modules/regex-not/node_modules/extend-shallow/package.json b/node_modules/regex-not/node_modules/extend-shallow/package.json
deleted file mode 100644
index e5e9105..0000000
--- a/node_modules/regex-not/node_modules/extend-shallow/package.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "name": "extend-shallow",
- "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
- "version": "3.0.2",
- "homepage": "https://github.com/jonschlinkert/extend-shallow",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Peter deHaan (http://about.me/peterdehaan)"
- ],
- "repository": "jonschlinkert/extend-shallow",
- "bugs": {
- "url": "https://github.com/jonschlinkert/extend-shallow/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "devDependencies": {
- "array-slice": "^1.0.0",
- "benchmarked": "^2.0.0",
- "for-own": "^1.0.0",
- "gulp-format-md": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.1",
- "minimist": "^1.2.0",
- "mocha": "^3.5.3",
- "object-assign": "^4.1.1"
- },
- "keywords": [
- "assign",
- "clone",
- "extend",
- "merge",
- "obj",
- "object",
- "object-assign",
- "object.assign",
- "prop",
- "properties",
- "property",
- "props",
- "shallow",
- "util",
- "utility",
- "utils",
- "value"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "related": {
- "list": [
- "extend-shallow",
- "for-in",
- "for-own",
- "is-plain-object",
- "isobject",
- "kind-of"
- ]
- },
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/regex-not/node_modules/is-extendable/LICENSE b/node_modules/regex-not/node_modules/is-extendable/LICENSE
deleted file mode 100644
index c0d7f13..0000000
--- a/node_modules/regex-not/node_modules/is-extendable/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-2017, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/regex-not/node_modules/is-extendable/README.md b/node_modules/regex-not/node_modules/is-extendable/README.md
deleted file mode 100644
index 875b56a..0000000
--- a/node_modules/regex-not/node_modules/is-extendable/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# is-extendable [](https://www.npmjs.com/package/is-extendable) [](https://npmjs.org/package/is-extendable) [](https://npmjs.org/package/is-extendable) [](https://travis-ci.org/jonschlinkert/is-extendable)
-
-> Returns true if a value is a plain object, array or function.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save is-extendable
-```
-
-## Usage
-
-```js
-var isExtendable = require('is-extendable');
-```
-
-Returns true if the value is any of the following:
-
-* array
-* plain object
-* function
-
-## Notes
-
-All objects in JavaScript can have keys, but it's a pain to check for this, since we ether need to verify that the value is not `null` or `undefined` and:
-
-* the value is not a primitive, or
-* that the object is a plain object, function or array
-
-Also note that an `extendable` object is not the same as an [extensible object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible), which is one that (in es6) is not sealed, frozen, or marked as non-extensible using `preventExtensions`.
-
-## Release history
-
-### v1.0.0 - 2017/07/20
-
-**Breaking changes**
-
-* No longer considers date, regex or error objects to be extendable
-
-## About
-
-### Related projects
-
-* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target… [more](https://github.com/jonschlinkert/assign-deep) | [homepage](https://github.com/jonschlinkert/assign-deep "Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target (first) object.")
-* [is-equal-shallow](https://www.npmjs.com/package/is-equal-shallow): Does a shallow comparison of two objects, returning false if the keys or values differ. | [homepage](https://github.com/jonschlinkert/is-equal-shallow "Does a shallow comparison of two objects, returning false if the keys or values differ.")
-* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
-* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
-* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-### Running tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 20, 2017._
\ No newline at end of file
diff --git a/node_modules/regex-not/node_modules/is-extendable/index.d.ts b/node_modules/regex-not/node_modules/is-extendable/index.d.ts
deleted file mode 100644
index b96d507..0000000
--- a/node_modules/regex-not/node_modules/is-extendable/index.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export = isExtendable;
-
-declare function isExtendable(val: any): boolean;
-
-declare namespace isExtendable {}
diff --git a/node_modules/regex-not/node_modules/is-extendable/index.js b/node_modules/regex-not/node_modules/is-extendable/index.js
deleted file mode 100644
index a8b26ad..0000000
--- a/node_modules/regex-not/node_modules/is-extendable/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*!
- * is-extendable
- *
- * Copyright (c) 2015-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-'use strict';
-
-var isPlainObject = require('is-plain-object');
-
-module.exports = function isExtendable(val) {
- return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);
-};
diff --git a/node_modules/regex-not/node_modules/is-extendable/package.json b/node_modules/regex-not/node_modules/is-extendable/package.json
deleted file mode 100644
index 2aaab65..0000000
--- a/node_modules/regex-not/node_modules/is-extendable/package.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "name": "is-extendable",
- "description": "Returns true if a value is a plain object, array or function.",
- "version": "1.0.1",
- "homepage": "https://github.com/jonschlinkert/is-extendable",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/is-extendable",
- "bugs": {
- "url": "https://github.com/jonschlinkert/is-extendable/issues"
- },
- "license": "MIT",
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "main": "index.js",
- "types": "index.d.ts",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "devDependencies": {
- "gulp-format-md": "^1.0.0",
- "mocha": "^3.4.2"
- },
- "keywords": [
- "array",
- "assign",
- "check",
- "date",
- "extend",
- "extendable",
- "extensible",
- "function",
- "is",
- "object",
- "regex",
- "test"
- ],
- "verb": {
- "related": {
- "list": [
- "assign-deep",
- "is-equal-shallow",
- "is-plain-object",
- "isobject",
- "kind-of"
- ]
- },
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/regex-not/package.json b/node_modules/regex-not/package.json
deleted file mode 100644
index 0320d53..0000000
--- a/node_modules/regex-not/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "name": "regex-not",
- "description": "Create a javascript regular expression for matching everything except for the given string.",
- "version": "1.0.2",
- "homepage": "https://github.com/jonschlinkert/regex-not",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/regex-not",
- "bugs": {
- "url": "https://github.com/jonschlinkert/regex-not/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "dependencies": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "devDependencies": {
- "gulp-format-md": "^1.0.0",
- "mocha": "^3.5.3"
- },
- "keywords": [
- "exec",
- "match",
- "negate",
- "negation",
- "not",
- "regex",
- "regular expression",
- "test"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "regex-cache",
- "to-regex"
- ]
- },
- "reflinks": [
- "verb",
- "verb-generate-readme"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/remove-trailing-separator/history.md b/node_modules/remove-trailing-separator/history.md
deleted file mode 100644
index e15e8a4..0000000
--- a/node_modules/remove-trailing-separator/history.md
+++ /dev/null
@@ -1,17 +0,0 @@
-## History
-
-### 1.1.0 - 16th Aug 2017
-
-- [f4576e3](https://github.com/darsain/remove-trailing-separator/commit/f4576e3638c39b794998b533fffb27854dcbee01) Implement faster slash slicing
-
-### 1.0.2 - 07th Jun 2017
-
-- [8e13ecb](https://github.com/darsain/remove-trailing-separator/commit/8e13ecbfd7b9f5fdf97c5d5ff923e4718b874e31) ES5 compatibility
-
-### 1.0.1 - 25th Sep 2016
-
-- [b78606d](https://github.com/darsain/remove-trailing-separator/commit/af90b4e153a4527894741af6c7005acaeb78606d) Remove backslash only on win32 systems
-
-### 1.0.0 - 24th Sep 2016
-
-Initial release.
diff --git a/node_modules/remove-trailing-separator/index.js b/node_modules/remove-trailing-separator/index.js
deleted file mode 100644
index 512306b..0000000
--- a/node_modules/remove-trailing-separator/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var isWin = process.platform === 'win32';
-
-module.exports = function (str) {
- var i = str.length - 1;
- if (i < 2) {
- return str;
- }
- while (isSeparator(str, i)) {
- i--;
- }
- return str.substr(0, i + 1);
-};
-
-function isSeparator(str, i) {
- var char = str[i];
- return i > 0 && (char === '/' || (isWin && char === '\\'));
-}
diff --git a/node_modules/remove-trailing-separator/license b/node_modules/remove-trailing-separator/license
deleted file mode 100644
index a169aff..0000000
--- a/node_modules/remove-trailing-separator/license
+++ /dev/null
@@ -1,3 +0,0 @@
-Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/remove-trailing-separator/package.json b/node_modules/remove-trailing-separator/package.json
deleted file mode 100644
index 47ef27a..0000000
--- a/node_modules/remove-trailing-separator/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "remove-trailing-separator",
- "version": "1.1.0",
- "description": "Removes separators from the end of the string.",
- "main": "index.js",
- "files": [
- "index.js"
- ],
- "scripts": {
- "lint": "xo",
- "pretest": "npm run lint",
- "test": "nyc ava",
- "report": "nyc report --reporter=html"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/darsain/remove-trailing-separator.git"
- },
- "keywords": [
- "remove",
- "strip",
- "trailing",
- "separator"
- ],
- "author": "darsain",
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/darsain/remove-trailing-separator/issues"
- },
- "homepage": "https://github.com/darsain/remove-trailing-separator#readme",
- "devDependencies": {
- "ava": "^0.16.0",
- "coveralls": "^2.11.14",
- "nyc": "^8.3.0",
- "xo": "^0.16.0"
- }
-}
diff --git a/node_modules/remove-trailing-separator/readme.md b/node_modules/remove-trailing-separator/readme.md
deleted file mode 100644
index 747086a..0000000
--- a/node_modules/remove-trailing-separator/readme.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# remove-trailing-separator
-
-[![NPM version][npm-img]][npm-url] [![Build Status: Linux][travis-img]][travis-url] [![Build Status: Windows][appveyor-img]][appveyor-url] [![Coverage Status][coveralls-img]][coveralls-url]
-
-Removes all separators from the end of a string.
-
-## Install
-
-```
-npm install remove-trailing-separator
-```
-
-## Examples
-
-```js
-const removeTrailingSeparator = require('remove-trailing-separator');
-
-removeTrailingSeparator('/foo/bar/') // '/foo/bar'
-removeTrailingSeparator('/foo/bar///') // '/foo/bar'
-
-// leaves only/last separator
-removeTrailingSeparator('/') // '/'
-removeTrailingSeparator('///') // '/'
-
-// returns empty string
-removeTrailingSeparator('') // ''
-```
-
-## Notable backslash, or win32 separator behavior
-
-`\` is considered a separator only on WIN32 systems. All POSIX compliant systems
-see backslash as a valid file name character, so it would break POSIX compliance
-to remove it there.
-
-In practice, this means that this code will return different things depending on
-what system it runs on:
-
-```js
-removeTrailingSeparator('\\foo\\')
-// UNIX => '\\foo\\'
-// WIN32 => '\\foo'
-```
-
-[npm-url]: https://npmjs.org/package/remove-trailing-separator
-[npm-img]: https://badge.fury.io/js/remove-trailing-separator.svg
-[travis-url]: https://travis-ci.org/darsain/remove-trailing-separator
-[travis-img]: https://travis-ci.org/darsain/remove-trailing-separator.svg?branch=master
-[appveyor-url]: https://ci.appveyor.com/project/darsain/remove-trailing-separator/branch/master
-[appveyor-img]: https://ci.appveyor.com/api/projects/status/wvg9a93rrq95n2xl/branch/master?svg=true
-[coveralls-url]: https://coveralls.io/github/darsain/remove-trailing-separator?branch=master
-[coveralls-img]: https://coveralls.io/repos/github/darsain/remove-trailing-separator/badge.svg?branch=master
diff --git a/node_modules/repeat-element/LICENSE b/node_modules/repeat-element/LICENSE
deleted file mode 100644
index 7cccaf9..0000000
--- a/node_modules/repeat-element/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-present, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/repeat-element/README.md b/node_modules/repeat-element/README.md
deleted file mode 100644
index 6006418..0000000
--- a/node_modules/repeat-element/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# repeat-element [](https://www.npmjs.com/package/repeat-element) [](https://npmjs.org/package/repeat-element) [](https://npmjs.org/package/repeat-element) [](https://travis-ci.org/jonschlinkert/repeat-element)
-
-> Create an array by repeating the given value n times.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save repeat-element
-```
-
-## Usage
-
-```js
-const repeat = require('repeat-element');
-
-repeat('a', 5);
-//=> ['a', 'a', 'a', 'a', 'a']
-
-repeat('a', 1);
-//=> ['a']
-
-repeat('a', 0);
-//=> []
-
-repeat(null, 5)
-//» [ null, null, null, null, null ]
-
-repeat({some: 'object'}, 5)
-//» [ { some: 'object' },
-// { some: 'object' },
-// { some: 'object' },
-// { some: 'object' },
-// { some: 'object' } ]
-
-repeat(5, 5)
-//» [ 5, 5, 5, 5, 5 ]
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-Running Tests
-
-Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-
-```sh
-$ npm install && npm test
-```
-
-
-
-
-Building docs
-
-_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
-
-To generate the readme, run the following command:
-
-```sh
-$ npm install -g verbose/verb#dev verb-generate-readme && verb
-```
-
-
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 17 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 3 | [LinusU](https://github.com/LinusU) |
-| 1 | [architectcodes](https://github.com/architectcodes) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).
-Released under the [MIT License](LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on August 19, 2018._
\ No newline at end of file
diff --git a/node_modules/repeat-element/index.js b/node_modules/repeat-element/index.js
deleted file mode 100644
index dde8a27..0000000
--- a/node_modules/repeat-element/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*!
- * repeat-element
- *
- * Copyright (c) 2015-present, Jon Schlinkert.
- * Licensed under the MIT license.
- */
-
-'use strict';
-
-module.exports = function repeat(ele, num) {
- if (Array.prototype.fill) {
- return new Array(num).fill(ele);
- }
-
- var arr = new Array(num);
-
- for (var i = 0; i < num; i++) {
- arr[i] = ele;
- }
-
- return arr;
-};
diff --git a/node_modules/repeat-element/package.json b/node_modules/repeat-element/package.json
deleted file mode 100644
index 537055f..0000000
--- a/node_modules/repeat-element/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "repeat-element",
- "description": "Create an array by repeating the given value n times.",
- "version": "1.1.4",
- "homepage": "https://github.com/jonschlinkert/repeat-element",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "repository": "jonschlinkert/repeat-element",
- "bugs": {
- "url": "https://github.com/jonschlinkert/repeat-element/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "benchmarked": "^2.0.0",
- "chalk": "^2.4.1",
- "glob": "^7.1.2",
- "gulp-format-md": "^1.0.0",
- "minimist": "^1.2.0",
- "mocha": "^3.5.3"
- },
- "keywords": [
- "array",
- "element",
- "repeat",
- "string"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- }
- }
-}
diff --git a/node_modules/repeat-string/LICENSE b/node_modules/repeat-string/LICENSE
deleted file mode 100644
index 39245ac..0000000
--- a/node_modules/repeat-string/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2016, Jon Schlinkert.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/repeat-string/README.md b/node_modules/repeat-string/README.md
deleted file mode 100644
index aaa5e91..0000000
--- a/node_modules/repeat-string/README.md
+++ /dev/null
@@ -1,136 +0,0 @@
-# repeat-string [](https://www.npmjs.com/package/repeat-string) [](https://npmjs.org/package/repeat-string) [](https://npmjs.org/package/repeat-string) [](https://travis-ci.org/jonschlinkert/repeat-string)
-
-> Repeat the given string n times. Fastest implementation for repeating a string.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save repeat-string
-```
-
-## Usage
-
-### [repeat](index.js#L41)
-
-Repeat the given `string` the specified `number` of times.
-
-**Example:**
-
-**Example**
-
-```js
-var repeat = require('repeat-string');
-repeat('A', 5);
-//=> AAAAA
-```
-
-**Params**
-
-* `string` **{String}**: The string to repeat
-* `number` **{Number}**: The number of times to repeat the string
-* `returns` **{String}**: Repeated string
-
-## Benchmarks
-
-Repeat string is significantly faster than the native method (which is itself faster than [repeating](https://github.com/sindresorhus/repeating)):
-
-```sh
-# 2x
-repeat-string █████████████████████████ (26,953,977 ops/sec)
-repeating █████████ (9,855,695 ops/sec)
-native ██████████████████ (19,453,895 ops/sec)
-
-# 3x
-repeat-string █████████████████████████ (19,445,252 ops/sec)
-repeating ███████████ (8,661,565 ops/sec)
-native ████████████████████ (16,020,598 ops/sec)
-
-# 10x
-repeat-string █████████████████████████ (23,792,521 ops/sec)
-repeating █████████ (8,571,332 ops/sec)
-native ███████████████ (14,582,955 ops/sec)
-
-# 50x
-repeat-string █████████████████████████ (23,640,179 ops/sec)
-repeating █████ (5,505,509 ops/sec)
-native ██████████ (10,085,557 ops/sec)
-
-# 250x
-repeat-string █████████████████████████ (23,489,618 ops/sec)
-repeating ████ (3,962,937 ops/sec)
-native ████████ (7,724,892 ops/sec)
-
-# 2000x
-repeat-string █████████████████████████ (20,315,172 ops/sec)
-repeating ████ (3,297,079 ops/sec)
-native ███████ (6,203,331 ops/sec)
-
-# 20000x
-repeat-string █████████████████████████ (23,382,915 ops/sec)
-repeating ███ (2,980,058 ops/sec)
-native █████ (5,578,808 ops/sec)
-```
-
-**Run the benchmarks**
-
-Install dev dependencies:
-
-```sh
-npm i -d && node benchmark
-```
-
-## About
-
-### Related projects
-
-[repeat-element](https://www.npmjs.com/package/repeat-element): Create an array by repeating the given value n times. | [homepage](https://github.com/jonschlinkert/repeat-element "Create an array by repeating the given value n times.")
-
-### Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-### Contributors
-
-| **Commits** | **Contributor**
|
-| --- | --- |
-| 51 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 2 | [LinusU](https://github.com/LinusU) |
-| 2 | [tbusser](https://github.com/tbusser) |
-| 1 | [doowb](https://github.com/doowb) |
-| 1 | [wooorm](https://github.com/wooorm) |
-
-### Building docs
-
-_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_
-
-To generate the readme and API documentation with [verb](https://github.com/verbose/verb):
-
-```sh
-$ npm install -g verb verb-generate-readme && verb
-```
-
-### Running tests
-
-Install dev dependencies:
-
-```sh
-$ npm install -d && npm test
-```
-
-### Author
-
-**Jon Schlinkert**
-
-* [github/jonschlinkert](https://github.com/jonschlinkert)
-* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
-
-### License
-
-Copyright © 2016, [Jon Schlinkert](http://github.com/jonschlinkert).
-Released under the [MIT license](https://github.com/jonschlinkert/repeat-string/blob/master/LICENSE).
-
-***
-
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.2.0, on October 23, 2016._
\ No newline at end of file
diff --git a/node_modules/repeat-string/index.js b/node_modules/repeat-string/index.js
deleted file mode 100644
index 4459afd..0000000
--- a/node_modules/repeat-string/index.js
+++ /dev/null
@@ -1,70 +0,0 @@
-/*!
- * repeat-string
- *
- * Copyright (c) 2014-2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
-'use strict';
-
-/**
- * Results cache
- */
-
-var res = '';
-var cache;
-
-/**
- * Expose `repeat`
- */
-
-module.exports = repeat;
-
-/**
- * Repeat the given `string` the specified `number`
- * of times.
- *
- * **Example:**
- *
- * ```js
- * var repeat = require('repeat-string');
- * repeat('A', 5);
- * //=> AAAAA
- * ```
- *
- * @param {String} `string` The string to repeat
- * @param {Number} `number` The number of times to repeat the string
- * @return {String} Repeated string
- * @api public
- */
-
-function repeat(str, num) {
- if (typeof str !== 'string') {
- throw new TypeError('expected a string');
- }
-
- // cover common, quick use cases
- if (num === 1) return str;
- if (num === 2) return str + str;
-
- var max = str.length * num;
- if (cache !== str || typeof cache === 'undefined') {
- cache = str;
- res = '';
- } else if (res.length >= max) {
- return res.substr(0, max);
- }
-
- while (max > res.length && num > 1) {
- if (num & 1) {
- res += str;
- }
-
- num >>= 1;
- str += str;
- }
-
- res += str;
- res = res.substr(0, max);
- return res;
-}
diff --git a/node_modules/repeat-string/package.json b/node_modules/repeat-string/package.json
deleted file mode 100644
index 09f8892..0000000
--- a/node_modules/repeat-string/package.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "name": "repeat-string",
- "description": "Repeat the given string n times. Fastest implementation for repeating a string.",
- "version": "1.6.1",
- "homepage": "https://github.com/jonschlinkert/repeat-string",
- "author": "Jon Schlinkert (http://github.com/jonschlinkert)",
- "contributors": [
- "Brian Woodward (https://github.com/doowb)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Linus Unnebäck (http://linus.unnebäck.se)",
- "Thijs Busser (http://tbusser.net)",
- "Titus (wooorm.com)"
- ],
- "repository": "jonschlinkert/repeat-string",
- "bugs": {
- "url": "https://github.com/jonschlinkert/repeat-string/issues"
- },
- "license": "MIT",
- "files": [
- "index.js"
- ],
- "main": "index.js",
- "engines": {
- "node": ">=0.10"
- },
- "scripts": {
- "test": "mocha"
- },
- "devDependencies": {
- "ansi-cyan": "^0.1.1",
- "benchmarked": "^0.2.5",
- "gulp-format-md": "^0.1.11",
- "isobject": "^2.1.0",
- "mocha": "^3.1.2",
- "repeating": "^3.0.0",
- "text-table": "^0.2.0",
- "yargs-parser": "^4.0.2"
- },
- "keywords": [
- "fast",
- "fastest",
- "fill",
- "left",
- "left-pad",
- "multiple",
- "pad",
- "padding",
- "repeat",
- "repeating",
- "repetition",
- "right",
- "right-pad",
- "string",
- "times"
- ],
- "verb": {
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "related": {
- "list": [
- "repeat-element"
- ]
- },
- "helpers": [
- "./benchmark/helper.js"
- ],
- "reflinks": [
- "verb"
- ]
- }
-}
diff --git a/node_modules/resolve-url/.jshintrc b/node_modules/resolve-url/.jshintrc
deleted file mode 100644
index aaf3358..0000000
--- a/node_modules/resolve-url/.jshintrc
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "bitwise": true,
- "camelcase": true,
- "curly": false,
- "eqeqeq": true,
- "es3": true,
- "forin": true,
- "immed": false,
- "indent": false,
- "latedef": "nofunc",
- "newcap": false,
- "noarg": true,
- "noempty": true,
- "nonew": false,
- "plusplus": false,
- "quotmark": false,
- "undef": true,
- "unused": "vars",
- "strict": false,
- "trailing": true,
- "maxparams": 5,
- "maxdepth": false,
- "maxstatements": false,
- "maxcomplexity": false,
- "maxlen": 100,
-
- "asi": true,
- "expr": true,
- "globalstrict": true,
- "smarttabs": true,
- "sub": true,
-
- "node": true,
- "browser": true,
- "globals": {
- "describe": false,
- "it": false,
- "before": false,
- "beforeEach": false,
- "after": false,
- "afterEach": false,
- "define": false
- }
-}
diff --git a/node_modules/resolve-url/LICENSE b/node_modules/resolve-url/LICENSE
deleted file mode 100644
index 0595be3..0000000
--- a/node_modules/resolve-url/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 Simon Lydell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/resolve-url/bower.json b/node_modules/resolve-url/bower.json
deleted file mode 100644
index 31aa6f4..0000000
--- a/node_modules/resolve-url/bower.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "resolve-url",
- "version": "0.2.1",
- "description": "Like Node.js’ `path.resolve`/`url.resolve` for the browser.",
- "authors": ["Simon Lydell"],
- "license": "MIT",
- "main": "resolve-url.js",
- "keywords": [
- "resolve",
- "url"
- ],
- "ignore": [
- ".*"
- ]
-}
diff --git a/node_modules/resolve-url/changelog.md b/node_modules/resolve-url/changelog.md
deleted file mode 100644
index 2a4a630..0000000
--- a/node_modules/resolve-url/changelog.md
+++ /dev/null
@@ -1,15 +0,0 @@
-### Version 0.2.1 (2014-02-25) ###
-
-- Fix edge case when (accidentally) supplying only one argument, and that
- argument happens to be a falsy value such as `undefined` or `null`.
-
-
-### Version 0.2.0 (2014-02-24) ###
-
-- Disallow passing 0 arguments. It’s weird and inconsistent between browsers.
- (Backwards incompatible change.)
-
-
-### Version 0.1.0 (2014-02-23) ###
-
-- Initial release.
diff --git a/node_modules/resolve-url/component.json b/node_modules/resolve-url/component.json
deleted file mode 100644
index f37cf00..0000000
--- a/node_modules/resolve-url/component.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "resolve-url",
- "version": "0.2.1",
- "license": "MIT",
- "description": "Like Node.js’ `path.resolve`/`url.resolve` for the browser.",
- "main": "resolve-url.js",
- "repo": "lydell/resolve-url",
- "keywords": [
- "resolve",
- "url"
- ],
- "scripts": [
- "resolve-url.js"
- ]
-}
diff --git a/node_modules/resolve-url/package.json b/node_modules/resolve-url/package.json
deleted file mode 100644
index 9442366..0000000
--- a/node_modules/resolve-url/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "resolve-url",
- "version": "0.2.1",
- "description": "Like Node.js’ `path.resolve`/`url.resolve` for the browser.",
- "author": "Simon Lydell",
- "license": "MIT",
- "main": "resolve-url.js",
- "repository": "lydell/resolve-url",
- "keywords": [
- "resolve",
- "url"
- ],
- "scripts": {
- "test": "jshint resolve-url.js test/ && testling -u"
- },
- "devDependencies": {
- "testling": "~1.6.0",
- "jshint": "~2.4.3",
- "tape": "~2.5.0"
- },
- "testling": {
- "files": "test/*.js",
- "browsers": [
- "ie/8..latest",
- "chrome/latest",
- "firefox/latest",
- "opera/12",
- "opera/latest",
- "safari/5",
- "iphone/6",
- "android-browser/4"
- ]
- }
-}
diff --git a/node_modules/resolve-url/readme.md b/node_modules/resolve-url/readme.md
deleted file mode 100644
index edfff73..0000000
--- a/node_modules/resolve-url/readme.md
+++ /dev/null
@@ -1,83 +0,0 @@
-Overview
-========
-
-[](https://ci.testling.com/lydell/resolve-url)
-
-Like Node.js’ [`path.resolve`]/[`url.resolve`] for the browser.
-
-```js
-var resolveUrl = require("resolve-url")
-
-window.location
-// https://example.com/articles/resolving-urls/edit
-
-resolveUrl("remove")
-// https://example.com/articles/resolving-urls/remove
-
-resolveUrl("/static/scripts/app.js")
-// https://example.com/static/scripts/app.js
-
-// Imagine /static/scripts/app.js contains `//# sourceMappingURL=../source-maps/app.js.map`
-resolveUrl("/static/scripts/app.js", "../source-maps/app.js.map")
-// https://example.com/static/source-maps/app.js.map
-
-resolveUrl("/static/scripts/app.js", "../source-maps/app.js.map", "../coffee/app.coffee")
-// https://example.com/static/coffee/app.coffee
-
-resolveUrl("//cdn.example.com/jquery.js")
-// https://cdn.example.com/jquery.js
-
-resolveUrl("http://foo.org/")
-// http://foo.org/
-```
-
-
-Installation
-============
-
-- `npm install resolve-url`
-- `bower install resolve-url`
-- `component install lydell/resolve-url`
-
-Works with CommonJS, AMD and browser globals, through UMD.
-
-
-Usage
-=====
-
-### `resolveUrl(...urls)` ###
-
-Pass one or more urls. Resolves the last one to an absolute url, using the
-previous ones and `window.location`.
-
-It’s like starting out on `window.location`, and then clicking links with the
-urls as `href` attributes in order, from left to right.
-
-Unlike Node.js’ [`path.resolve`], this function always goes through all of the
-arguments, from left to right. `path.resolve` goes from right to left and only
-in the worst case goes through them all. Should that matter.
-
-Actually, the function is _really_ like clicking a lot of links in series: An
-actual `` gets its `href` attribute set for each url! This means that the
-url resolution of the browser is used, which makes this module really
-light-weight.
-
-Also note that this functions deals with urls, not paths, so in that respect it
-has more in common with Node.js’ [`url.resolve`]. But the arguments are more
-like [`path.resolve`].
-
-[`path.resolve`]: http://nodejs.org/api/path.html#path_path_resolve_from_to
-[`url.resolve`]: http://nodejs.org/api/url.html#url_url_resolve_from_to
-
-
-Tests
-=====
-
-Run `npm test`, which lints the code and then gives you a link to open in a
-browser of choice (using `testling`).
-
-
-License
-=======
-
-[The X11 (“MIT”) License](LICENSE).
diff --git a/node_modules/resolve-url/resolve-url.js b/node_modules/resolve-url/resolve-url.js
deleted file mode 100644
index 19e8d04..0000000
--- a/node_modules/resolve-url/resolve-url.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2014 Simon Lydell
-// X11 (“MIT”) Licensed. (See LICENSE.)
-
-void (function(root, factory) {
- if (typeof define === "function" && define.amd) {
- define(factory)
- } else if (typeof exports === "object") {
- module.exports = factory()
- } else {
- root.resolveUrl = factory()
- }
-}(this, function() {
-
- function resolveUrl(/* ...urls */) {
- var numUrls = arguments.length
-
- if (numUrls === 0) {
- throw new Error("resolveUrl requires at least one argument; got none.")
- }
-
- var base = document.createElement("base")
- base.href = arguments[0]
-
- if (numUrls === 1) {
- return base.href
- }
-
- var head = document.getElementsByTagName("head")[0]
- head.insertBefore(base, head.firstChild)
-
- var a = document.createElement("a")
- var resolved
-
- for (var index = 1; index < numUrls; index++) {
- a.href = arguments[index]
- resolved = a.href
- base.href = resolved
- }
-
- head.removeChild(base)
-
- return resolved
- }
-
- return resolveUrl
-
-}));
diff --git a/node_modules/resolve-url/test/resolve-url.js b/node_modules/resolve-url/test/resolve-url.js
deleted file mode 100644
index 18532ed..0000000
--- a/node_modules/resolve-url/test/resolve-url.js
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2014 Simon Lydell
-// X11 (“MIT”) Licensed. (See LICENSE.)
-
-var test = require("tape")
-
-var resolveUrl = require("../")
-
-"use strict"
-
-test("resolveUrl", function(t) {
-
- t.plan(7)
-
- t.equal(typeof resolveUrl, "function", "is a function")
-
- t.equal(
- resolveUrl("https://example.com/"),
- "https://example.com/"
- )
-
- var loc = "https://example.com/articles/resolving-urls/edit"
-
- t.equal(
- resolveUrl(loc, "remove"),
- "https://example.com/articles/resolving-urls/remove"
- )
-
- t.equal(
- resolveUrl(loc, "/static/scripts/app.js"),
- "https://example.com/static/scripts/app.js"
- )
-
- t.equal(
- resolveUrl(loc, "/static/scripts/app.js", "../source-maps/app.js.map"),
- "https://example.com/static/source-maps/app.js.map"
- )
-
- t.equal(
- resolveUrl(loc, "/static/scripts/app.js", "../source-maps/app.js.map", "../coffee/app.coffee"),
- "https://example.com/static/coffee/app.coffee"
- )
-
- t.equal(
- resolveUrl(loc, "//cdn.example.com/jquery.js"),
- "https://cdn.example.com/jquery.js"
- )
-
-})
-
-test("edge cases", function(t) {
-
- t.plan(4)
-
- t["throws"](resolveUrl, /at least one argument/, "throws with no arguments")
-
- var accidentallyUndefined
- var result
- t.doesNotThrow(
- function() { result = resolveUrl(accidentallyUndefined) },
- "undefined is still an argument"
- )
- t.ok(result.match(/\/undefined$/), "undefined is stringified")
-
- t.equal(
- resolveUrl("http://foo.org/test", undefined, {}, ["a/b"], null),
- "http://foo.org/a/null",
- "arguments are stringified"
- )
-
-})
diff --git a/node_modules/ret/LICENSE b/node_modules/ret/LICENSE
deleted file mode 100644
index b351ee8..0000000
--- a/node_modules/ret/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2011 by Roly Fentanes
-
-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/ret/README.md b/node_modules/ret/README.md
deleted file mode 100644
index 28563e1..0000000
--- a/node_modules/ret/README.md
+++ /dev/null
@@ -1,183 +0,0 @@
-# Regular Expression Tokenizer
-
-Tokenizes strings that represent a regular expressions.
-
-[](http://travis-ci.org/fent/ret.js)
-[](https://david-dm.org/fent/ret.js)
-[](https://codecov.io/gh/fent/ret.js)
-
-# Usage
-
-```js
-var ret = require('ret');
-
-var tokens = ret(/foo|bar/.source);
-```
-
-`tokens` will contain the following object
-
-```js
-{
- "type": ret.types.ROOT
- "options": [
- [ { "type": ret.types.CHAR, "value", 102 },
- { "type": ret.types.CHAR, "value", 111 },
- { "type": ret.types.CHAR, "value", 111 } ],
- [ { "type": ret.types.CHAR, "value", 98 },
- { "type": ret.types.CHAR, "value", 97 },
- { "type": ret.types.CHAR, "value", 114 } ]
- ]
-}
-```
-
-# Token Types
-
-`ret.types` is a collection of the various token types exported by ret.
-
-### ROOT
-
-Only used in the root of the regexp. This is needed due to the posibility of the root containing a pipe `|` character. In that case, the token will have an `options` key that will be an array of arrays of tokens. If not, it will contain a `stack` key that is an array of tokens.
-
-```js
-{
- "type": ret.types.ROOT,
- "stack": [token1, token2...],
-}
-```
-
-```js
-{
- "type": ret.types.ROOT,
- "options" [
- [token1, token2...],
- [othertoken1, othertoken2...]
- ...
- ],
-}
-```
-
-### GROUP
-
-Groups contain tokens that are inside of a parenthesis. If the group begins with `?` followed by another character, it's a special type of group. A ':' tells the group not to be remembered when `exec` is used. '=' means the previous token matches only if followed by this group, and '!' means the previous token matches only if NOT followed.
-
-Like root, it can contain an `options` key instead of `stack` if there is a pipe.
-
-```js
-{
- "type": ret.types.GROUP,
- "remember" true,
- "followedBy": false,
- "notFollowedBy": false,
- "stack": [token1, token2...],
-}
-```
-
-```js
-{
- "type": ret.types.GROUP,
- "remember" true,
- "followedBy": false,
- "notFollowedBy": false,
- "options" [
- [token1, token2...],
- [othertoken1, othertoken2...]
- ...
- ],
-}
-```
-
-### POSITION
-
-`\b`, `\B`, `^`, and `$` specify positions in the regexp.
-
-```js
-{
- "type": ret.types.POSITION,
- "value": "^",
-}
-```
-
-### SET
-
-Contains a key `set` specifying what tokens are allowed and a key `not` specifying if the set should be negated. A set can contain other sets, ranges, and characters.
-
-```js
-{
- "type": ret.types.SET,
- "set": [token1, token2...],
- "not": false,
-}
-```
-
-### RANGE
-
-Used in set tokens to specify a character range. `from` and `to` are character codes.
-
-```js
-{
- "type": ret.types.RANGE,
- "from": 97,
- "to": 122,
-}
-```
-
-### REPETITION
-
-```js
-{
- "type": ret.types.REPETITION,
- "min": 0,
- "max": Infinity,
- "value": token,
-}
-```
-
-### REFERENCE
-
-References a group token. `value` is 1-9.
-
-```js
-{
- "type": ret.types.REFERENCE,
- "value": 1,
-}
-```
-
-### CHAR
-
-Represents a single character token. `value` is the character code. This might seem a bit cluttering instead of concatenating characters together. But since repetition tokens only repeat the last token and not the last clause like the pipe, it's simpler to do it this way.
-
-```js
-{
- "type": ret.types.CHAR,
- "value": 123,
-}
-```
-
-## Errors
-
-ret.js will throw errors if given a string with an invalid regular expression. All possible errors are
-
-* Invalid group. When a group with an immediate `?` character is followed by an invalid character. It can only be followed by `!`, `=`, or `:`. Example: `/(?_abc)/`
-* Nothing to repeat. Thrown when a repetitional token is used as the first token in the current clause, as in right in the beginning of the regexp or group, or right after a pipe. Example: `/foo|?bar/`, `/{1,3}foo|bar/`, `/foo(+bar)/`
-* Unmatched ). A group was not opened, but was closed. Example: `/hello)2u/`
-* Unterminated group. A group was not closed. Example: `/(1(23)4/`
-* Unterminated character class. A custom character set was not closed. Example: `/[abc/`
-
-
-# Install
-
- npm install ret
-
-
-# Tests
-
-Tests are written with [vows](http://vowsjs.org/)
-
-```bash
-npm test
-```
-
-# License
-
-MIT
diff --git a/node_modules/ret/lib/index.js b/node_modules/ret/lib/index.js
deleted file mode 100644
index 0e151c3..0000000
--- a/node_modules/ret/lib/index.js
+++ /dev/null
@@ -1,282 +0,0 @@
-var util = require('./util');
-var types = require('./types');
-var sets = require('./sets');
-var positions = require('./positions');
-
-
-module.exports = function(regexpStr) {
- var i = 0, l, c,
- start = { type: types.ROOT, stack: []},
-
- // Keep track of last clause/group and stack.
- lastGroup = start,
- last = start.stack,
- groupStack = [];
-
-
- var repeatErr = function(i) {
- util.error(regexpStr, 'Nothing to repeat at column ' + (i - 1));
- };
-
- // Decode a few escaped characters.
- var str = util.strToChars(regexpStr);
- l = str.length;
-
- // Iterate through each character in string.
- while (i < l) {
- c = str[i++];
-
- switch (c) {
- // Handle escaped characters, inclues a few sets.
- case '\\':
- c = str[i++];
-
- switch (c) {
- case 'b':
- last.push(positions.wordBoundary());
- break;
-
- case 'B':
- last.push(positions.nonWordBoundary());
- break;
-
- case 'w':
- last.push(sets.words());
- break;
-
- case 'W':
- last.push(sets.notWords());
- break;
-
- case 'd':
- last.push(sets.ints());
- break;
-
- case 'D':
- last.push(sets.notInts());
- break;
-
- case 's':
- last.push(sets.whitespace());
- break;
-
- case 'S':
- last.push(sets.notWhitespace());
- break;
-
- default:
- // Check if c is integer.
- // In which case it's a reference.
- if (/\d/.test(c)) {
- last.push({ type: types.REFERENCE, value: parseInt(c, 10) });
-
- // Escaped character.
- } else {
- last.push({ type: types.CHAR, value: c.charCodeAt(0) });
- }
- }
-
- break;
-
-
- // Positionals.
- case '^':
- last.push(positions.begin());
- break;
-
- case '$':
- last.push(positions.end());
- break;
-
-
- // Handle custom sets.
- case '[':
- // Check if this class is 'anti' i.e. [^abc].
- var not;
- if (str[i] === '^') {
- not = true;
- i++;
- } else {
- not = false;
- }
-
- // Get all the characters in class.
- var classTokens = util.tokenizeClass(str.slice(i), regexpStr);
-
- // Increase index by length of class.
- i += classTokens[1];
- last.push({
- type: types.SET,
- set: classTokens[0],
- not: not,
- });
-
- break;
-
-
- // Class of any character except \n.
- case '.':
- last.push(sets.anyChar());
- break;
-
-
- // Push group onto stack.
- case '(':
- // Create group.
- var group = {
- type: types.GROUP,
- stack: [],
- remember: true,
- };
-
- c = str[i];
-
- // If if this is a special kind of group.
- if (c === '?') {
- c = str[i + 1];
- i += 2;
-
- // Match if followed by.
- if (c === '=') {
- group.followedBy = true;
-
- // Match if not followed by.
- } else if (c === '!') {
- group.notFollowedBy = true;
-
- } else if (c !== ':') {
- util.error(regexpStr,
- 'Invalid group, character \'' + c +
- '\' after \'?\' at column ' + (i - 1));
- }
-
- group.remember = false;
- }
-
- // Insert subgroup into current group stack.
- last.push(group);
-
- // Remember the current group for when the group closes.
- groupStack.push(lastGroup);
-
- // Make this new group the current group.
- lastGroup = group;
- last = group.stack;
- break;
-
-
- // Pop group out of stack.
- case ')':
- if (groupStack.length === 0) {
- util.error(regexpStr, 'Unmatched ) at column ' + (i - 1));
- }
- lastGroup = groupStack.pop();
-
- // Check if this group has a PIPE.
- // To get back the correct last stack.
- last = lastGroup.options ?
- lastGroup.options[lastGroup.options.length - 1] : lastGroup.stack;
- break;
-
-
- // Use pipe character to give more choices.
- case '|':
- // Create array where options are if this is the first PIPE
- // in this clause.
- if (!lastGroup.options) {
- lastGroup.options = [lastGroup.stack];
- delete lastGroup.stack;
- }
-
- // Create a new stack and add to options for rest of clause.
- var stack = [];
- lastGroup.options.push(stack);
- last = stack;
- break;
-
-
- // Repetition.
- // For every repetition, remove last element from last stack
- // then insert back a RANGE object.
- // This design is chosen because there could be more than
- // one repetition symbols in a regex i.e. `a?+{2,3}`.
- case '{':
- var rs = /^(\d+)(,(\d+)?)?\}/.exec(str.slice(i)), min, max;
- if (rs !== null) {
- if (last.length === 0) {
- repeatErr(i);
- }
- min = parseInt(rs[1], 10);
- max = rs[2] ? rs[3] ? parseInt(rs[3], 10) : Infinity : min;
- i += rs[0].length;
-
- last.push({
- type: types.REPETITION,
- min: min,
- max: max,
- value: last.pop(),
- });
- } else {
- last.push({
- type: types.CHAR,
- value: 123,
- });
- }
- break;
-
- case '?':
- if (last.length === 0) {
- repeatErr(i);
- }
- last.push({
- type: types.REPETITION,
- min: 0,
- max: 1,
- value: last.pop(),
- });
- break;
-
- case '+':
- if (last.length === 0) {
- repeatErr(i);
- }
- last.push({
- type: types.REPETITION,
- min: 1,
- max: Infinity,
- value: last.pop(),
- });
- break;
-
- case '*':
- if (last.length === 0) {
- repeatErr(i);
- }
- last.push({
- type: types.REPETITION,
- min: 0,
- max: Infinity,
- value: last.pop(),
- });
- break;
-
-
- // Default is a character that is not `\[](){}?+*^$`.
- default:
- last.push({
- type: types.CHAR,
- value: c.charCodeAt(0),
- });
- }
-
- }
-
- // Check if any groups have not been closed.
- if (groupStack.length !== 0) {
- util.error(regexpStr, 'Unterminated group');
- }
-
- return start;
-};
-
-module.exports.types = types;
diff --git a/node_modules/ret/lib/positions.js b/node_modules/ret/lib/positions.js
deleted file mode 100644
index 80677ee..0000000
--- a/node_modules/ret/lib/positions.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var types = require('./types');
-
-exports.wordBoundary = function() {
- return { type: types.POSITION, value: 'b' };
-};
-
-exports.nonWordBoundary = function() {
- return { type: types.POSITION, value: 'B' };
-};
-
-exports.begin = function() {
- return { type: types.POSITION, value: '^' };
-};
-
-exports.end = function() {
- return { type: types.POSITION, value: '$' };
-};
diff --git a/node_modules/ret/lib/sets.js b/node_modules/ret/lib/sets.js
deleted file mode 100644
index 5fb6be5..0000000
--- a/node_modules/ret/lib/sets.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var types = require('./types');
-
-var INTS = function() {
- return [{ type: types.RANGE , from: 48, to: 57 }];
-};
-
-var WORDS = function() {
- return [
- { type: types.CHAR, value: 95 },
- { type: types.RANGE, from: 97, to: 122 },
- { type: types.RANGE, from: 65, to: 90 }
- ].concat(INTS());
-};
-
-var WHITESPACE = function() {
- return [
- { type: types.CHAR, value: 9 },
- { type: types.CHAR, value: 10 },
- { type: types.CHAR, value: 11 },
- { type: types.CHAR, value: 12 },
- { type: types.CHAR, value: 13 },
- { type: types.CHAR, value: 32 },
- { type: types.CHAR, value: 160 },
- { type: types.CHAR, value: 5760 },
- { type: types.CHAR, value: 6158 },
- { type: types.CHAR, value: 8192 },
- { type: types.CHAR, value: 8193 },
- { type: types.CHAR, value: 8194 },
- { type: types.CHAR, value: 8195 },
- { type: types.CHAR, value: 8196 },
- { type: types.CHAR, value: 8197 },
- { type: types.CHAR, value: 8198 },
- { type: types.CHAR, value: 8199 },
- { type: types.CHAR, value: 8200 },
- { type: types.CHAR, value: 8201 },
- { type: types.CHAR, value: 8202 },
- { type: types.CHAR, value: 8232 },
- { type: types.CHAR, value: 8233 },
- { type: types.CHAR, value: 8239 },
- { type: types.CHAR, value: 8287 },
- { type: types.CHAR, value: 12288 },
- { type: types.CHAR, value: 65279 }
- ];
-};
-
-var NOTANYCHAR = function() {
- return [
- { type: types.CHAR, value: 10 },
- { type: types.CHAR, value: 13 },
- { type: types.CHAR, value: 8232 },
- { type: types.CHAR, value: 8233 },
- ];
-};
-
-// Predefined class objects.
-exports.words = function() {
- return { type: types.SET, set: WORDS(), not: false };
-};
-
-exports.notWords = function() {
- return { type: types.SET, set: WORDS(), not: true };
-};
-
-exports.ints = function() {
- return { type: types.SET, set: INTS(), not: false };
-};
-
-exports.notInts = function() {
- return { type: types.SET, set: INTS(), not: true };
-};
-
-exports.whitespace = function() {
- return { type: types.SET, set: WHITESPACE(), not: false };
-};
-
-exports.notWhitespace = function() {
- return { type: types.SET, set: WHITESPACE(), not: true };
-};
-
-exports.anyChar = function() {
- return { type: types.SET, set: NOTANYCHAR(), not: true };
-};
diff --git a/node_modules/ret/lib/types.js b/node_modules/ret/lib/types.js
deleted file mode 100644
index 9484145..0000000
--- a/node_modules/ret/lib/types.js
+++ /dev/null
@@ -1,10 +0,0 @@
-module.exports = {
- ROOT : 0,
- GROUP : 1,
- POSITION : 2,
- SET : 3,
- RANGE : 4,
- REPETITION : 5,
- REFERENCE : 6,
- CHAR : 7,
-};
diff --git a/node_modules/ret/lib/util.js b/node_modules/ret/lib/util.js
deleted file mode 100644
index 97d8cf5..0000000
--- a/node_modules/ret/lib/util.js
+++ /dev/null
@@ -1,111 +0,0 @@
-var types = require('./types');
-var sets = require('./sets');
-
-
-// All of these are private and only used by randexp.
-// It's assumed that they will always be called with the correct input.
-
-var CTRL = '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ?';
-var SLSH = { '0': 0, 't': 9, 'n': 10, 'v': 11, 'f': 12, 'r': 13 };
-
-/**
- * Finds character representations in str and convert all to
- * their respective characters
- *
- * @param {String} str
- * @return {String}
- */
-exports.strToChars = function(str) {
- /* jshint maxlen: false */
- var chars_regex = /(\[\\b\])|(\\)?\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z\[\\\]\^?])|([0tnvfr]))/g;
- str = str.replace(chars_regex, function(s, b, lbs, a16, b16, c8, dctrl, eslsh) {
- if (lbs) {
- return s;
- }
-
- var code = b ? 8 :
- a16 ? parseInt(a16, 16) :
- b16 ? parseInt(b16, 16) :
- c8 ? parseInt(c8, 8) :
- dctrl ? CTRL.indexOf(dctrl) :
- SLSH[eslsh];
-
- var c = String.fromCharCode(code);
-
- // Escape special regex characters.
- if (/[\[\]{}\^$.|?*+()]/.test(c)) {
- c = '\\' + c;
- }
-
- return c;
- });
-
- return str;
-};
-
-
-/**
- * turns class into tokens
- * reads str until it encounters a ] not preceeded by a \
- *
- * @param {String} str
- * @param {String} regexpStr
- * @return {Array., Number>}
- */
-exports.tokenizeClass = function(str, regexpStr) {
- /* jshint maxlen: false */
- var tokens = [];
- var regexp = /\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\)(.)|([^\]\\]))-(?:\\)?([^\]]))|(\])|(?:\\)?(.)/g;
- var rs, c;
-
-
- while ((rs = regexp.exec(str)) != null) {
- if (rs[1]) {
- tokens.push(sets.words());
-
- } else if (rs[2]) {
- tokens.push(sets.ints());
-
- } else if (rs[3]) {
- tokens.push(sets.whitespace());
-
- } else if (rs[4]) {
- tokens.push(sets.notWords());
-
- } else if (rs[5]) {
- tokens.push(sets.notInts());
-
- } else if (rs[6]) {
- tokens.push(sets.notWhitespace());
-
- } else if (rs[7]) {
- tokens.push({
- type: types.RANGE,
- from: (rs[8] || rs[9]).charCodeAt(0),
- to: rs[10].charCodeAt(0),
- });
-
- } else if (c = rs[12]) {
- tokens.push({
- type: types.CHAR,
- value: c.charCodeAt(0),
- });
-
- } else {
- return [tokens, regexp.lastIndex];
- }
- }
-
- exports.error(regexpStr, 'Unterminated character class');
-};
-
-
-/**
- * Shortcut to throw errors.
- *
- * @param {String} regexp
- * @param {String} msg
- */
-exports.error = function(regexp, msg) {
- throw new SyntaxError('Invalid regular expression: /' + regexp + '/: ' + msg);
-};
diff --git a/node_modules/ret/package.json b/node_modules/ret/package.json
deleted file mode 100644
index 2fde9a4..0000000
--- a/node_modules/ret/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "ret",
- "description": "Tokenizes a string that represents a regular expression.",
- "keywords": [
- "regex",
- "regexp",
- "regular expression",
- "parser",
- "tokenizer"
- ],
- "version": "0.1.15",
- "repository": {
- "type": "git",
- "url": "git://github.com/fent/ret.js.git"
- },
- "author": "Roly Fentanes (https://github.com/fent)",
- "main": "./lib/index.js",
- "files": [
- "lib"
- ],
- "scripts": {
- "test": "istanbul cover vows -- --spec test/*-test.js"
- },
- "directories": {
- "lib": "./lib"
- },
- "devDependencies": {
- "istanbul": "*",
- "vows": "*"
- },
- "engines": {
- "node": ">=0.12"
- },
- "license": "MIT"
-}
diff --git a/node_modules/safe-buffer/LICENSE b/node_modules/safe-buffer/LICENSE
deleted file mode 100644
index 0c068ce..0000000
--- a/node_modules/safe-buffer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Feross Aboukhadijeh
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/safe-buffer/README.md b/node_modules/safe-buffer/README.md
deleted file mode 100644
index e9a81af..0000000
--- a/node_modules/safe-buffer/README.md
+++ /dev/null
@@ -1,584 +0,0 @@
-# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]
-
-[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg
-[travis-url]: https://travis-ci.org/feross/safe-buffer
-[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg
-[npm-url]: https://npmjs.org/package/safe-buffer
-[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg
-[downloads-url]: https://npmjs.org/package/safe-buffer
-[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
-[standard-url]: https://standardjs.com
-
-#### Safer Node.js Buffer API
-
-**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`,
-`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.**
-
-**Uses the built-in implementation when available.**
-
-## install
-
-```
-npm install safe-buffer
-```
-
-## usage
-
-The goal of this package is to provide a safe replacement for the node.js `Buffer`.
-
-It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to
-the top of your node.js modules:
-
-```js
-var Buffer = require('safe-buffer').Buffer
-
-// Existing buffer code will continue to work without issues:
-
-new Buffer('hey', 'utf8')
-new Buffer([1, 2, 3], 'utf8')
-new Buffer(obj)
-new Buffer(16) // create an uninitialized buffer (potentially unsafe)
-
-// But you can use these new explicit APIs to make clear what you want:
-
-Buffer.from('hey', 'utf8') // convert from many types to a Buffer
-Buffer.alloc(16) // create a zero-filled buffer (safe)
-Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe)
-```
-
-## api
-
-### Class Method: Buffer.from(array)
-
-
-* `array` {Array}
-
-Allocates a new `Buffer` using an `array` of octets.
-
-```js
-const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]);
- // creates a new Buffer containing ASCII bytes
- // ['b','u','f','f','e','r']
-```
-
-A `TypeError` will be thrown if `array` is not an `Array`.
-
-### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]])
-
-
-* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or
- a `new ArrayBuffer()`
-* `byteOffset` {Number} Default: `0`
-* `length` {Number} Default: `arrayBuffer.length - byteOffset`
-
-When passed a reference to the `.buffer` property of a `TypedArray` instance,
-the newly created `Buffer` will share the same allocated memory as the
-TypedArray.
-
-```js
-const arr = new Uint16Array(2);
-arr[0] = 5000;
-arr[1] = 4000;
-
-const buf = Buffer.from(arr.buffer); // shares the memory with arr;
-
-console.log(buf);
- // Prints:
-
-// changing the TypedArray changes the Buffer also
-arr[1] = 6000;
-
-console.log(buf);
- // Prints:
-```
-
-The optional `byteOffset` and `length` arguments specify a memory range within
-the `arrayBuffer` that will be shared by the `Buffer`.
-
-```js
-const ab = new ArrayBuffer(10);
-const buf = Buffer.from(ab, 0, 2);
-console.log(buf.length);
- // Prints: 2
-```
-
-A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`.
-
-### Class Method: Buffer.from(buffer)
-
-
-* `buffer` {Buffer}
-
-Copies the passed `buffer` data onto a new `Buffer` instance.
-
-```js
-const buf1 = Buffer.from('buffer');
-const buf2 = Buffer.from(buf1);
-
-buf1[0] = 0x61;
-console.log(buf1.toString());
- // 'auffer'
-console.log(buf2.toString());
- // 'buffer' (copy is not changed)
-```
-
-A `TypeError` will be thrown if `buffer` is not a `Buffer`.
-
-### Class Method: Buffer.from(str[, encoding])
-
-
-* `str` {String} String to encode.
-* `encoding` {String} Encoding to use, Default: `'utf8'`
-
-Creates a new `Buffer` containing the given JavaScript string `str`. If
-provided, the `encoding` parameter identifies the character encoding.
-If not provided, `encoding` defaults to `'utf8'`.
-
-```js
-const buf1 = Buffer.from('this is a tést');
-console.log(buf1.toString());
- // prints: this is a tést
-console.log(buf1.toString('ascii'));
- // prints: this is a tC)st
-
-const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
-console.log(buf2.toString());
- // prints: this is a tést
-```
-
-A `TypeError` will be thrown if `str` is not a string.
-
-### Class Method: Buffer.alloc(size[, fill[, encoding]])
-
-
-* `size` {Number}
-* `fill` {Value} Default: `undefined`
-* `encoding` {String} Default: `utf8`
-
-Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the
-`Buffer` will be *zero-filled*.
-
-```js
-const buf = Buffer.alloc(5);
-console.log(buf);
- //
-```
-
-The `size` must be less than or equal to the value of
-`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is
-`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will
-be created if a `size` less than or equal to 0 is specified.
-
-If `fill` is specified, the allocated `Buffer` will be initialized by calling
-`buf.fill(fill)`. See [`buf.fill()`][] for more information.
-
-```js
-const buf = Buffer.alloc(5, 'a');
-console.log(buf);
- //
-```
-
-If both `fill` and `encoding` are specified, the allocated `Buffer` will be
-initialized by calling `buf.fill(fill, encoding)`. For example:
-
-```js
-const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
-console.log(buf);
- //
-```
-
-Calling `Buffer.alloc(size)` can be significantly slower than the alternative
-`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance
-contents will *never contain sensitive data*.
-
-A `TypeError` will be thrown if `size` is not a number.
-
-### Class Method: Buffer.allocUnsafe(size)
-
-
-* `size` {Number}
-
-Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must
-be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit
-architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is
-thrown. A zero-length Buffer will be created if a `size` less than or equal to
-0 is specified.
-
-The underlying memory for `Buffer` instances created in this way is *not
-initialized*. The contents of the newly created `Buffer` are unknown and
-*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such
-`Buffer` instances to zeroes.
-
-```js
-const buf = Buffer.allocUnsafe(5);
-console.log(buf);
- //
- // (octets will be different, every time)
-buf.fill(0);
-console.log(buf);
- //
-```
-
-A `TypeError` will be thrown if `size` is not a number.
-
-Note that the `Buffer` module pre-allocates an internal `Buffer` instance of
-size `Buffer.poolSize` that is used as a pool for the fast allocation of new
-`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated
-`new Buffer(size)` constructor) only when `size` is less than or equal to
-`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default
-value of `Buffer.poolSize` is `8192` but can be modified.
-
-Use of this pre-allocated internal memory pool is a key difference between
-calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`.
-Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer
-pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal
-Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The
-difference is subtle but can be important when an application requires the
-additional performance that `Buffer.allocUnsafe(size)` provides.
-
-### Class Method: Buffer.allocUnsafeSlow(size)
-
-
-* `size` {Number}
-
-Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The
-`size` must be less than or equal to the value of
-`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is
-`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will
-be created if a `size` less than or equal to 0 is specified.
-
-The underlying memory for `Buffer` instances created in this way is *not
-initialized*. The contents of the newly created `Buffer` are unknown and
-*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such
-`Buffer` instances to zeroes.
-
-When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances,
-allocations under 4KB are, by default, sliced from a single pre-allocated
-`Buffer`. This allows applications to avoid the garbage collection overhead of
-creating many individually allocated Buffers. This approach improves both
-performance and memory usage by eliminating the need to track and cleanup as
-many `Persistent` objects.
-
-However, in the case where a developer may need to retain a small chunk of
-memory from a pool for an indeterminate amount of time, it may be appropriate
-to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then
-copy out the relevant bits.
-
-```js
-// need to keep around a few small chunks of memory
-const store = [];
-
-socket.on('readable', () => {
- const data = socket.read();
- // allocate for retained data
- const sb = Buffer.allocUnsafeSlow(10);
- // copy the data into the new allocation
- data.copy(sb, 0, 0, 10);
- store.push(sb);
-});
-```
-
-Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after*
-a developer has observed undue memory retention in their applications.
-
-A `TypeError` will be thrown if `size` is not a number.
-
-### All the Rest
-
-The rest of the `Buffer` API is exactly the same as in node.js.
-[See the docs](https://nodejs.org/api/buffer.html).
-
-
-## Related links
-
-- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660)
-- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4)
-
-## Why is `Buffer` unsafe?
-
-Today, the node.js `Buffer` constructor is overloaded to handle many different argument
-types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.),
-`ArrayBuffer`, and also `Number`.
-
-The API is optimized for convenience: you can throw any type at it, and it will try to do
-what you want.
-
-Because the Buffer constructor is so powerful, you often see code like this:
-
-```js
-// Convert UTF-8 strings to hex
-function toHex (str) {
- return new Buffer(str).toString('hex')
-}
-```
-
-***But what happens if `toHex` is called with a `Number` argument?***
-
-### Remote Memory Disclosure
-
-If an attacker can make your program call the `Buffer` constructor with a `Number`
-argument, then they can make it allocate uninitialized memory from the node.js process.
-This could potentially disclose TLS private keys, user data, or database passwords.
-
-When the `Buffer` constructor is passed a `Number` argument, it returns an
-**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like
-this, you **MUST** overwrite the contents before returning it to the user.
-
-From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size):
-
-> `new Buffer(size)`
->
-> - `size` Number
->
-> The underlying memory for `Buffer` instances created in this way is not initialized.
-> **The contents of a newly created `Buffer` are unknown and could contain sensitive
-> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes.
-
-(Emphasis our own.)
-
-Whenever the programmer intended to create an uninitialized `Buffer` you often see code
-like this:
-
-```js
-var buf = new Buffer(16)
-
-// Immediately overwrite the uninitialized buffer with data from another buffer
-for (var i = 0; i < buf.length; i++) {
- buf[i] = otherBuf[i]
-}
-```
-
-
-### Would this ever be a problem in real code?
-
-Yes. It's surprisingly common to forget to check the type of your variables in a
-dynamically-typed language like JavaScript.
-
-Usually the consequences of assuming the wrong type is that your program crashes with an
-uncaught exception. But the failure mode for forgetting to check the type of arguments to
-the `Buffer` constructor is more catastrophic.
-
-Here's an example of a vulnerable service that takes a JSON payload and converts it to
-hex:
-
-```js
-// Take a JSON payload {str: "some string"} and convert it to hex
-var server = http.createServer(function (req, res) {
- var data = ''
- req.setEncoding('utf8')
- req.on('data', function (chunk) {
- data += chunk
- })
- req.on('end', function () {
- var body = JSON.parse(data)
- res.end(new Buffer(body.str).toString('hex'))
- })
-})
-
-server.listen(8080)
-```
-
-In this example, an http client just has to send:
-
-```json
-{
- "str": 1000
-}
-```
-
-and it will get back 1,000 bytes of uninitialized memory from the server.
-
-This is a very serious bug. It's similar in severity to the
-[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process
-memory by remote attackers.
-
-
-### Which real-world packages were vulnerable?
-
-#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht)
-
-[Mathias Buus](https://github.com/mafintosh) and I
-([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages,
-[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow
-anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get
-them to reveal 20 bytes at a time of uninitialized memory from the node.js process.
-
-Here's
-[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8)
-that fixed it. We released a new fixed version, created a
-[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all
-vulnerable versions on npm so users will get a warning to upgrade to a newer version.
-
-#### [`ws`](https://www.npmjs.com/package/ws)
-
-That got us wondering if there were other vulnerable packages. Sure enough, within a short
-period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the
-most popular WebSocket implementation in node.js.
-
-If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as
-expected, then uninitialized server memory would be disclosed to the remote peer.
-
-These were the vulnerable methods:
-
-```js
-socket.send(number)
-socket.ping(number)
-socket.pong(number)
-```
-
-Here's a vulnerable socket server with some echo functionality:
-
-```js
-server.on('connection', function (socket) {
- socket.on('message', function (message) {
- message = JSON.parse(message)
- if (message.type === 'echo') {
- socket.send(message.data) // send back the user's message
- }
- })
-})
-```
-
-`socket.send(number)` called on the server, will disclose server memory.
-
-Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue
-was fixed, with a more detailed explanation. Props to
-[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the
-[Node Security Project disclosure](https://nodesecurity.io/advisories/67).
-
-
-### What's the solution?
-
-It's important that node.js offers a fast way to get memory otherwise performance-critical
-applications would needlessly get a lot slower.
-
-But we need a better way to *signal our intent* as programmers. **When we want
-uninitialized memory, we should request it explicitly.**
-
-Sensitive functionality should not be packed into a developer-friendly API that loosely
-accepts many different types. This type of API encourages the lazy practice of passing
-variables in without checking the type very carefully.
-
-#### A new API: `Buffer.allocUnsafe(number)`
-
-The functionality of creating buffers with uninitialized memory should be part of another
-API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that
-frequently gets user input of all sorts of different types passed into it.
-
-```js
-var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory!
-
-// Immediately overwrite the uninitialized buffer with data from another buffer
-for (var i = 0; i < buf.length; i++) {
- buf[i] = otherBuf[i]
-}
-```
-
-
-### How do we fix node.js core?
-
-We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as
-`semver-major`) which defends against one case:
-
-```js
-var str = 16
-new Buffer(str, 'utf8')
-```
-
-In this situation, it's implied that the programmer intended the first argument to be a
-string, since they passed an encoding as a second argument. Today, node.js will allocate
-uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not
-what the programmer intended.
-
-But this is only a partial solution, since if the programmer does `new Buffer(variable)`
-(without an `encoding` parameter) there's no way to know what they intended. If `variable`
-is sometimes a number, then uninitialized memory will sometimes be returned.
-
-### What's the real long-term fix?
-
-We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when
-we need uninitialized memory. But that would break 1000s of packages.
-
-~~We believe the best solution is to:~~
-
-~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~
-
-~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~
-
-#### Update
-
-We now support adding three new APIs:
-
-- `Buffer.from(value)` - convert from any type to a buffer
-- `Buffer.alloc(size)` - create a zero-filled buffer
-- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size
-
-This solves the core problem that affected `ws` and `bittorrent-dht` which is
-`Buffer(variable)` getting tricked into taking a number argument.
-
-This way, existing code continues working and the impact on the npm ecosystem will be
-minimal. Over time, npm maintainers can migrate performance-critical code to use
-`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`.
-
-
-### Conclusion
-
-We think there's a serious design issue with the `Buffer` API as it exists today. It
-promotes insecure software by putting high-risk functionality into a convenient API
-with friendly "developer ergonomics".
-
-This wasn't merely a theoretical exercise because we found the issue in some of the
-most popular npm packages.
-
-Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of
-`buffer`.
-
-```js
-var Buffer = require('safe-buffer').Buffer
-```
-
-Eventually, we hope that node.js core can switch to this new, safer behavior. We believe
-the impact on the ecosystem would be minimal since it's not a breaking change.
-Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while
-older, insecure packages would magically become safe from this attack vector.
-
-
-## links
-
-- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514)
-- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67)
-- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68)
-
-
-## credit
-
-The original issues in `bittorrent-dht`
-([disclosure](https://nodesecurity.io/advisories/68)) and
-`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by
-[Mathias Buus](https://github.com/mafintosh) and
-[Feross Aboukhadijeh](http://feross.org/).
-
-Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues
-and for his work running the [Node Security Project](https://nodesecurity.io/).
-
-Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and
-auditing the code.
-
-
-## license
-
-MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org)
diff --git a/node_modules/safe-buffer/index.d.ts b/node_modules/safe-buffer/index.d.ts
deleted file mode 100644
index e9fed80..0000000
--- a/node_modules/safe-buffer/index.d.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-declare module "safe-buffer" {
- export class Buffer {
- length: number
- write(string: string, offset?: number, length?: number, encoding?: string): number;
- toString(encoding?: string, start?: number, end?: number): string;
- toJSON(): { type: 'Buffer', data: any[] };
- equals(otherBuffer: Buffer): boolean;
- compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
- copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
- slice(start?: number, end?: number): Buffer;
- writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
- readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
- readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
- readIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
- readIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
- readUInt8(offset: number, noAssert?: boolean): number;
- readUInt16LE(offset: number, noAssert?: boolean): number;
- readUInt16BE(offset: number, noAssert?: boolean): number;
- readUInt32LE(offset: number, noAssert?: boolean): number;
- readUInt32BE(offset: number, noAssert?: boolean): number;
- readInt8(offset: number, noAssert?: boolean): number;
- readInt16LE(offset: number, noAssert?: boolean): number;
- readInt16BE(offset: number, noAssert?: boolean): number;
- readInt32LE(offset: number, noAssert?: boolean): number;
- readInt32BE(offset: number, noAssert?: boolean): number;
- readFloatLE(offset: number, noAssert?: boolean): number;
- readFloatBE(offset: number, noAssert?: boolean): number;
- readDoubleLE(offset: number, noAssert?: boolean): number;
- readDoubleBE(offset: number, noAssert?: boolean): number;
- swap16(): Buffer;
- swap32(): Buffer;
- swap64(): Buffer;
- writeUInt8(value: number, offset: number, noAssert?: boolean): number;
- writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt16BE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt32LE(value: number, offset: number, noAssert?: boolean): number;
- writeUInt32BE(value: number, offset: number, noAssert?: boolean): number;
- writeInt8(value: number, offset: number, noAssert?: boolean): number;
- writeInt16LE(value: number, offset: number, noAssert?: boolean): number;
- writeInt16BE(value: number, offset: number, noAssert?: boolean): number;
- writeInt32LE(value: number, offset: number, noAssert?: boolean): number;
- writeInt32BE(value: number, offset: number, noAssert?: boolean): number;
- writeFloatLE(value: number, offset: number, noAssert?: boolean): number;
- writeFloatBE(value: number, offset: number, noAssert?: boolean): number;
- writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;
- writeDoubleBE(value: number, offset: number, noAssert?: boolean): number;
- fill(value: any, offset?: number, end?: number): this;
- indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
- lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
- includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean;
-
- /**
- * Allocates a new buffer containing the given {str}.
- *
- * @param str String to store in buffer.
- * @param encoding encoding to use, optional. Default is 'utf8'
- */
- constructor (str: string, encoding?: string);
- /**
- * Allocates a new buffer of {size} octets.
- *
- * @param size count of octets to allocate.
- */
- constructor (size: number);
- /**
- * Allocates a new buffer containing the given {array} of octets.
- *
- * @param array The octets to store.
- */
- constructor (array: Uint8Array);
- /**
- * Produces a Buffer backed by the same allocated memory as
- * the given {ArrayBuffer}.
- *
- *
- * @param arrayBuffer The ArrayBuffer with which to share memory.
- */
- constructor (arrayBuffer: ArrayBuffer);
- /**
- * Allocates a new buffer containing the given {array} of octets.
- *
- * @param array The octets to store.
- */
- constructor (array: any[]);
- /**
- * Copies the passed {buffer} data onto a new {Buffer} instance.
- *
- * @param buffer The buffer to copy.
- */
- constructor (buffer: Buffer);
- prototype: Buffer;
- /**
- * Allocates a new Buffer using an {array} of octets.
- *
- * @param array
- */
- static from(array: any[]): Buffer;
- /**
- * When passed a reference to the .buffer property of a TypedArray instance,
- * the newly created Buffer will share the same allocated memory as the TypedArray.
- * The optional {byteOffset} and {length} arguments specify a memory range
- * within the {arrayBuffer} that will be shared by the Buffer.
- *
- * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer()
- * @param byteOffset
- * @param length
- */
- static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer;
- /**
- * Copies the passed {buffer} data onto a new Buffer instance.
- *
- * @param buffer
- */
- static from(buffer: Buffer): Buffer;
- /**
- * Creates a new Buffer containing the given JavaScript string {str}.
- * If provided, the {encoding} parameter identifies the character encoding.
- * If not provided, {encoding} defaults to 'utf8'.
- *
- * @param str
- */
- static from(str: string, encoding?: string): Buffer;
- /**
- * Returns true if {obj} is a Buffer
- *
- * @param obj object to test.
- */
- static isBuffer(obj: any): obj is Buffer;
- /**
- * Returns true if {encoding} is a valid encoding argument.
- * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
- *
- * @param encoding string to test.
- */
- static isEncoding(encoding: string): boolean;
- /**
- * Gives the actual byte length of a string. encoding defaults to 'utf8'.
- * This is not the same as String.prototype.length since that returns the number of characters in a string.
- *
- * @param string string to test.
- * @param encoding encoding used to evaluate (defaults to 'utf8')
- */
- static byteLength(string: string, encoding?: string): number;
- /**
- * Returns a buffer which is the result of concatenating all the buffers in the list together.
- *
- * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.
- * If the list has exactly one item, then the first item of the list is returned.
- * If the list has more than one item, then a new Buffer is created.
- *
- * @param list An array of Buffer objects to concatenate
- * @param totalLength Total length of the buffers when concatenated.
- * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.
- */
- static concat(list: Buffer[], totalLength?: number): Buffer;
- /**
- * The same as buf1.compare(buf2).
- */
- static compare(buf1: Buffer, buf2: Buffer): number;
- /**
- * Allocates a new buffer of {size} octets.
- *
- * @param size count of octets to allocate.
- * @param fill if specified, buffer will be initialized by calling buf.fill(fill).
- * If parameter is omitted, buffer will be filled with zeros.
- * @param encoding encoding used for call to buf.fill while initalizing
- */
- static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer;
- /**
- * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents
- * of the newly created Buffer are unknown and may contain sensitive data.
- *
- * @param size count of octets to allocate
- */
- static allocUnsafe(size: number): Buffer;
- /**
- * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents
- * of the newly created Buffer are unknown and may contain sensitive data.
- *
- * @param size count of octets to allocate
- */
- static allocUnsafeSlow(size: number): Buffer;
- }
-}
\ No newline at end of file
diff --git a/node_modules/safe-buffer/index.js b/node_modules/safe-buffer/index.js
deleted file mode 100644
index 22438da..0000000
--- a/node_modules/safe-buffer/index.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/* eslint-disable node/no-deprecated-api */
-var buffer = require('buffer')
-var Buffer = buffer.Buffer
-
-// alternative to using Object.keys for old browsers
-function copyProps (src, dst) {
- for (var key in src) {
- dst[key] = src[key]
- }
-}
-if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
- module.exports = buffer
-} else {
- // Copy properties from require('buffer')
- copyProps(buffer, exports)
- exports.Buffer = SafeBuffer
-}
-
-function SafeBuffer (arg, encodingOrOffset, length) {
- return Buffer(arg, encodingOrOffset, length)
-}
-
-// Copy static methods from Buffer
-copyProps(Buffer, SafeBuffer)
-
-SafeBuffer.from = function (arg, encodingOrOffset, length) {
- if (typeof arg === 'number') {
- throw new TypeError('Argument must not be a number')
- }
- return Buffer(arg, encodingOrOffset, length)
-}
-
-SafeBuffer.alloc = function (size, fill, encoding) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- var buf = Buffer(size)
- if (fill !== undefined) {
- if (typeof encoding === 'string') {
- buf.fill(fill, encoding)
- } else {
- buf.fill(fill)
- }
- } else {
- buf.fill(0)
- }
- return buf
-}
-
-SafeBuffer.allocUnsafe = function (size) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- return Buffer(size)
-}
-
-SafeBuffer.allocUnsafeSlow = function (size) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- return buffer.SlowBuffer(size)
-}
diff --git a/node_modules/safe-buffer/package.json b/node_modules/safe-buffer/package.json
deleted file mode 100644
index 623fbc3..0000000
--- a/node_modules/safe-buffer/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "safe-buffer",
- "description": "Safer Node.js Buffer API",
- "version": "5.1.2",
- "author": {
- "name": "Feross Aboukhadijeh",
- "email": "feross@feross.org",
- "url": "http://feross.org"
- },
- "bugs": {
- "url": "https://github.com/feross/safe-buffer/issues"
- },
- "devDependencies": {
- "standard": "*",
- "tape": "^4.0.0"
- },
- "homepage": "https://github.com/feross/safe-buffer",
- "keywords": [
- "buffer",
- "buffer allocate",
- "node security",
- "safe",
- "safe-buffer",
- "security",
- "uninitialized"
- ],
- "license": "MIT",
- "main": "index.js",
- "types": "index.d.ts",
- "repository": {
- "type": "git",
- "url": "git://github.com/feross/safe-buffer.git"
- },
- "scripts": {
- "test": "standard && tape test/*.js"
- }
-}
diff --git a/node_modules/safe-regex/.travis.yml b/node_modules/safe-regex/.travis.yml
deleted file mode 100644
index cc4dba2..0000000
--- a/node_modules/safe-regex/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
diff --git a/node_modules/safe-regex/LICENSE b/node_modules/safe-regex/LICENSE
deleted file mode 100644
index ee27ba4..0000000
--- a/node_modules/safe-regex/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-This software is released under the MIT license:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/safe-regex/example/safe.js b/node_modules/safe-regex/example/safe.js
deleted file mode 100644
index f486f59..0000000
--- a/node_modules/safe-regex/example/safe.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var safe = require('../');
-var regex = process.argv.slice(2).join(' ');
-console.log(safe(regex));
diff --git a/node_modules/safe-regex/index.js b/node_modules/safe-regex/index.js
deleted file mode 100644
index 488f501..0000000
--- a/node_modules/safe-regex/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var parse = require('ret');
-var types = parse.types;
-
-module.exports = function (re, opts) {
- if (!opts) opts = {};
- var replimit = opts.limit === undefined ? 25 : opts.limit;
-
- if (isRegExp(re)) re = re.source;
- else if (typeof re !== 'string') re = String(re);
-
- try { re = parse(re) }
- catch (err) { return false }
-
- var reps = 0;
- return (function walk (node, starHeight) {
- if (node.type === types.REPETITION) {
- starHeight ++;
- reps ++;
- if (starHeight > 1) return false;
- if (reps > replimit) return false;
- }
-
- if (node.options) {
- for (var i = 0, len = node.options.length; i < len; i++) {
- var ok = walk({ stack: node.options[i] }, starHeight);
- if (!ok) return false;
- }
- }
- var stack = node.stack || (node.value && node.value.stack);
- if (!stack) return true;
-
- for (var i = 0; i < stack.length; i++) {
- var ok = walk(stack[i], starHeight);
- if (!ok) return false;
- }
-
- return true;
- })(re, 0);
-};
-
-function isRegExp (x) {
- return {}.toString.call(x) === '[object RegExp]';
-}
diff --git a/node_modules/safe-regex/package.json b/node_modules/safe-regex/package.json
deleted file mode 100644
index 0dd631b..0000000
--- a/node_modules/safe-regex/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "safe-regex",
- "version": "1.1.0",
- "description": "detect possibly catastrophic, exponential-time regular expressions",
- "main": "index.js",
- "dependencies": {
- "ret": "~0.1.10"
- },
- "devDependencies": {
- "tape": "^3.5.0"
- },
- "scripts": {
- "test": "tape test/*.js"
- },
- "testling": {
- "files": "test/*.js",
- "browsers": [
- "ie/8", "ie/9", "ie/10",
- "firefox/latest",
- "chrome/latest",
- "opera/latest",
- "safari/latest"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/safe-regex.git"
- },
- "homepage": "https://github.com/substack/safe-regex",
- "keywords": [
- "catastrophic",
- "exponential",
- "regex",
- "safe",
- "sandbox"
- ],
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "license": "MIT"
-}
diff --git a/node_modules/safe-regex/readme.markdown b/node_modules/safe-regex/readme.markdown
deleted file mode 100644
index 83673ac..0000000
--- a/node_modules/safe-regex/readme.markdown
+++ /dev/null
@@ -1,65 +0,0 @@
-# safe-regex
-
-detect potentially
-[catastrophic](http://regular-expressions.mobi/catastrophic.html)
-[exponential-time](http://perlgeek.de/blog-en/perl-tips/in-search-of-an-exponetial-regexp.html)
-regular expressions by limiting the
-[star height](https://en.wikipedia.org/wiki/Star_height) to 1
-
-WARNING: This module merely *seems* to work given all the catastrophic regular
-expressions I could find scouring the internet, but I don't have enough of a
-background in automata to be absolutely sure that this module will catch all
-exponential-time cases.
-
-[](https://ci.testling.com/substack/safe-regex)
-
-[](http://travis-ci.org/substack/safe-regex)
-
-# example
-
-``` js
-var safe = require('safe-regex');
-var regex = process.argv.slice(2).join(' ');
-console.log(safe(regex));
-```
-
-```
-$ node safe.js '(x+x+)+y'
-false
-$ node safe.js '(beep|boop)*'
-true
-$ node safe.js '(a+){10}'
-false
-$ node safe.js '\blocation\s*:[^:\n]+\b(Oakland|San Francisco)\b'
-true
-```
-
-# methods
-
-``` js
-var safe = require('safe-regex')
-```
-
-## var ok = safe(re, opts={})
-
-Return a boolean `ok` whether or not the regex `re` is safe and not possibly
-catastrophic.
-
-`re` can be a `RegExp` object or just a string.
-
-If the `re` is a string and is an invalid regex, returns `false`.
-
-* `opts.limit` - maximum number of allowed repetitions in the entire regex.
-Default: `25`.
-
-# install
-
-With [npm](https://npmjs.org) do:
-
-```
-npm install safe-regex
-```
-
-# license
-
-MIT
diff --git a/node_modules/safe-regex/test/regex.js b/node_modules/safe-regex/test/regex.js
deleted file mode 100644
index 0bda850..0000000
--- a/node_modules/safe-regex/test/regex.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var safe = require('../');
-var test = require('tape');
-
-var good = [
- /\bOakland\b/,
- /\b(Oakland|San Francisco)\b/i,
- /^\d+1337\d+$/i,
- /^\d+(1337|404)\d+$/i,
- /^\d+(1337|404)*\d+$/i,
- RegExp(Array(26).join('a?') + Array(26).join('a')),
-];
-
-test('safe regex', function (t) {
- t.plan(good.length);
- good.forEach(function (re) {
- t.equal(safe(re), true);
- });
-});
-
-
-var bad = [
- /^(a?){25}(a){25}$/,
- RegExp(Array(27).join('a?') + Array(27).join('a')),
- /(x+x+)+y/,
- /foo|(x+x+)+y/,
- /(a+){10}y/,
- /(a+){2}y/,
- /(.*){1,32000}[bc]/
-];
-
-test('unsafe regex', function (t) {
- t.plan(bad.length);
- bad.forEach(function (re) {
- t.equal(safe(re), false);
- });
-});
-
-var invalid = [
- '*Oakland*',
- 'hey(yoo))',
- 'abcde(?>hellow)',
- '[abc'
-];
-
-test('invalid regex', function (t) {
- t.plan(invalid.length);
- invalid.forEach(function (re) {
- t.equal(safe(re), false);
- });
-});
diff --git a/node_modules/send/HISTORY.md b/node_modules/send/HISTORY.md
deleted file mode 100644
index a739774..0000000
--- a/node_modules/send/HISTORY.md
+++ /dev/null
@@ -1,521 +0,0 @@
-0.18.0 / 2022-03-23
-===================
-
- * Fix emitted 416 error missing headers property
- * Limit the headers removed for 304 response
- * deps: depd@2.0.0
- - Replace internal `eval` usage with `Function` constructor
- - Use instance methods on `process` to check for listeners
- * deps: destroy@1.2.0
- * deps: http-errors@2.0.0
- - deps: depd@2.0.0
- - deps: statuses@2.0.1
- * deps: on-finished@2.4.1
- * deps: statuses@2.0.1
-
-0.17.2 / 2021-12-11
-===================
-
- * pref: ignore empty http tokens
- * deps: http-errors@1.8.1
- - deps: inherits@2.0.4
- - deps: toidentifier@1.0.1
- - deps: setprototypeof@1.2.0
- * deps: ms@2.1.3
-
-0.17.1 / 2019-05-10
-===================
-
- * Set stricter CSP header in redirect & error responses
- * deps: range-parser@~1.2.1
-
-0.17.0 / 2019-05-03
-===================
-
- * deps: http-errors@~1.7.2
- - Set constructor name when possible
- - Use `toidentifier` module to make class names
- - deps: depd@~1.1.2
- - deps: setprototypeof@1.1.1
- - deps: statuses@'>= 1.5.0 < 2'
- * deps: mime@1.6.0
- - Add extensions for JPEG-2000 images
- - Add new `font/*` types from IANA
- - Add WASM mapping
- - Update `.bdoc` to `application/bdoc`
- - Update `.bmp` to `image/bmp`
- - Update `.m4a` to `audio/mp4`
- - Update `.rtf` to `application/rtf`
- - Update `.wav` to `audio/wav`
- - Update `.xml` to `application/xml`
- - Update generic extensions to `application/octet-stream`:
- `.deb`, `.dll`, `.dmg`, `.exe`, `.iso`, `.msi`
- - Use mime-score module to resolve extension conflicts
- * deps: ms@2.1.1
- - Add `week`/`w` support
- - Fix negative number handling
- * deps: statuses@~1.5.0
- * perf: remove redundant `path.normalize` call
-
-0.16.2 / 2018-02-07
-===================
-
- * Fix incorrect end tag in default error & redirects
- * deps: depd@~1.1.2
- - perf: remove argument reassignment
- * deps: encodeurl@~1.0.2
- - Fix encoding `%` as last character
- * deps: statuses@~1.4.0
-
-0.16.1 / 2017-09-29
-===================
-
- * Fix regression in edge-case behavior for empty `path`
-
-0.16.0 / 2017-09-27
-===================
-
- * Add `immutable` option
- * Fix missing `