├── .github └── workflows │ └── test.yml ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── suncalc.js └── test.js /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | branches: ['*'] 6 | pull_request: 7 | branches: [master] 8 | 9 | jobs: 10 | test: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v2 15 | 16 | - name: Setup Node 17 | uses: actions/setup-node@v1 18 | with: 19 | node-version: 14.x 20 | 21 | - name: Install dependencies 22 | run: npm ci 23 | 24 | - name: Run tests 25 | run: npm test 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Vladimir Agafonkin 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are 5 | permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this list of 8 | conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, this list 11 | of conditions and the following disclaimer in the documentation and/or other materials 12 | provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 15 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 17 | COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 21 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 22 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | SunCalc 3 | ======= 4 | 5 | [](https://travis-ci.org/mourner/suncalc) 6 | 7 | SunCalc is a tiny BSD-licensed JavaScript library for calculating sun position, 8 | sunlight phases (times for sunrise, sunset, dusk, etc.), 9 | moon position and lunar phase for the given location and time, 10 | created by [Vladimir Agafonkin](http://agafonkin.com/en) ([@mourner](https://github.com/mourner)) 11 | as a part of the [SunCalc.net project](http://suncalc.net). 12 | 13 | Most calculations are based on the formulas given in the excellent Astronomy Answers articles 14 | about [position of the sun](http://aa.quae.nl/en/reken/zonpositie.html) 15 | and [the planets](http://aa.quae.nl/en/reken/hemelpositie.html). 16 | You can read about different twilight phases calculated by SunCalc 17 | in the [Twilight article on Wikipedia](http://en.wikipedia.org/wiki/Twilight). 18 | 19 | 20 | ## Usage example 21 | 22 | ```javascript 23 | // get today's sunlight times for London 24 | var times = SunCalc.getTimes(new Date(), 51.5, -0.1); 25 | 26 | // format sunrise time from the Date object 27 | var sunriseStr = times.sunrise.getHours() + ':' + times.sunrise.getMinutes(); 28 | 29 | // get position of the sun (azimuth and altitude) at today's sunrise 30 | var sunrisePos = SunCalc.getPosition(times.sunrise, 51.5, -0.1); 31 | 32 | // get sunrise azimuth in degrees 33 | var sunriseAzimuth = sunrisePos.azimuth * 180 / Math.PI; 34 | ``` 35 | 36 | SunCalc is also available as an NPM package: 37 | 38 | ```bash 39 | $ npm install suncalc 40 | ``` 41 | 42 | ```js 43 | var SunCalc = require('suncalc'); 44 | ``` 45 | 46 | 47 | ## Reference 48 | 49 | ### Sunlight times 50 | 51 | ```javascript 52 | SunCalc.getTimes(/*Date*/ date, /*Number*/ latitude, /*Number*/ longitude, /*Number (default=0)*/ height) 53 | ``` 54 | 55 | Returns an object with the following properties (each is a `Date` object): 56 | 57 | | Property | Description | 58 | | --------------- | ------------------------------------------------------------------------ | 59 | | `sunrise` | sunrise (top edge of the sun appears on the horizon) | 60 | | `sunriseEnd` | sunrise ends (bottom edge of the sun touches the horizon) | 61 | | `goldenHourEnd` | morning golden hour (soft light, best time for photography) ends | 62 | | `solarNoon` | solar noon (sun is in the highest position) | 63 | | `goldenHour` | evening golden hour starts | 64 | | `sunsetStart` | sunset starts (bottom edge of the sun touches the horizon) | 65 | | `sunset` | sunset (sun disappears below the horizon, evening civil twilight starts) | 66 | | `dusk` | dusk (evening nautical twilight starts) | 67 | | `nauticalDusk` | nautical dusk (evening astronomical twilight starts) | 68 | | `night` | night starts (dark enough for astronomical observations) | 69 | | `nadir` | nadir (darkest moment of the night, sun is in the lowest position) | 70 | | `nightEnd` | night ends (morning astronomical twilight starts) | 71 | | `nauticalDawn` | nautical dawn (morning nautical twilight starts) | 72 | | `dawn` | dawn (morning nautical twilight ends, morning civil twilight starts) | 73 | 74 | ```javascript 75 | SunCalc.addTime(/*Number*/ angleInDegrees, /*String*/ morningName, /*String*/ eveningName) 76 | ``` 77 | 78 | Adds a custom time when the sun reaches the given angle to results returned by `SunCalc.getTimes`. 79 | 80 | `SunCalc.times` property contains all currently defined times. 81 | 82 | 83 | ### Sun position 84 | 85 | ```javascript 86 | SunCalc.getPosition(/*Date*/ timeAndDate, /*Number*/ latitude, /*Number*/ longitude) 87 | ``` 88 | 89 | Returns an object with the following properties: 90 | 91 | * `altitude`: sun altitude above the horizon in radians, 92 | e.g. `0` at the horizon and `PI/2` at the zenith (straight over your head) 93 | * `azimuth`: sun azimuth in radians (direction along the horizon, measured from south to west), 94 | e.g. `0` is south and `Math.PI * 3/4` is northwest 95 | 96 | 97 | ### Moon position 98 | 99 | ```javascript 100 | SunCalc.getMoonPosition(/*Date*/ timeAndDate, /*Number*/ latitude, /*Number*/ longitude) 101 | ``` 102 | 103 | Returns an object with the following properties: 104 | 105 | * `altitude`: moon altitude above the horizon in radians 106 | * `azimuth`: moon azimuth in radians 107 | * `distance`: distance to moon in kilometers 108 | * `parallacticAngle`: parallactic angle of the moon in radians 109 | 110 | 111 | ### Moon illumination 112 | 113 | ```javascript 114 | SunCalc.getMoonIllumination(/*Date*/ timeAndDate) 115 | ``` 116 | 117 | Returns an object with the following properties: 118 | 119 | * `fraction`: illuminated fraction of the moon; varies from `0.0` (new moon) to `1.0` (full moon) 120 | * `phase`: moon phase; varies from `0.0` to `1.0`, described below 121 | * `angle`: midpoint angle in radians of the illuminated limb of the moon reckoned eastward from the north point of the disk; 122 | the moon is waxing if the angle is negative, and waning if positive 123 | 124 | Moon phase value should be interpreted like this: 125 | 126 | | Phase | Name | 127 | | -----:| --------------- | 128 | | 0 | New Moon | 129 | | | Waxing Crescent | 130 | | 0.25 | First Quarter | 131 | | | Waxing Gibbous | 132 | | 0.5 | Full Moon | 133 | | | Waning Gibbous | 134 | | 0.75 | Last Quarter | 135 | | | Waning Crescent | 136 | 137 | By subtracting the `parallacticAngle` from the `angle` one can get the zenith angle of the moons bright limb (anticlockwise). 138 | The zenith angle can be used do draw the moon shape from the observers perspective (e.g. moon lying on its back). 139 | 140 | ### Moon rise and set times 141 | 142 | ```js 143 | SunCalc.getMoonTimes(/*Date*/ date, /*Number*/ latitude, /*Number*/ longitude[, inUTC]) 144 | ``` 145 | 146 | Returns an object with the following properties: 147 | 148 | * `rise`: moonrise time as `Date` 149 | * `set`: moonset time as `Date` 150 | * `alwaysUp`: `true` if the moon never rises/sets and is always _above_ the horizon during the day 151 | * `alwaysDown`: `true` if the moon is always _below_ the horizon 152 | 153 | By default, it will search for moon rise and set during local user's day (frou 0 to 24 hours). 154 | If `inUTC` is set to true, it will instead search the specified date from 0 to 24 UTC hours. 155 | 156 | ## Changelog 157 | 158 | #### 1.8.0 — Dec 22, 2016 159 | 160 | - Improved precision of moonrise/moonset calculations. 161 | - Added `parallacticAngle` calculation to `getMoonPosition`. 162 | - Default to today's date in `getMoonIllumination`. 163 | - Fixed incompatibility when using Browserify/Webpack together with a global AMD loader. 164 | 165 | #### 1.7.0 — Nov 11, 2015 166 | 167 | - Added `inUTC` argument to `getMoonTimes`. 168 | 169 | #### 1.6.0 — Oct 27, 2014 170 | 171 | - Added `SunCalc.getMoonTimes` for calculating moon rise and set times. 172 | 173 | #### 1.5.1 — May 16, 2014 174 | 175 | - Exposed `SunCalc.times` property with defined daylight times. 176 | - Slightly improved `SunCalc.getTimes` performance. 177 | 178 | #### 1.4.0 — Apr 10, 2014 179 | 180 | - Added `phase` to `SunCalc.getMoonIllumination` results (moon phase). 181 | - Switched from mocha to tape for tests. 182 | 183 | #### 1.3.0 — Feb 21, 2014 184 | 185 | - Added `SunCalc.getMoonIllumination` (in place of `getMoonFraction`) that returns an object with `fraction` and `angle` 186 | (angle of illuminated limb of the moon). 187 | 188 | #### 1.2.0 — Mar 07, 2013 189 | 190 | - Added `SunCalc.getMoonFraction` function that returns illuminated fraction of the moon. 191 | 192 | #### 1.1.0 — Mar 06, 2013 193 | 194 | - Added `SunCalc.getMoonPosition` function. 195 | - Added nadir (darkest time of the day, middle of the night). 196 | - Added tests. 197 | 198 | #### 1.0.0 — Dec 07, 2011 199 | 200 | - Published to NPM. 201 | - Added `SunCalc.addTime` function. 202 | 203 | #### 0.0.0 — Aug 25, 2011 204 | 205 | - First commit. 206 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "suncalc", 3 | "version": "1.9.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "suncalc", 9 | "version": "1.9.0", 10 | "devDependencies": { 11 | "eslint": "^8.8.0", 12 | "eslint-config-mourner": "^2.0.1", 13 | "tape": "^5.5.0" 14 | } 15 | }, 16 | "node_modules/@eslint/eslintrc": { 17 | "version": "1.0.5", 18 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", 19 | "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", 20 | "dev": true, 21 | "dependencies": { 22 | "ajv": "^6.12.4", 23 | "debug": "^4.3.2", 24 | "espree": "^9.2.0", 25 | "globals": "^13.9.0", 26 | "ignore": "^4.0.6", 27 | "import-fresh": "^3.2.1", 28 | "js-yaml": "^4.1.0", 29 | "minimatch": "^3.0.4", 30 | "strip-json-comments": "^3.1.1" 31 | }, 32 | "engines": { 33 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 34 | } 35 | }, 36 | "node_modules/@eslint/eslintrc/node_modules/ignore": { 37 | "version": "4.0.6", 38 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 39 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 40 | "dev": true, 41 | "engines": { 42 | "node": ">= 4" 43 | } 44 | }, 45 | "node_modules/@humanwhocodes/config-array": { 46 | "version": "0.9.3", 47 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", 48 | "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", 49 | "dev": true, 50 | "dependencies": { 51 | "@humanwhocodes/object-schema": "^1.2.1", 52 | "debug": "^4.1.1", 53 | "minimatch": "^3.0.4" 54 | }, 55 | "engines": { 56 | "node": ">=10.10.0" 57 | } 58 | }, 59 | "node_modules/@humanwhocodes/object-schema": { 60 | "version": "1.2.1", 61 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 62 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 63 | "dev": true 64 | }, 65 | "node_modules/acorn": { 66 | "version": "8.7.0", 67 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", 68 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", 69 | "dev": true, 70 | "bin": { 71 | "acorn": "bin/acorn" 72 | }, 73 | "engines": { 74 | "node": ">=0.4.0" 75 | } 76 | }, 77 | "node_modules/acorn-jsx": { 78 | "version": "5.3.2", 79 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 80 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 81 | "dev": true, 82 | "peerDependencies": { 83 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 84 | } 85 | }, 86 | "node_modules/ajv": { 87 | "version": "6.12.6", 88 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 89 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 90 | "dev": true, 91 | "dependencies": { 92 | "fast-deep-equal": "^3.1.1", 93 | "fast-json-stable-stringify": "^2.0.0", 94 | "json-schema-traverse": "^0.4.1", 95 | "uri-js": "^4.2.2" 96 | }, 97 | "funding": { 98 | "type": "github", 99 | "url": "https://github.com/sponsors/epoberezkin" 100 | } 101 | }, 102 | "node_modules/ansi-regex": { 103 | "version": "5.0.1", 104 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 105 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 106 | "dev": true, 107 | "engines": { 108 | "node": ">=8" 109 | } 110 | }, 111 | "node_modules/ansi-styles": { 112 | "version": "4.3.0", 113 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 114 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 115 | "dev": true, 116 | "dependencies": { 117 | "color-convert": "^2.0.1" 118 | }, 119 | "engines": { 120 | "node": ">=8" 121 | }, 122 | "funding": { 123 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 124 | } 125 | }, 126 | "node_modules/argparse": { 127 | "version": "2.0.1", 128 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 129 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 130 | "dev": true 131 | }, 132 | "node_modules/array.prototype.every": { 133 | "version": "1.1.3", 134 | "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.3.tgz", 135 | "integrity": "sha512-vWnriJI//SOMOWtXbU/VXhJ/InfnNHPF6BLKn5WfY8xXy+NWql0fUy20GO3sdqBhCAO+qw8S/E5nJiZX+QFdCA==", 136 | "dev": true, 137 | "dependencies": { 138 | "call-bind": "^1.0.2", 139 | "define-properties": "^1.1.3", 140 | "es-abstract": "^1.19.0", 141 | "is-string": "^1.0.7" 142 | }, 143 | "engines": { 144 | "node": ">= 0.4" 145 | }, 146 | "funding": { 147 | "url": "https://github.com/sponsors/ljharb" 148 | } 149 | }, 150 | "node_modules/available-typed-arrays": { 151 | "version": "1.0.5", 152 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", 153 | "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", 154 | "dev": true, 155 | "engines": { 156 | "node": ">= 0.4" 157 | }, 158 | "funding": { 159 | "url": "https://github.com/sponsors/ljharb" 160 | } 161 | }, 162 | "node_modules/balanced-match": { 163 | "version": "1.0.2", 164 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 165 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 166 | "dev": true 167 | }, 168 | "node_modules/brace-expansion": { 169 | "version": "1.1.11", 170 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 171 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 172 | "dev": true, 173 | "dependencies": { 174 | "balanced-match": "^1.0.0", 175 | "concat-map": "0.0.1" 176 | } 177 | }, 178 | "node_modules/call-bind": { 179 | "version": "1.0.2", 180 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 181 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 182 | "dev": true, 183 | "dependencies": { 184 | "function-bind": "^1.1.1", 185 | "get-intrinsic": "^1.0.2" 186 | }, 187 | "funding": { 188 | "url": "https://github.com/sponsors/ljharb" 189 | } 190 | }, 191 | "node_modules/callsites": { 192 | "version": "3.1.0", 193 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 194 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 195 | "dev": true, 196 | "engines": { 197 | "node": ">=6" 198 | } 199 | }, 200 | "node_modules/chalk": { 201 | "version": "4.1.2", 202 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 203 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 204 | "dev": true, 205 | "dependencies": { 206 | "ansi-styles": "^4.1.0", 207 | "supports-color": "^7.1.0" 208 | }, 209 | "engines": { 210 | "node": ">=10" 211 | }, 212 | "funding": { 213 | "url": "https://github.com/chalk/chalk?sponsor=1" 214 | } 215 | }, 216 | "node_modules/color-convert": { 217 | "version": "2.0.1", 218 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 219 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 220 | "dev": true, 221 | "dependencies": { 222 | "color-name": "~1.1.4" 223 | }, 224 | "engines": { 225 | "node": ">=7.0.0" 226 | } 227 | }, 228 | "node_modules/color-name": { 229 | "version": "1.1.4", 230 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 231 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 232 | "dev": true 233 | }, 234 | "node_modules/concat-map": { 235 | "version": "0.0.1", 236 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 237 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 238 | "dev": true 239 | }, 240 | "node_modules/cross-spawn": { 241 | "version": "7.0.3", 242 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 243 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 244 | "dev": true, 245 | "dependencies": { 246 | "path-key": "^3.1.0", 247 | "shebang-command": "^2.0.0", 248 | "which": "^2.0.1" 249 | }, 250 | "engines": { 251 | "node": ">= 8" 252 | } 253 | }, 254 | "node_modules/debug": { 255 | "version": "4.3.3", 256 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 257 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 258 | "dev": true, 259 | "dependencies": { 260 | "ms": "2.1.2" 261 | }, 262 | "engines": { 263 | "node": ">=6.0" 264 | }, 265 | "peerDependenciesMeta": { 266 | "supports-color": { 267 | "optional": true 268 | } 269 | } 270 | }, 271 | "node_modules/deep-equal": { 272 | "version": "2.0.5", 273 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", 274 | "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", 275 | "dev": true, 276 | "dependencies": { 277 | "call-bind": "^1.0.0", 278 | "es-get-iterator": "^1.1.1", 279 | "get-intrinsic": "^1.0.1", 280 | "is-arguments": "^1.0.4", 281 | "is-date-object": "^1.0.2", 282 | "is-regex": "^1.1.1", 283 | "isarray": "^2.0.5", 284 | "object-is": "^1.1.4", 285 | "object-keys": "^1.1.1", 286 | "object.assign": "^4.1.2", 287 | "regexp.prototype.flags": "^1.3.0", 288 | "side-channel": "^1.0.3", 289 | "which-boxed-primitive": "^1.0.1", 290 | "which-collection": "^1.0.1", 291 | "which-typed-array": "^1.1.2" 292 | }, 293 | "funding": { 294 | "url": "https://github.com/sponsors/ljharb" 295 | } 296 | }, 297 | "node_modules/deep-is": { 298 | "version": "0.1.4", 299 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 300 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 301 | "dev": true 302 | }, 303 | "node_modules/define-properties": { 304 | "version": "1.1.3", 305 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 306 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 307 | "dev": true, 308 | "dependencies": { 309 | "object-keys": "^1.0.12" 310 | }, 311 | "engines": { 312 | "node": ">= 0.4" 313 | } 314 | }, 315 | "node_modules/defined": { 316 | "version": "1.0.0", 317 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 318 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", 319 | "dev": true 320 | }, 321 | "node_modules/doctrine": { 322 | "version": "3.0.0", 323 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 324 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 325 | "dev": true, 326 | "dependencies": { 327 | "esutils": "^2.0.2" 328 | }, 329 | "engines": { 330 | "node": ">=6.0.0" 331 | } 332 | }, 333 | "node_modules/dotignore": { 334 | "version": "0.1.2", 335 | "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", 336 | "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", 337 | "dev": true, 338 | "dependencies": { 339 | "minimatch": "^3.0.4" 340 | }, 341 | "bin": { 342 | "ignored": "bin/ignored" 343 | } 344 | }, 345 | "node_modules/es-abstract": { 346 | "version": "1.19.1", 347 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", 348 | "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", 349 | "dev": true, 350 | "dependencies": { 351 | "call-bind": "^1.0.2", 352 | "es-to-primitive": "^1.2.1", 353 | "function-bind": "^1.1.1", 354 | "get-intrinsic": "^1.1.1", 355 | "get-symbol-description": "^1.0.0", 356 | "has": "^1.0.3", 357 | "has-symbols": "^1.0.2", 358 | "internal-slot": "^1.0.3", 359 | "is-callable": "^1.2.4", 360 | "is-negative-zero": "^2.0.1", 361 | "is-regex": "^1.1.4", 362 | "is-shared-array-buffer": "^1.0.1", 363 | "is-string": "^1.0.7", 364 | "is-weakref": "^1.0.1", 365 | "object-inspect": "^1.11.0", 366 | "object-keys": "^1.1.1", 367 | "object.assign": "^4.1.2", 368 | "string.prototype.trimend": "^1.0.4", 369 | "string.prototype.trimstart": "^1.0.4", 370 | "unbox-primitive": "^1.0.1" 371 | }, 372 | "engines": { 373 | "node": ">= 0.4" 374 | }, 375 | "funding": { 376 | "url": "https://github.com/sponsors/ljharb" 377 | } 378 | }, 379 | "node_modules/es-get-iterator": { 380 | "version": "1.1.2", 381 | "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", 382 | "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", 383 | "dev": true, 384 | "dependencies": { 385 | "call-bind": "^1.0.2", 386 | "get-intrinsic": "^1.1.0", 387 | "has-symbols": "^1.0.1", 388 | "is-arguments": "^1.1.0", 389 | "is-map": "^2.0.2", 390 | "is-set": "^2.0.2", 391 | "is-string": "^1.0.5", 392 | "isarray": "^2.0.5" 393 | }, 394 | "funding": { 395 | "url": "https://github.com/sponsors/ljharb" 396 | } 397 | }, 398 | "node_modules/es-to-primitive": { 399 | "version": "1.2.1", 400 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 401 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 402 | "dev": true, 403 | "dependencies": { 404 | "is-callable": "^1.1.4", 405 | "is-date-object": "^1.0.1", 406 | "is-symbol": "^1.0.2" 407 | }, 408 | "engines": { 409 | "node": ">= 0.4" 410 | }, 411 | "funding": { 412 | "url": "https://github.com/sponsors/ljharb" 413 | } 414 | }, 415 | "node_modules/escape-string-regexp": { 416 | "version": "4.0.0", 417 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 418 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 419 | "dev": true, 420 | "engines": { 421 | "node": ">=10" 422 | }, 423 | "funding": { 424 | "url": "https://github.com/sponsors/sindresorhus" 425 | } 426 | }, 427 | "node_modules/eslint": { 428 | "version": "8.8.0", 429 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", 430 | "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", 431 | "dev": true, 432 | "dependencies": { 433 | "@eslint/eslintrc": "^1.0.5", 434 | "@humanwhocodes/config-array": "^0.9.2", 435 | "ajv": "^6.10.0", 436 | "chalk": "^4.0.0", 437 | "cross-spawn": "^7.0.2", 438 | "debug": "^4.3.2", 439 | "doctrine": "^3.0.0", 440 | "escape-string-regexp": "^4.0.0", 441 | "eslint-scope": "^7.1.0", 442 | "eslint-utils": "^3.0.0", 443 | "eslint-visitor-keys": "^3.2.0", 444 | "espree": "^9.3.0", 445 | "esquery": "^1.4.0", 446 | "esutils": "^2.0.2", 447 | "fast-deep-equal": "^3.1.3", 448 | "file-entry-cache": "^6.0.1", 449 | "functional-red-black-tree": "^1.0.1", 450 | "glob-parent": "^6.0.1", 451 | "globals": "^13.6.0", 452 | "ignore": "^5.2.0", 453 | "import-fresh": "^3.0.0", 454 | "imurmurhash": "^0.1.4", 455 | "is-glob": "^4.0.0", 456 | "js-yaml": "^4.1.0", 457 | "json-stable-stringify-without-jsonify": "^1.0.1", 458 | "levn": "^0.4.1", 459 | "lodash.merge": "^4.6.2", 460 | "minimatch": "^3.0.4", 461 | "natural-compare": "^1.4.0", 462 | "optionator": "^0.9.1", 463 | "regexpp": "^3.2.0", 464 | "strip-ansi": "^6.0.1", 465 | "strip-json-comments": "^3.1.0", 466 | "text-table": "^0.2.0", 467 | "v8-compile-cache": "^2.0.3" 468 | }, 469 | "bin": { 470 | "eslint": "bin/eslint.js" 471 | }, 472 | "engines": { 473 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 474 | }, 475 | "funding": { 476 | "url": "https://opencollective.com/eslint" 477 | } 478 | }, 479 | "node_modules/eslint-config-mourner": { 480 | "version": "2.0.1", 481 | "dev": true, 482 | "license": "ISC" 483 | }, 484 | "node_modules/eslint-scope": { 485 | "version": "7.1.0", 486 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", 487 | "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", 488 | "dev": true, 489 | "dependencies": { 490 | "esrecurse": "^4.3.0", 491 | "estraverse": "^5.2.0" 492 | }, 493 | "engines": { 494 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 495 | } 496 | }, 497 | "node_modules/eslint-utils": { 498 | "version": "3.0.0", 499 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 500 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 501 | "dev": true, 502 | "dependencies": { 503 | "eslint-visitor-keys": "^2.0.0" 504 | }, 505 | "engines": { 506 | "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" 507 | }, 508 | "funding": { 509 | "url": "https://github.com/sponsors/mysticatea" 510 | }, 511 | "peerDependencies": { 512 | "eslint": ">=5" 513 | } 514 | }, 515 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { 516 | "version": "2.1.0", 517 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 518 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 519 | "dev": true, 520 | "engines": { 521 | "node": ">=10" 522 | } 523 | }, 524 | "node_modules/eslint-visitor-keys": { 525 | "version": "3.2.0", 526 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", 527 | "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", 528 | "dev": true, 529 | "engines": { 530 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 531 | } 532 | }, 533 | "node_modules/espree": { 534 | "version": "9.3.0", 535 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", 536 | "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", 537 | "dev": true, 538 | "dependencies": { 539 | "acorn": "^8.7.0", 540 | "acorn-jsx": "^5.3.1", 541 | "eslint-visitor-keys": "^3.1.0" 542 | }, 543 | "engines": { 544 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 545 | } 546 | }, 547 | "node_modules/esquery": { 548 | "version": "1.4.0", 549 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 550 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 551 | "dev": true, 552 | "dependencies": { 553 | "estraverse": "^5.1.0" 554 | }, 555 | "engines": { 556 | "node": ">=0.10" 557 | } 558 | }, 559 | "node_modules/esrecurse": { 560 | "version": "4.3.0", 561 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 562 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 563 | "dev": true, 564 | "dependencies": { 565 | "estraverse": "^5.2.0" 566 | }, 567 | "engines": { 568 | "node": ">=4.0" 569 | } 570 | }, 571 | "node_modules/estraverse": { 572 | "version": "5.3.0", 573 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 574 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 575 | "dev": true, 576 | "engines": { 577 | "node": ">=4.0" 578 | } 579 | }, 580 | "node_modules/esutils": { 581 | "version": "2.0.3", 582 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 583 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 584 | "dev": true, 585 | "engines": { 586 | "node": ">=0.10.0" 587 | } 588 | }, 589 | "node_modules/fast-deep-equal": { 590 | "version": "3.1.3", 591 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 592 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 593 | "dev": true 594 | }, 595 | "node_modules/fast-json-stable-stringify": { 596 | "version": "2.1.0", 597 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 598 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 599 | "dev": true 600 | }, 601 | "node_modules/fast-levenshtein": { 602 | "version": "2.0.6", 603 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 604 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 605 | "dev": true 606 | }, 607 | "node_modules/file-entry-cache": { 608 | "version": "6.0.1", 609 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 610 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 611 | "dev": true, 612 | "dependencies": { 613 | "flat-cache": "^3.0.4" 614 | }, 615 | "engines": { 616 | "node": "^10.12.0 || >=12.0.0" 617 | } 618 | }, 619 | "node_modules/flat-cache": { 620 | "version": "3.0.4", 621 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 622 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 623 | "dev": true, 624 | "dependencies": { 625 | "flatted": "^3.1.0", 626 | "rimraf": "^3.0.2" 627 | }, 628 | "engines": { 629 | "node": "^10.12.0 || >=12.0.0" 630 | } 631 | }, 632 | "node_modules/flatted": { 633 | "version": "3.2.5", 634 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", 635 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 636 | "dev": true 637 | }, 638 | "node_modules/for-each": { 639 | "version": "0.3.3", 640 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 641 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 642 | "dev": true, 643 | "dependencies": { 644 | "is-callable": "^1.1.3" 645 | } 646 | }, 647 | "node_modules/foreach": { 648 | "version": "2.0.5", 649 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 650 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", 651 | "dev": true 652 | }, 653 | "node_modules/fs.realpath": { 654 | "version": "1.0.0", 655 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 656 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 657 | "dev": true 658 | }, 659 | "node_modules/function-bind": { 660 | "version": "1.1.1", 661 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 662 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 663 | "dev": true 664 | }, 665 | "node_modules/functional-red-black-tree": { 666 | "version": "1.0.1", 667 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 668 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 669 | "dev": true 670 | }, 671 | "node_modules/get-intrinsic": { 672 | "version": "1.1.1", 673 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 674 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 675 | "dev": true, 676 | "dependencies": { 677 | "function-bind": "^1.1.1", 678 | "has": "^1.0.3", 679 | "has-symbols": "^1.0.1" 680 | }, 681 | "funding": { 682 | "url": "https://github.com/sponsors/ljharb" 683 | } 684 | }, 685 | "node_modules/get-package-type": { 686 | "version": "0.1.0", 687 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 688 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", 689 | "dev": true, 690 | "engines": { 691 | "node": ">=8.0.0" 692 | } 693 | }, 694 | "node_modules/get-symbol-description": { 695 | "version": "1.0.0", 696 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 697 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 698 | "dev": true, 699 | "dependencies": { 700 | "call-bind": "^1.0.2", 701 | "get-intrinsic": "^1.1.1" 702 | }, 703 | "engines": { 704 | "node": ">= 0.4" 705 | }, 706 | "funding": { 707 | "url": "https://github.com/sponsors/ljharb" 708 | } 709 | }, 710 | "node_modules/glob": { 711 | "version": "7.2.0", 712 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 713 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 714 | "dev": true, 715 | "dependencies": { 716 | "fs.realpath": "^1.0.0", 717 | "inflight": "^1.0.4", 718 | "inherits": "2", 719 | "minimatch": "^3.0.4", 720 | "once": "^1.3.0", 721 | "path-is-absolute": "^1.0.0" 722 | }, 723 | "engines": { 724 | "node": "*" 725 | }, 726 | "funding": { 727 | "url": "https://github.com/sponsors/isaacs" 728 | } 729 | }, 730 | "node_modules/glob-parent": { 731 | "version": "6.0.2", 732 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 733 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 734 | "dev": true, 735 | "dependencies": { 736 | "is-glob": "^4.0.3" 737 | }, 738 | "engines": { 739 | "node": ">=10.13.0" 740 | } 741 | }, 742 | "node_modules/globals": { 743 | "version": "13.12.1", 744 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", 745 | "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", 746 | "dev": true, 747 | "dependencies": { 748 | "type-fest": "^0.20.2" 749 | }, 750 | "engines": { 751 | "node": ">=8" 752 | }, 753 | "funding": { 754 | "url": "https://github.com/sponsors/sindresorhus" 755 | } 756 | }, 757 | "node_modules/has": { 758 | "version": "1.0.3", 759 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 760 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 761 | "dev": true, 762 | "dependencies": { 763 | "function-bind": "^1.1.1" 764 | }, 765 | "engines": { 766 | "node": ">= 0.4.0" 767 | } 768 | }, 769 | "node_modules/has-bigints": { 770 | "version": "1.0.1", 771 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 772 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", 773 | "dev": true, 774 | "funding": { 775 | "url": "https://github.com/sponsors/ljharb" 776 | } 777 | }, 778 | "node_modules/has-dynamic-import": { 779 | "version": "2.0.1", 780 | "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.1.tgz", 781 | "integrity": "sha512-X3fbtsZmwb6W7fJGR9o7x65fZoodygCrZ3TVycvghP62yYQfS0t4RS0Qcz+j5tQYUKeSWS09tHkWW6WhFV3XhQ==", 782 | "dev": true, 783 | "dependencies": { 784 | "call-bind": "^1.0.2", 785 | "get-intrinsic": "^1.1.1" 786 | }, 787 | "funding": { 788 | "url": "https://github.com/sponsors/ljharb" 789 | } 790 | }, 791 | "node_modules/has-flag": { 792 | "version": "4.0.0", 793 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 794 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 795 | "dev": true, 796 | "engines": { 797 | "node": ">=8" 798 | } 799 | }, 800 | "node_modules/has-symbols": { 801 | "version": "1.0.2", 802 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 803 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", 804 | "dev": true, 805 | "engines": { 806 | "node": ">= 0.4" 807 | }, 808 | "funding": { 809 | "url": "https://github.com/sponsors/ljharb" 810 | } 811 | }, 812 | "node_modules/has-tostringtag": { 813 | "version": "1.0.0", 814 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 815 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 816 | "dev": true, 817 | "dependencies": { 818 | "has-symbols": "^1.0.2" 819 | }, 820 | "engines": { 821 | "node": ">= 0.4" 822 | }, 823 | "funding": { 824 | "url": "https://github.com/sponsors/ljharb" 825 | } 826 | }, 827 | "node_modules/ignore": { 828 | "version": "5.2.0", 829 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 830 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 831 | "dev": true, 832 | "engines": { 833 | "node": ">= 4" 834 | } 835 | }, 836 | "node_modules/import-fresh": { 837 | "version": "3.3.0", 838 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 839 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 840 | "dev": true, 841 | "dependencies": { 842 | "parent-module": "^1.0.0", 843 | "resolve-from": "^4.0.0" 844 | }, 845 | "engines": { 846 | "node": ">=6" 847 | }, 848 | "funding": { 849 | "url": "https://github.com/sponsors/sindresorhus" 850 | } 851 | }, 852 | "node_modules/imurmurhash": { 853 | "version": "0.1.4", 854 | "dev": true, 855 | "license": "MIT", 856 | "engines": { 857 | "node": ">=0.8.19" 858 | } 859 | }, 860 | "node_modules/inflight": { 861 | "version": "1.0.6", 862 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 863 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 864 | "dev": true, 865 | "dependencies": { 866 | "once": "^1.3.0", 867 | "wrappy": "1" 868 | } 869 | }, 870 | "node_modules/inherits": { 871 | "version": "2.0.4", 872 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 873 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 874 | "dev": true 875 | }, 876 | "node_modules/internal-slot": { 877 | "version": "1.0.3", 878 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 879 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 880 | "dev": true, 881 | "dependencies": { 882 | "get-intrinsic": "^1.1.0", 883 | "has": "^1.0.3", 884 | "side-channel": "^1.0.4" 885 | }, 886 | "engines": { 887 | "node": ">= 0.4" 888 | } 889 | }, 890 | "node_modules/is-arguments": { 891 | "version": "1.1.1", 892 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", 893 | "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", 894 | "dev": true, 895 | "dependencies": { 896 | "call-bind": "^1.0.2", 897 | "has-tostringtag": "^1.0.0" 898 | }, 899 | "engines": { 900 | "node": ">= 0.4" 901 | }, 902 | "funding": { 903 | "url": "https://github.com/sponsors/ljharb" 904 | } 905 | }, 906 | "node_modules/is-bigint": { 907 | "version": "1.0.4", 908 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 909 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 910 | "dev": true, 911 | "dependencies": { 912 | "has-bigints": "^1.0.1" 913 | }, 914 | "funding": { 915 | "url": "https://github.com/sponsors/ljharb" 916 | } 917 | }, 918 | "node_modules/is-boolean-object": { 919 | "version": "1.1.2", 920 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 921 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 922 | "dev": true, 923 | "dependencies": { 924 | "call-bind": "^1.0.2", 925 | "has-tostringtag": "^1.0.0" 926 | }, 927 | "engines": { 928 | "node": ">= 0.4" 929 | }, 930 | "funding": { 931 | "url": "https://github.com/sponsors/ljharb" 932 | } 933 | }, 934 | "node_modules/is-callable": { 935 | "version": "1.2.4", 936 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 937 | "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", 938 | "dev": true, 939 | "engines": { 940 | "node": ">= 0.4" 941 | }, 942 | "funding": { 943 | "url": "https://github.com/sponsors/ljharb" 944 | } 945 | }, 946 | "node_modules/is-core-module": { 947 | "version": "2.8.1", 948 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 949 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 950 | "dev": true, 951 | "dependencies": { 952 | "has": "^1.0.3" 953 | }, 954 | "funding": { 955 | "url": "https://github.com/sponsors/ljharb" 956 | } 957 | }, 958 | "node_modules/is-date-object": { 959 | "version": "1.0.5", 960 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 961 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 962 | "dev": true, 963 | "dependencies": { 964 | "has-tostringtag": "^1.0.0" 965 | }, 966 | "engines": { 967 | "node": ">= 0.4" 968 | }, 969 | "funding": { 970 | "url": "https://github.com/sponsors/ljharb" 971 | } 972 | }, 973 | "node_modules/is-extglob": { 974 | "version": "2.1.1", 975 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 976 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 977 | "dev": true, 978 | "engines": { 979 | "node": ">=0.10.0" 980 | } 981 | }, 982 | "node_modules/is-glob": { 983 | "version": "4.0.3", 984 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 985 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 986 | "dev": true, 987 | "dependencies": { 988 | "is-extglob": "^2.1.1" 989 | }, 990 | "engines": { 991 | "node": ">=0.10.0" 992 | } 993 | }, 994 | "node_modules/is-map": { 995 | "version": "2.0.2", 996 | "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", 997 | "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", 998 | "dev": true, 999 | "funding": { 1000 | "url": "https://github.com/sponsors/ljharb" 1001 | } 1002 | }, 1003 | "node_modules/is-negative-zero": { 1004 | "version": "2.0.2", 1005 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1006 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 1007 | "dev": true, 1008 | "engines": { 1009 | "node": ">= 0.4" 1010 | }, 1011 | "funding": { 1012 | "url": "https://github.com/sponsors/ljharb" 1013 | } 1014 | }, 1015 | "node_modules/is-number-object": { 1016 | "version": "1.0.6", 1017 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", 1018 | "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", 1019 | "dev": true, 1020 | "dependencies": { 1021 | "has-tostringtag": "^1.0.0" 1022 | }, 1023 | "engines": { 1024 | "node": ">= 0.4" 1025 | }, 1026 | "funding": { 1027 | "url": "https://github.com/sponsors/ljharb" 1028 | } 1029 | }, 1030 | "node_modules/is-regex": { 1031 | "version": "1.1.4", 1032 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1033 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1034 | "dev": true, 1035 | "dependencies": { 1036 | "call-bind": "^1.0.2", 1037 | "has-tostringtag": "^1.0.0" 1038 | }, 1039 | "engines": { 1040 | "node": ">= 0.4" 1041 | }, 1042 | "funding": { 1043 | "url": "https://github.com/sponsors/ljharb" 1044 | } 1045 | }, 1046 | "node_modules/is-set": { 1047 | "version": "2.0.2", 1048 | "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", 1049 | "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", 1050 | "dev": true, 1051 | "funding": { 1052 | "url": "https://github.com/sponsors/ljharb" 1053 | } 1054 | }, 1055 | "node_modules/is-shared-array-buffer": { 1056 | "version": "1.0.1", 1057 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", 1058 | "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", 1059 | "dev": true, 1060 | "funding": { 1061 | "url": "https://github.com/sponsors/ljharb" 1062 | } 1063 | }, 1064 | "node_modules/is-string": { 1065 | "version": "1.0.7", 1066 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1067 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1068 | "dev": true, 1069 | "dependencies": { 1070 | "has-tostringtag": "^1.0.0" 1071 | }, 1072 | "engines": { 1073 | "node": ">= 0.4" 1074 | }, 1075 | "funding": { 1076 | "url": "https://github.com/sponsors/ljharb" 1077 | } 1078 | }, 1079 | "node_modules/is-symbol": { 1080 | "version": "1.0.4", 1081 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1082 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1083 | "dev": true, 1084 | "dependencies": { 1085 | "has-symbols": "^1.0.2" 1086 | }, 1087 | "engines": { 1088 | "node": ">= 0.4" 1089 | }, 1090 | "funding": { 1091 | "url": "https://github.com/sponsors/ljharb" 1092 | } 1093 | }, 1094 | "node_modules/is-typed-array": { 1095 | "version": "1.1.8", 1096 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", 1097 | "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", 1098 | "dev": true, 1099 | "dependencies": { 1100 | "available-typed-arrays": "^1.0.5", 1101 | "call-bind": "^1.0.2", 1102 | "es-abstract": "^1.18.5", 1103 | "foreach": "^2.0.5", 1104 | "has-tostringtag": "^1.0.0" 1105 | }, 1106 | "engines": { 1107 | "node": ">= 0.4" 1108 | }, 1109 | "funding": { 1110 | "url": "https://github.com/sponsors/ljharb" 1111 | } 1112 | }, 1113 | "node_modules/is-weakmap": { 1114 | "version": "2.0.1", 1115 | "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", 1116 | "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", 1117 | "dev": true, 1118 | "funding": { 1119 | "url": "https://github.com/sponsors/ljharb" 1120 | } 1121 | }, 1122 | "node_modules/is-weakref": { 1123 | "version": "1.0.2", 1124 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1125 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1126 | "dev": true, 1127 | "dependencies": { 1128 | "call-bind": "^1.0.2" 1129 | }, 1130 | "funding": { 1131 | "url": "https://github.com/sponsors/ljharb" 1132 | } 1133 | }, 1134 | "node_modules/is-weakset": { 1135 | "version": "2.0.2", 1136 | "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", 1137 | "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", 1138 | "dev": true, 1139 | "dependencies": { 1140 | "call-bind": "^1.0.2", 1141 | "get-intrinsic": "^1.1.1" 1142 | }, 1143 | "funding": { 1144 | "url": "https://github.com/sponsors/ljharb" 1145 | } 1146 | }, 1147 | "node_modules/isarray": { 1148 | "version": "2.0.5", 1149 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 1150 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 1151 | "dev": true 1152 | }, 1153 | "node_modules/isexe": { 1154 | "version": "2.0.0", 1155 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1156 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1157 | "dev": true 1158 | }, 1159 | "node_modules/js-yaml": { 1160 | "version": "4.1.0", 1161 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1162 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1163 | "dev": true, 1164 | "dependencies": { 1165 | "argparse": "^2.0.1" 1166 | }, 1167 | "bin": { 1168 | "js-yaml": "bin/js-yaml.js" 1169 | } 1170 | }, 1171 | "node_modules/json-schema-traverse": { 1172 | "version": "0.4.1", 1173 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1174 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1175 | "dev": true 1176 | }, 1177 | "node_modules/json-stable-stringify-without-jsonify": { 1178 | "version": "1.0.1", 1179 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1180 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1181 | "dev": true 1182 | }, 1183 | "node_modules/levn": { 1184 | "version": "0.4.1", 1185 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1186 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1187 | "dev": true, 1188 | "dependencies": { 1189 | "prelude-ls": "^1.2.1", 1190 | "type-check": "~0.4.0" 1191 | }, 1192 | "engines": { 1193 | "node": ">= 0.8.0" 1194 | } 1195 | }, 1196 | "node_modules/lodash.merge": { 1197 | "version": "4.6.2", 1198 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1199 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1200 | "dev": true 1201 | }, 1202 | "node_modules/minimatch": { 1203 | "version": "3.0.5", 1204 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", 1205 | "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", 1206 | "dev": true, 1207 | "dependencies": { 1208 | "brace-expansion": "^1.1.7" 1209 | }, 1210 | "engines": { 1211 | "node": "*" 1212 | } 1213 | }, 1214 | "node_modules/minimist": { 1215 | "version": "1.2.5", 1216 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1217 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1218 | "dev": true 1219 | }, 1220 | "node_modules/ms": { 1221 | "version": "2.1.2", 1222 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1223 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1224 | "dev": true 1225 | }, 1226 | "node_modules/natural-compare": { 1227 | "version": "1.4.0", 1228 | "dev": true, 1229 | "license": "MIT" 1230 | }, 1231 | "node_modules/object-inspect": { 1232 | "version": "1.12.0", 1233 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 1234 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 1235 | "dev": true, 1236 | "funding": { 1237 | "url": "https://github.com/sponsors/ljharb" 1238 | } 1239 | }, 1240 | "node_modules/object-is": { 1241 | "version": "1.1.5", 1242 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", 1243 | "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", 1244 | "dev": true, 1245 | "dependencies": { 1246 | "call-bind": "^1.0.2", 1247 | "define-properties": "^1.1.3" 1248 | }, 1249 | "engines": { 1250 | "node": ">= 0.4" 1251 | }, 1252 | "funding": { 1253 | "url": "https://github.com/sponsors/ljharb" 1254 | } 1255 | }, 1256 | "node_modules/object-keys": { 1257 | "version": "1.1.1", 1258 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1259 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1260 | "dev": true, 1261 | "engines": { 1262 | "node": ">= 0.4" 1263 | } 1264 | }, 1265 | "node_modules/object.assign": { 1266 | "version": "4.1.2", 1267 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1268 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1269 | "dev": true, 1270 | "dependencies": { 1271 | "call-bind": "^1.0.0", 1272 | "define-properties": "^1.1.3", 1273 | "has-symbols": "^1.0.1", 1274 | "object-keys": "^1.1.1" 1275 | }, 1276 | "engines": { 1277 | "node": ">= 0.4" 1278 | }, 1279 | "funding": { 1280 | "url": "https://github.com/sponsors/ljharb" 1281 | } 1282 | }, 1283 | "node_modules/once": { 1284 | "version": "1.4.0", 1285 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1286 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1287 | "dev": true, 1288 | "dependencies": { 1289 | "wrappy": "1" 1290 | } 1291 | }, 1292 | "node_modules/optionator": { 1293 | "version": "0.9.1", 1294 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1295 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1296 | "dev": true, 1297 | "dependencies": { 1298 | "deep-is": "^0.1.3", 1299 | "fast-levenshtein": "^2.0.6", 1300 | "levn": "^0.4.1", 1301 | "prelude-ls": "^1.2.1", 1302 | "type-check": "^0.4.0", 1303 | "word-wrap": "^1.2.3" 1304 | }, 1305 | "engines": { 1306 | "node": ">= 0.8.0" 1307 | } 1308 | }, 1309 | "node_modules/parent-module": { 1310 | "version": "1.0.1", 1311 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1312 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1313 | "dev": true, 1314 | "dependencies": { 1315 | "callsites": "^3.0.0" 1316 | }, 1317 | "engines": { 1318 | "node": ">=6" 1319 | } 1320 | }, 1321 | "node_modules/path-is-absolute": { 1322 | "version": "1.0.1", 1323 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1324 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1325 | "dev": true, 1326 | "engines": { 1327 | "node": ">=0.10.0" 1328 | } 1329 | }, 1330 | "node_modules/path-key": { 1331 | "version": "3.1.1", 1332 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1333 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1334 | "dev": true, 1335 | "engines": { 1336 | "node": ">=8" 1337 | } 1338 | }, 1339 | "node_modules/path-parse": { 1340 | "version": "1.0.7", 1341 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1342 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1343 | "dev": true 1344 | }, 1345 | "node_modules/prelude-ls": { 1346 | "version": "1.2.1", 1347 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1348 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1349 | "dev": true, 1350 | "engines": { 1351 | "node": ">= 0.8.0" 1352 | } 1353 | }, 1354 | "node_modules/punycode": { 1355 | "version": "2.1.1", 1356 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1357 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1358 | "dev": true, 1359 | "engines": { 1360 | "node": ">=6" 1361 | } 1362 | }, 1363 | "node_modules/regexp.prototype.flags": { 1364 | "version": "1.4.1", 1365 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", 1366 | "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", 1367 | "dev": true, 1368 | "dependencies": { 1369 | "call-bind": "^1.0.2", 1370 | "define-properties": "^1.1.3" 1371 | }, 1372 | "engines": { 1373 | "node": ">= 0.4" 1374 | }, 1375 | "funding": { 1376 | "url": "https://github.com/sponsors/ljharb" 1377 | } 1378 | }, 1379 | "node_modules/regexpp": { 1380 | "version": "3.2.0", 1381 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 1382 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 1383 | "dev": true, 1384 | "engines": { 1385 | "node": ">=8" 1386 | }, 1387 | "funding": { 1388 | "url": "https://github.com/sponsors/mysticatea" 1389 | } 1390 | }, 1391 | "node_modules/resolve": { 1392 | "version": "2.0.0-next.3", 1393 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", 1394 | "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", 1395 | "dev": true, 1396 | "dependencies": { 1397 | "is-core-module": "^2.2.0", 1398 | "path-parse": "^1.0.6" 1399 | }, 1400 | "funding": { 1401 | "url": "https://github.com/sponsors/ljharb" 1402 | } 1403 | }, 1404 | "node_modules/resolve-from": { 1405 | "version": "4.0.0", 1406 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1407 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1408 | "dev": true, 1409 | "engines": { 1410 | "node": ">=4" 1411 | } 1412 | }, 1413 | "node_modules/resumer": { 1414 | "version": "0.0.0", 1415 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 1416 | "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", 1417 | "dev": true, 1418 | "dependencies": { 1419 | "through": "~2.3.4" 1420 | } 1421 | }, 1422 | "node_modules/rimraf": { 1423 | "version": "3.0.2", 1424 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1425 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1426 | "dev": true, 1427 | "dependencies": { 1428 | "glob": "^7.1.3" 1429 | }, 1430 | "bin": { 1431 | "rimraf": "bin.js" 1432 | }, 1433 | "funding": { 1434 | "url": "https://github.com/sponsors/isaacs" 1435 | } 1436 | }, 1437 | "node_modules/shebang-command": { 1438 | "version": "2.0.0", 1439 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1440 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1441 | "dev": true, 1442 | "dependencies": { 1443 | "shebang-regex": "^3.0.0" 1444 | }, 1445 | "engines": { 1446 | "node": ">=8" 1447 | } 1448 | }, 1449 | "node_modules/shebang-regex": { 1450 | "version": "3.0.0", 1451 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1452 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1453 | "dev": true, 1454 | "engines": { 1455 | "node": ">=8" 1456 | } 1457 | }, 1458 | "node_modules/side-channel": { 1459 | "version": "1.0.4", 1460 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1461 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1462 | "dev": true, 1463 | "dependencies": { 1464 | "call-bind": "^1.0.0", 1465 | "get-intrinsic": "^1.0.2", 1466 | "object-inspect": "^1.9.0" 1467 | }, 1468 | "funding": { 1469 | "url": "https://github.com/sponsors/ljharb" 1470 | } 1471 | }, 1472 | "node_modules/string.prototype.trim": { 1473 | "version": "1.2.5", 1474 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", 1475 | "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", 1476 | "dev": true, 1477 | "dependencies": { 1478 | "call-bind": "^1.0.2", 1479 | "define-properties": "^1.1.3", 1480 | "es-abstract": "^1.19.1" 1481 | }, 1482 | "engines": { 1483 | "node": ">= 0.4" 1484 | }, 1485 | "funding": { 1486 | "url": "https://github.com/sponsors/ljharb" 1487 | } 1488 | }, 1489 | "node_modules/string.prototype.trimend": { 1490 | "version": "1.0.4", 1491 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 1492 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 1493 | "dev": true, 1494 | "dependencies": { 1495 | "call-bind": "^1.0.2", 1496 | "define-properties": "^1.1.3" 1497 | }, 1498 | "funding": { 1499 | "url": "https://github.com/sponsors/ljharb" 1500 | } 1501 | }, 1502 | "node_modules/string.prototype.trimstart": { 1503 | "version": "1.0.4", 1504 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 1505 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 1506 | "dev": true, 1507 | "dependencies": { 1508 | "call-bind": "^1.0.2", 1509 | "define-properties": "^1.1.3" 1510 | }, 1511 | "funding": { 1512 | "url": "https://github.com/sponsors/ljharb" 1513 | } 1514 | }, 1515 | "node_modules/strip-ansi": { 1516 | "version": "6.0.1", 1517 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1518 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1519 | "dev": true, 1520 | "dependencies": { 1521 | "ansi-regex": "^5.0.1" 1522 | }, 1523 | "engines": { 1524 | "node": ">=8" 1525 | } 1526 | }, 1527 | "node_modules/strip-json-comments": { 1528 | "version": "3.1.1", 1529 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1530 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1531 | "dev": true, 1532 | "engines": { 1533 | "node": ">=8" 1534 | }, 1535 | "funding": { 1536 | "url": "https://github.com/sponsors/sindresorhus" 1537 | } 1538 | }, 1539 | "node_modules/supports-color": { 1540 | "version": "7.2.0", 1541 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1542 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1543 | "dev": true, 1544 | "dependencies": { 1545 | "has-flag": "^4.0.0" 1546 | }, 1547 | "engines": { 1548 | "node": ">=8" 1549 | } 1550 | }, 1551 | "node_modules/tape": { 1552 | "version": "5.5.0", 1553 | "resolved": "https://registry.npmjs.org/tape/-/tape-5.5.0.tgz", 1554 | "integrity": "sha512-hmsc9J+07tM+evk2Rkv7pkbj70Uoy9k0w1yhnN8Sza8kmjhtUTVNltsjywQjC+4grB+EBMKXiJPTkftX8IrbSA==", 1555 | "dev": true, 1556 | "dependencies": { 1557 | "array.prototype.every": "^1.1.3", 1558 | "call-bind": "^1.0.2", 1559 | "deep-equal": "^2.0.5", 1560 | "defined": "^1.0.0", 1561 | "dotignore": "^0.1.2", 1562 | "for-each": "^0.3.3", 1563 | "get-package-type": "^0.1.0", 1564 | "glob": "^7.2.0", 1565 | "has": "^1.0.3", 1566 | "has-dynamic-import": "^2.0.1", 1567 | "inherits": "^2.0.4", 1568 | "is-regex": "^1.1.4", 1569 | "minimist": "^1.2.5", 1570 | "object-inspect": "^1.12.0", 1571 | "object-is": "^1.1.5", 1572 | "object-keys": "^1.1.1", 1573 | "object.assign": "^4.1.2", 1574 | "resolve": "^2.0.0-next.3", 1575 | "resumer": "^0.0.0", 1576 | "string.prototype.trim": "^1.2.5", 1577 | "through": "^2.3.8" 1578 | }, 1579 | "bin": { 1580 | "tape": "bin/tape" 1581 | } 1582 | }, 1583 | "node_modules/text-table": { 1584 | "version": "0.2.0", 1585 | "dev": true, 1586 | "license": "MIT" 1587 | }, 1588 | "node_modules/through": { 1589 | "version": "2.3.8", 1590 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1591 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1592 | "dev": true 1593 | }, 1594 | "node_modules/type-check": { 1595 | "version": "0.4.0", 1596 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1597 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1598 | "dev": true, 1599 | "dependencies": { 1600 | "prelude-ls": "^1.2.1" 1601 | }, 1602 | "engines": { 1603 | "node": ">= 0.8.0" 1604 | } 1605 | }, 1606 | "node_modules/type-fest": { 1607 | "version": "0.20.2", 1608 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1609 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1610 | "dev": true, 1611 | "engines": { 1612 | "node": ">=10" 1613 | }, 1614 | "funding": { 1615 | "url": "https://github.com/sponsors/sindresorhus" 1616 | } 1617 | }, 1618 | "node_modules/unbox-primitive": { 1619 | "version": "1.0.1", 1620 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 1621 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 1622 | "dev": true, 1623 | "dependencies": { 1624 | "function-bind": "^1.1.1", 1625 | "has-bigints": "^1.0.1", 1626 | "has-symbols": "^1.0.2", 1627 | "which-boxed-primitive": "^1.0.2" 1628 | }, 1629 | "funding": { 1630 | "url": "https://github.com/sponsors/ljharb" 1631 | } 1632 | }, 1633 | "node_modules/uri-js": { 1634 | "version": "4.4.1", 1635 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1636 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1637 | "dev": true, 1638 | "dependencies": { 1639 | "punycode": "^2.1.0" 1640 | } 1641 | }, 1642 | "node_modules/v8-compile-cache": { 1643 | "version": "2.3.0", 1644 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 1645 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 1646 | "dev": true 1647 | }, 1648 | "node_modules/which": { 1649 | "version": "2.0.2", 1650 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1651 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1652 | "dev": true, 1653 | "dependencies": { 1654 | "isexe": "^2.0.0" 1655 | }, 1656 | "bin": { 1657 | "node-which": "bin/node-which" 1658 | }, 1659 | "engines": { 1660 | "node": ">= 8" 1661 | } 1662 | }, 1663 | "node_modules/which-boxed-primitive": { 1664 | "version": "1.0.2", 1665 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 1666 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 1667 | "dev": true, 1668 | "dependencies": { 1669 | "is-bigint": "^1.0.1", 1670 | "is-boolean-object": "^1.1.0", 1671 | "is-number-object": "^1.0.4", 1672 | "is-string": "^1.0.5", 1673 | "is-symbol": "^1.0.3" 1674 | }, 1675 | "funding": { 1676 | "url": "https://github.com/sponsors/ljharb" 1677 | } 1678 | }, 1679 | "node_modules/which-collection": { 1680 | "version": "1.0.1", 1681 | "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", 1682 | "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", 1683 | "dev": true, 1684 | "dependencies": { 1685 | "is-map": "^2.0.1", 1686 | "is-set": "^2.0.1", 1687 | "is-weakmap": "^2.0.1", 1688 | "is-weakset": "^2.0.1" 1689 | }, 1690 | "funding": { 1691 | "url": "https://github.com/sponsors/ljharb" 1692 | } 1693 | }, 1694 | "node_modules/which-typed-array": { 1695 | "version": "1.1.7", 1696 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", 1697 | "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", 1698 | "dev": true, 1699 | "dependencies": { 1700 | "available-typed-arrays": "^1.0.5", 1701 | "call-bind": "^1.0.2", 1702 | "es-abstract": "^1.18.5", 1703 | "foreach": "^2.0.5", 1704 | "has-tostringtag": "^1.0.0", 1705 | "is-typed-array": "^1.1.7" 1706 | }, 1707 | "engines": { 1708 | "node": ">= 0.4" 1709 | }, 1710 | "funding": { 1711 | "url": "https://github.com/sponsors/ljharb" 1712 | } 1713 | }, 1714 | "node_modules/word-wrap": { 1715 | "version": "1.2.3", 1716 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1717 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1718 | "dev": true, 1719 | "engines": { 1720 | "node": ">=0.10.0" 1721 | } 1722 | }, 1723 | "node_modules/wrappy": { 1724 | "version": "1.0.2", 1725 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1726 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1727 | "dev": true 1728 | } 1729 | }, 1730 | "dependencies": { 1731 | "@eslint/eslintrc": { 1732 | "version": "1.0.5", 1733 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", 1734 | "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", 1735 | "dev": true, 1736 | "requires": { 1737 | "ajv": "^6.12.4", 1738 | "debug": "^4.3.2", 1739 | "espree": "^9.2.0", 1740 | "globals": "^13.9.0", 1741 | "ignore": "^4.0.6", 1742 | "import-fresh": "^3.2.1", 1743 | "js-yaml": "^4.1.0", 1744 | "minimatch": "^3.0.4", 1745 | "strip-json-comments": "^3.1.1" 1746 | }, 1747 | "dependencies": { 1748 | "ignore": { 1749 | "version": "4.0.6", 1750 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1751 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1752 | "dev": true 1753 | } 1754 | } 1755 | }, 1756 | "@humanwhocodes/config-array": { 1757 | "version": "0.9.3", 1758 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", 1759 | "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", 1760 | "dev": true, 1761 | "requires": { 1762 | "@humanwhocodes/object-schema": "^1.2.1", 1763 | "debug": "^4.1.1", 1764 | "minimatch": "^3.0.4" 1765 | } 1766 | }, 1767 | "@humanwhocodes/object-schema": { 1768 | "version": "1.2.1", 1769 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 1770 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 1771 | "dev": true 1772 | }, 1773 | "acorn": { 1774 | "version": "8.7.0", 1775 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", 1776 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", 1777 | "dev": true 1778 | }, 1779 | "acorn-jsx": { 1780 | "version": "5.3.2", 1781 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1782 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1783 | "dev": true, 1784 | "requires": {} 1785 | }, 1786 | "ajv": { 1787 | "version": "6.12.6", 1788 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1789 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1790 | "dev": true, 1791 | "requires": { 1792 | "fast-deep-equal": "^3.1.1", 1793 | "fast-json-stable-stringify": "^2.0.0", 1794 | "json-schema-traverse": "^0.4.1", 1795 | "uri-js": "^4.2.2" 1796 | } 1797 | }, 1798 | "ansi-regex": { 1799 | "version": "5.0.1", 1800 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1801 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1802 | "dev": true 1803 | }, 1804 | "ansi-styles": { 1805 | "version": "4.3.0", 1806 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1807 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1808 | "dev": true, 1809 | "requires": { 1810 | "color-convert": "^2.0.1" 1811 | } 1812 | }, 1813 | "argparse": { 1814 | "version": "2.0.1", 1815 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1816 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1817 | "dev": true 1818 | }, 1819 | "array.prototype.every": { 1820 | "version": "1.1.3", 1821 | "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.3.tgz", 1822 | "integrity": "sha512-vWnriJI//SOMOWtXbU/VXhJ/InfnNHPF6BLKn5WfY8xXy+NWql0fUy20GO3sdqBhCAO+qw8S/E5nJiZX+QFdCA==", 1823 | "dev": true, 1824 | "requires": { 1825 | "call-bind": "^1.0.2", 1826 | "define-properties": "^1.1.3", 1827 | "es-abstract": "^1.19.0", 1828 | "is-string": "^1.0.7" 1829 | } 1830 | }, 1831 | "available-typed-arrays": { 1832 | "version": "1.0.5", 1833 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", 1834 | "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", 1835 | "dev": true 1836 | }, 1837 | "balanced-match": { 1838 | "version": "1.0.2", 1839 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1840 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1841 | "dev": true 1842 | }, 1843 | "brace-expansion": { 1844 | "version": "1.1.11", 1845 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1846 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1847 | "dev": true, 1848 | "requires": { 1849 | "balanced-match": "^1.0.0", 1850 | "concat-map": "0.0.1" 1851 | } 1852 | }, 1853 | "call-bind": { 1854 | "version": "1.0.2", 1855 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1856 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1857 | "dev": true, 1858 | "requires": { 1859 | "function-bind": "^1.1.1", 1860 | "get-intrinsic": "^1.0.2" 1861 | } 1862 | }, 1863 | "callsites": { 1864 | "version": "3.1.0", 1865 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1866 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1867 | "dev": true 1868 | }, 1869 | "chalk": { 1870 | "version": "4.1.2", 1871 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1872 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1873 | "dev": true, 1874 | "requires": { 1875 | "ansi-styles": "^4.1.0", 1876 | "supports-color": "^7.1.0" 1877 | } 1878 | }, 1879 | "color-convert": { 1880 | "version": "2.0.1", 1881 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1882 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1883 | "dev": true, 1884 | "requires": { 1885 | "color-name": "~1.1.4" 1886 | } 1887 | }, 1888 | "color-name": { 1889 | "version": "1.1.4", 1890 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1891 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1892 | "dev": true 1893 | }, 1894 | "concat-map": { 1895 | "version": "0.0.1", 1896 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1897 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1898 | "dev": true 1899 | }, 1900 | "cross-spawn": { 1901 | "version": "7.0.3", 1902 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1903 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1904 | "dev": true, 1905 | "requires": { 1906 | "path-key": "^3.1.0", 1907 | "shebang-command": "^2.0.0", 1908 | "which": "^2.0.1" 1909 | } 1910 | }, 1911 | "debug": { 1912 | "version": "4.3.3", 1913 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1914 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1915 | "dev": true, 1916 | "requires": { 1917 | "ms": "2.1.2" 1918 | } 1919 | }, 1920 | "deep-equal": { 1921 | "version": "2.0.5", 1922 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", 1923 | "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", 1924 | "dev": true, 1925 | "requires": { 1926 | "call-bind": "^1.0.0", 1927 | "es-get-iterator": "^1.1.1", 1928 | "get-intrinsic": "^1.0.1", 1929 | "is-arguments": "^1.0.4", 1930 | "is-date-object": "^1.0.2", 1931 | "is-regex": "^1.1.1", 1932 | "isarray": "^2.0.5", 1933 | "object-is": "^1.1.4", 1934 | "object-keys": "^1.1.1", 1935 | "object.assign": "^4.1.2", 1936 | "regexp.prototype.flags": "^1.3.0", 1937 | "side-channel": "^1.0.3", 1938 | "which-boxed-primitive": "^1.0.1", 1939 | "which-collection": "^1.0.1", 1940 | "which-typed-array": "^1.1.2" 1941 | } 1942 | }, 1943 | "deep-is": { 1944 | "version": "0.1.4", 1945 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1946 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1947 | "dev": true 1948 | }, 1949 | "define-properties": { 1950 | "version": "1.1.3", 1951 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1952 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1953 | "dev": true, 1954 | "requires": { 1955 | "object-keys": "^1.0.12" 1956 | } 1957 | }, 1958 | "defined": { 1959 | "version": "1.0.0", 1960 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 1961 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", 1962 | "dev": true 1963 | }, 1964 | "doctrine": { 1965 | "version": "3.0.0", 1966 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1967 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1968 | "dev": true, 1969 | "requires": { 1970 | "esutils": "^2.0.2" 1971 | } 1972 | }, 1973 | "dotignore": { 1974 | "version": "0.1.2", 1975 | "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", 1976 | "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", 1977 | "dev": true, 1978 | "requires": { 1979 | "minimatch": "^3.0.4" 1980 | } 1981 | }, 1982 | "es-abstract": { 1983 | "version": "1.19.1", 1984 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", 1985 | "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", 1986 | "dev": true, 1987 | "requires": { 1988 | "call-bind": "^1.0.2", 1989 | "es-to-primitive": "^1.2.1", 1990 | "function-bind": "^1.1.1", 1991 | "get-intrinsic": "^1.1.1", 1992 | "get-symbol-description": "^1.0.0", 1993 | "has": "^1.0.3", 1994 | "has-symbols": "^1.0.2", 1995 | "internal-slot": "^1.0.3", 1996 | "is-callable": "^1.2.4", 1997 | "is-negative-zero": "^2.0.1", 1998 | "is-regex": "^1.1.4", 1999 | "is-shared-array-buffer": "^1.0.1", 2000 | "is-string": "^1.0.7", 2001 | "is-weakref": "^1.0.1", 2002 | "object-inspect": "^1.11.0", 2003 | "object-keys": "^1.1.1", 2004 | "object.assign": "^4.1.2", 2005 | "string.prototype.trimend": "^1.0.4", 2006 | "string.prototype.trimstart": "^1.0.4", 2007 | "unbox-primitive": "^1.0.1" 2008 | } 2009 | }, 2010 | "es-get-iterator": { 2011 | "version": "1.1.2", 2012 | "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", 2013 | "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", 2014 | "dev": true, 2015 | "requires": { 2016 | "call-bind": "^1.0.2", 2017 | "get-intrinsic": "^1.1.0", 2018 | "has-symbols": "^1.0.1", 2019 | "is-arguments": "^1.1.0", 2020 | "is-map": "^2.0.2", 2021 | "is-set": "^2.0.2", 2022 | "is-string": "^1.0.5", 2023 | "isarray": "^2.0.5" 2024 | } 2025 | }, 2026 | "es-to-primitive": { 2027 | "version": "1.2.1", 2028 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 2029 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 2030 | "dev": true, 2031 | "requires": { 2032 | "is-callable": "^1.1.4", 2033 | "is-date-object": "^1.0.1", 2034 | "is-symbol": "^1.0.2" 2035 | } 2036 | }, 2037 | "escape-string-regexp": { 2038 | "version": "4.0.0", 2039 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2040 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2041 | "dev": true 2042 | }, 2043 | "eslint": { 2044 | "version": "8.8.0", 2045 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", 2046 | "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", 2047 | "dev": true, 2048 | "requires": { 2049 | "@eslint/eslintrc": "^1.0.5", 2050 | "@humanwhocodes/config-array": "^0.9.2", 2051 | "ajv": "^6.10.0", 2052 | "chalk": "^4.0.0", 2053 | "cross-spawn": "^7.0.2", 2054 | "debug": "^4.3.2", 2055 | "doctrine": "^3.0.0", 2056 | "escape-string-regexp": "^4.0.0", 2057 | "eslint-scope": "^7.1.0", 2058 | "eslint-utils": "^3.0.0", 2059 | "eslint-visitor-keys": "^3.2.0", 2060 | "espree": "^9.3.0", 2061 | "esquery": "^1.4.0", 2062 | "esutils": "^2.0.2", 2063 | "fast-deep-equal": "^3.1.3", 2064 | "file-entry-cache": "^6.0.1", 2065 | "functional-red-black-tree": "^1.0.1", 2066 | "glob-parent": "^6.0.1", 2067 | "globals": "^13.6.0", 2068 | "ignore": "^5.2.0", 2069 | "import-fresh": "^3.0.0", 2070 | "imurmurhash": "^0.1.4", 2071 | "is-glob": "^4.0.0", 2072 | "js-yaml": "^4.1.0", 2073 | "json-stable-stringify-without-jsonify": "^1.0.1", 2074 | "levn": "^0.4.1", 2075 | "lodash.merge": "^4.6.2", 2076 | "minimatch": "^3.0.4", 2077 | "natural-compare": "^1.4.0", 2078 | "optionator": "^0.9.1", 2079 | "regexpp": "^3.2.0", 2080 | "strip-ansi": "^6.0.1", 2081 | "strip-json-comments": "^3.1.0", 2082 | "text-table": "^0.2.0", 2083 | "v8-compile-cache": "^2.0.3" 2084 | } 2085 | }, 2086 | "eslint-config-mourner": { 2087 | "version": "2.0.1", 2088 | "dev": true 2089 | }, 2090 | "eslint-scope": { 2091 | "version": "7.1.0", 2092 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", 2093 | "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", 2094 | "dev": true, 2095 | "requires": { 2096 | "esrecurse": "^4.3.0", 2097 | "estraverse": "^5.2.0" 2098 | } 2099 | }, 2100 | "eslint-utils": { 2101 | "version": "3.0.0", 2102 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 2103 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 2104 | "dev": true, 2105 | "requires": { 2106 | "eslint-visitor-keys": "^2.0.0" 2107 | }, 2108 | "dependencies": { 2109 | "eslint-visitor-keys": { 2110 | "version": "2.1.0", 2111 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 2112 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 2113 | "dev": true 2114 | } 2115 | } 2116 | }, 2117 | "eslint-visitor-keys": { 2118 | "version": "3.2.0", 2119 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", 2120 | "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", 2121 | "dev": true 2122 | }, 2123 | "espree": { 2124 | "version": "9.3.0", 2125 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", 2126 | "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", 2127 | "dev": true, 2128 | "requires": { 2129 | "acorn": "^8.7.0", 2130 | "acorn-jsx": "^5.3.1", 2131 | "eslint-visitor-keys": "^3.1.0" 2132 | } 2133 | }, 2134 | "esquery": { 2135 | "version": "1.4.0", 2136 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 2137 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 2138 | "dev": true, 2139 | "requires": { 2140 | "estraverse": "^5.1.0" 2141 | } 2142 | }, 2143 | "esrecurse": { 2144 | "version": "4.3.0", 2145 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2146 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2147 | "dev": true, 2148 | "requires": { 2149 | "estraverse": "^5.2.0" 2150 | } 2151 | }, 2152 | "estraverse": { 2153 | "version": "5.3.0", 2154 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2155 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2156 | "dev": true 2157 | }, 2158 | "esutils": { 2159 | "version": "2.0.3", 2160 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 2161 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2162 | "dev": true 2163 | }, 2164 | "fast-deep-equal": { 2165 | "version": "3.1.3", 2166 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2167 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2168 | "dev": true 2169 | }, 2170 | "fast-json-stable-stringify": { 2171 | "version": "2.1.0", 2172 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2173 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2174 | "dev": true 2175 | }, 2176 | "fast-levenshtein": { 2177 | "version": "2.0.6", 2178 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2179 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 2180 | "dev": true 2181 | }, 2182 | "file-entry-cache": { 2183 | "version": "6.0.1", 2184 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 2185 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 2186 | "dev": true, 2187 | "requires": { 2188 | "flat-cache": "^3.0.4" 2189 | } 2190 | }, 2191 | "flat-cache": { 2192 | "version": "3.0.4", 2193 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 2194 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 2195 | "dev": true, 2196 | "requires": { 2197 | "flatted": "^3.1.0", 2198 | "rimraf": "^3.0.2" 2199 | } 2200 | }, 2201 | "flatted": { 2202 | "version": "3.2.5", 2203 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", 2204 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 2205 | "dev": true 2206 | }, 2207 | "for-each": { 2208 | "version": "0.3.3", 2209 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 2210 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 2211 | "dev": true, 2212 | "requires": { 2213 | "is-callable": "^1.1.3" 2214 | } 2215 | }, 2216 | "foreach": { 2217 | "version": "2.0.5", 2218 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 2219 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", 2220 | "dev": true 2221 | }, 2222 | "fs.realpath": { 2223 | "version": "1.0.0", 2224 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2225 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 2226 | "dev": true 2227 | }, 2228 | "function-bind": { 2229 | "version": "1.1.1", 2230 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2231 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2232 | "dev": true 2233 | }, 2234 | "functional-red-black-tree": { 2235 | "version": "1.0.1", 2236 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 2237 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 2238 | "dev": true 2239 | }, 2240 | "get-intrinsic": { 2241 | "version": "1.1.1", 2242 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 2243 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 2244 | "dev": true, 2245 | "requires": { 2246 | "function-bind": "^1.1.1", 2247 | "has": "^1.0.3", 2248 | "has-symbols": "^1.0.1" 2249 | } 2250 | }, 2251 | "get-package-type": { 2252 | "version": "0.1.0", 2253 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 2254 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", 2255 | "dev": true 2256 | }, 2257 | "get-symbol-description": { 2258 | "version": "1.0.0", 2259 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 2260 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 2261 | "dev": true, 2262 | "requires": { 2263 | "call-bind": "^1.0.2", 2264 | "get-intrinsic": "^1.1.1" 2265 | } 2266 | }, 2267 | "glob": { 2268 | "version": "7.2.0", 2269 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 2270 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 2271 | "dev": true, 2272 | "requires": { 2273 | "fs.realpath": "^1.0.0", 2274 | "inflight": "^1.0.4", 2275 | "inherits": "2", 2276 | "minimatch": "^3.0.4", 2277 | "once": "^1.3.0", 2278 | "path-is-absolute": "^1.0.0" 2279 | } 2280 | }, 2281 | "glob-parent": { 2282 | "version": "6.0.2", 2283 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 2284 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 2285 | "dev": true, 2286 | "requires": { 2287 | "is-glob": "^4.0.3" 2288 | } 2289 | }, 2290 | "globals": { 2291 | "version": "13.12.1", 2292 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", 2293 | "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", 2294 | "dev": true, 2295 | "requires": { 2296 | "type-fest": "^0.20.2" 2297 | } 2298 | }, 2299 | "has": { 2300 | "version": "1.0.3", 2301 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2302 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2303 | "dev": true, 2304 | "requires": { 2305 | "function-bind": "^1.1.1" 2306 | } 2307 | }, 2308 | "has-bigints": { 2309 | "version": "1.0.1", 2310 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 2311 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", 2312 | "dev": true 2313 | }, 2314 | "has-dynamic-import": { 2315 | "version": "2.0.1", 2316 | "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.1.tgz", 2317 | "integrity": "sha512-X3fbtsZmwb6W7fJGR9o7x65fZoodygCrZ3TVycvghP62yYQfS0t4RS0Qcz+j5tQYUKeSWS09tHkWW6WhFV3XhQ==", 2318 | "dev": true, 2319 | "requires": { 2320 | "call-bind": "^1.0.2", 2321 | "get-intrinsic": "^1.1.1" 2322 | } 2323 | }, 2324 | "has-flag": { 2325 | "version": "4.0.0", 2326 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2327 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2328 | "dev": true 2329 | }, 2330 | "has-symbols": { 2331 | "version": "1.0.2", 2332 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 2333 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", 2334 | "dev": true 2335 | }, 2336 | "has-tostringtag": { 2337 | "version": "1.0.0", 2338 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 2339 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 2340 | "dev": true, 2341 | "requires": { 2342 | "has-symbols": "^1.0.2" 2343 | } 2344 | }, 2345 | "ignore": { 2346 | "version": "5.2.0", 2347 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 2348 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 2349 | "dev": true 2350 | }, 2351 | "import-fresh": { 2352 | "version": "3.3.0", 2353 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 2354 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 2355 | "dev": true, 2356 | "requires": { 2357 | "parent-module": "^1.0.0", 2358 | "resolve-from": "^4.0.0" 2359 | } 2360 | }, 2361 | "imurmurhash": { 2362 | "version": "0.1.4", 2363 | "dev": true 2364 | }, 2365 | "inflight": { 2366 | "version": "1.0.6", 2367 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2368 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2369 | "dev": true, 2370 | "requires": { 2371 | "once": "^1.3.0", 2372 | "wrappy": "1" 2373 | } 2374 | }, 2375 | "inherits": { 2376 | "version": "2.0.4", 2377 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2378 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2379 | "dev": true 2380 | }, 2381 | "internal-slot": { 2382 | "version": "1.0.3", 2383 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 2384 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 2385 | "dev": true, 2386 | "requires": { 2387 | "get-intrinsic": "^1.1.0", 2388 | "has": "^1.0.3", 2389 | "side-channel": "^1.0.4" 2390 | } 2391 | }, 2392 | "is-arguments": { 2393 | "version": "1.1.1", 2394 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", 2395 | "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", 2396 | "dev": true, 2397 | "requires": { 2398 | "call-bind": "^1.0.2", 2399 | "has-tostringtag": "^1.0.0" 2400 | } 2401 | }, 2402 | "is-bigint": { 2403 | "version": "1.0.4", 2404 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 2405 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 2406 | "dev": true, 2407 | "requires": { 2408 | "has-bigints": "^1.0.1" 2409 | } 2410 | }, 2411 | "is-boolean-object": { 2412 | "version": "1.1.2", 2413 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 2414 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 2415 | "dev": true, 2416 | "requires": { 2417 | "call-bind": "^1.0.2", 2418 | "has-tostringtag": "^1.0.0" 2419 | } 2420 | }, 2421 | "is-callable": { 2422 | "version": "1.2.4", 2423 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 2424 | "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", 2425 | "dev": true 2426 | }, 2427 | "is-core-module": { 2428 | "version": "2.8.1", 2429 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 2430 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 2431 | "dev": true, 2432 | "requires": { 2433 | "has": "^1.0.3" 2434 | } 2435 | }, 2436 | "is-date-object": { 2437 | "version": "1.0.5", 2438 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 2439 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 2440 | "dev": true, 2441 | "requires": { 2442 | "has-tostringtag": "^1.0.0" 2443 | } 2444 | }, 2445 | "is-extglob": { 2446 | "version": "2.1.1", 2447 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2448 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2449 | "dev": true 2450 | }, 2451 | "is-glob": { 2452 | "version": "4.0.3", 2453 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2454 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2455 | "dev": true, 2456 | "requires": { 2457 | "is-extglob": "^2.1.1" 2458 | } 2459 | }, 2460 | "is-map": { 2461 | "version": "2.0.2", 2462 | "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", 2463 | "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", 2464 | "dev": true 2465 | }, 2466 | "is-negative-zero": { 2467 | "version": "2.0.2", 2468 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 2469 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 2470 | "dev": true 2471 | }, 2472 | "is-number-object": { 2473 | "version": "1.0.6", 2474 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", 2475 | "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", 2476 | "dev": true, 2477 | "requires": { 2478 | "has-tostringtag": "^1.0.0" 2479 | } 2480 | }, 2481 | "is-regex": { 2482 | "version": "1.1.4", 2483 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 2484 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 2485 | "dev": true, 2486 | "requires": { 2487 | "call-bind": "^1.0.2", 2488 | "has-tostringtag": "^1.0.0" 2489 | } 2490 | }, 2491 | "is-set": { 2492 | "version": "2.0.2", 2493 | "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", 2494 | "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", 2495 | "dev": true 2496 | }, 2497 | "is-shared-array-buffer": { 2498 | "version": "1.0.1", 2499 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", 2500 | "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", 2501 | "dev": true 2502 | }, 2503 | "is-string": { 2504 | "version": "1.0.7", 2505 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 2506 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 2507 | "dev": true, 2508 | "requires": { 2509 | "has-tostringtag": "^1.0.0" 2510 | } 2511 | }, 2512 | "is-symbol": { 2513 | "version": "1.0.4", 2514 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 2515 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 2516 | "dev": true, 2517 | "requires": { 2518 | "has-symbols": "^1.0.2" 2519 | } 2520 | }, 2521 | "is-typed-array": { 2522 | "version": "1.1.8", 2523 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", 2524 | "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", 2525 | "dev": true, 2526 | "requires": { 2527 | "available-typed-arrays": "^1.0.5", 2528 | "call-bind": "^1.0.2", 2529 | "es-abstract": "^1.18.5", 2530 | "foreach": "^2.0.5", 2531 | "has-tostringtag": "^1.0.0" 2532 | } 2533 | }, 2534 | "is-weakmap": { 2535 | "version": "2.0.1", 2536 | "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", 2537 | "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", 2538 | "dev": true 2539 | }, 2540 | "is-weakref": { 2541 | "version": "1.0.2", 2542 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 2543 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 2544 | "dev": true, 2545 | "requires": { 2546 | "call-bind": "^1.0.2" 2547 | } 2548 | }, 2549 | "is-weakset": { 2550 | "version": "2.0.2", 2551 | "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", 2552 | "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", 2553 | "dev": true, 2554 | "requires": { 2555 | "call-bind": "^1.0.2", 2556 | "get-intrinsic": "^1.1.1" 2557 | } 2558 | }, 2559 | "isarray": { 2560 | "version": "2.0.5", 2561 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 2562 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 2563 | "dev": true 2564 | }, 2565 | "isexe": { 2566 | "version": "2.0.0", 2567 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2568 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2569 | "dev": true 2570 | }, 2571 | "js-yaml": { 2572 | "version": "4.1.0", 2573 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2574 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2575 | "dev": true, 2576 | "requires": { 2577 | "argparse": "^2.0.1" 2578 | } 2579 | }, 2580 | "json-schema-traverse": { 2581 | "version": "0.4.1", 2582 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2583 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2584 | "dev": true 2585 | }, 2586 | "json-stable-stringify-without-jsonify": { 2587 | "version": "1.0.1", 2588 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2589 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 2590 | "dev": true 2591 | }, 2592 | "levn": { 2593 | "version": "0.4.1", 2594 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2595 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2596 | "dev": true, 2597 | "requires": { 2598 | "prelude-ls": "^1.2.1", 2599 | "type-check": "~0.4.0" 2600 | } 2601 | }, 2602 | "lodash.merge": { 2603 | "version": "4.6.2", 2604 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2605 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2606 | "dev": true 2607 | }, 2608 | "minimatch": { 2609 | "version": "3.0.5", 2610 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", 2611 | "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", 2612 | "dev": true, 2613 | "requires": { 2614 | "brace-expansion": "^1.1.7" 2615 | } 2616 | }, 2617 | "minimist": { 2618 | "version": "1.2.5", 2619 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2620 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2621 | "dev": true 2622 | }, 2623 | "ms": { 2624 | "version": "2.1.2", 2625 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2626 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2627 | "dev": true 2628 | }, 2629 | "natural-compare": { 2630 | "version": "1.4.0", 2631 | "dev": true 2632 | }, 2633 | "object-inspect": { 2634 | "version": "1.12.0", 2635 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 2636 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 2637 | "dev": true 2638 | }, 2639 | "object-is": { 2640 | "version": "1.1.5", 2641 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", 2642 | "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", 2643 | "dev": true, 2644 | "requires": { 2645 | "call-bind": "^1.0.2", 2646 | "define-properties": "^1.1.3" 2647 | } 2648 | }, 2649 | "object-keys": { 2650 | "version": "1.1.1", 2651 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2652 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 2653 | "dev": true 2654 | }, 2655 | "object.assign": { 2656 | "version": "4.1.2", 2657 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 2658 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 2659 | "dev": true, 2660 | "requires": { 2661 | "call-bind": "^1.0.0", 2662 | "define-properties": "^1.1.3", 2663 | "has-symbols": "^1.0.1", 2664 | "object-keys": "^1.1.1" 2665 | } 2666 | }, 2667 | "once": { 2668 | "version": "1.4.0", 2669 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2670 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2671 | "dev": true, 2672 | "requires": { 2673 | "wrappy": "1" 2674 | } 2675 | }, 2676 | "optionator": { 2677 | "version": "0.9.1", 2678 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 2679 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 2680 | "dev": true, 2681 | "requires": { 2682 | "deep-is": "^0.1.3", 2683 | "fast-levenshtein": "^2.0.6", 2684 | "levn": "^0.4.1", 2685 | "prelude-ls": "^1.2.1", 2686 | "type-check": "^0.4.0", 2687 | "word-wrap": "^1.2.3" 2688 | } 2689 | }, 2690 | "parent-module": { 2691 | "version": "1.0.1", 2692 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2693 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2694 | "dev": true, 2695 | "requires": { 2696 | "callsites": "^3.0.0" 2697 | } 2698 | }, 2699 | "path-is-absolute": { 2700 | "version": "1.0.1", 2701 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2702 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2703 | "dev": true 2704 | }, 2705 | "path-key": { 2706 | "version": "3.1.1", 2707 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2708 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2709 | "dev": true 2710 | }, 2711 | "path-parse": { 2712 | "version": "1.0.7", 2713 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2714 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2715 | "dev": true 2716 | }, 2717 | "prelude-ls": { 2718 | "version": "1.2.1", 2719 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2720 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2721 | "dev": true 2722 | }, 2723 | "punycode": { 2724 | "version": "2.1.1", 2725 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2726 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2727 | "dev": true 2728 | }, 2729 | "regexp.prototype.flags": { 2730 | "version": "1.4.1", 2731 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", 2732 | "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", 2733 | "dev": true, 2734 | "requires": { 2735 | "call-bind": "^1.0.2", 2736 | "define-properties": "^1.1.3" 2737 | } 2738 | }, 2739 | "regexpp": { 2740 | "version": "3.2.0", 2741 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 2742 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 2743 | "dev": true 2744 | }, 2745 | "resolve": { 2746 | "version": "2.0.0-next.3", 2747 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", 2748 | "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", 2749 | "dev": true, 2750 | "requires": { 2751 | "is-core-module": "^2.2.0", 2752 | "path-parse": "^1.0.6" 2753 | } 2754 | }, 2755 | "resolve-from": { 2756 | "version": "4.0.0", 2757 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2758 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2759 | "dev": true 2760 | }, 2761 | "resumer": { 2762 | "version": "0.0.0", 2763 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 2764 | "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", 2765 | "dev": true, 2766 | "requires": { 2767 | "through": "~2.3.4" 2768 | } 2769 | }, 2770 | "rimraf": { 2771 | "version": "3.0.2", 2772 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2773 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2774 | "dev": true, 2775 | "requires": { 2776 | "glob": "^7.1.3" 2777 | } 2778 | }, 2779 | "shebang-command": { 2780 | "version": "2.0.0", 2781 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2782 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2783 | "dev": true, 2784 | "requires": { 2785 | "shebang-regex": "^3.0.0" 2786 | } 2787 | }, 2788 | "shebang-regex": { 2789 | "version": "3.0.0", 2790 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2791 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2792 | "dev": true 2793 | }, 2794 | "side-channel": { 2795 | "version": "1.0.4", 2796 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 2797 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 2798 | "dev": true, 2799 | "requires": { 2800 | "call-bind": "^1.0.0", 2801 | "get-intrinsic": "^1.0.2", 2802 | "object-inspect": "^1.9.0" 2803 | } 2804 | }, 2805 | "string.prototype.trim": { 2806 | "version": "1.2.5", 2807 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", 2808 | "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", 2809 | "dev": true, 2810 | "requires": { 2811 | "call-bind": "^1.0.2", 2812 | "define-properties": "^1.1.3", 2813 | "es-abstract": "^1.19.1" 2814 | } 2815 | }, 2816 | "string.prototype.trimend": { 2817 | "version": "1.0.4", 2818 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 2819 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 2820 | "dev": true, 2821 | "requires": { 2822 | "call-bind": "^1.0.2", 2823 | "define-properties": "^1.1.3" 2824 | } 2825 | }, 2826 | "string.prototype.trimstart": { 2827 | "version": "1.0.4", 2828 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 2829 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 2830 | "dev": true, 2831 | "requires": { 2832 | "call-bind": "^1.0.2", 2833 | "define-properties": "^1.1.3" 2834 | } 2835 | }, 2836 | "strip-ansi": { 2837 | "version": "6.0.1", 2838 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2839 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2840 | "dev": true, 2841 | "requires": { 2842 | "ansi-regex": "^5.0.1" 2843 | } 2844 | }, 2845 | "strip-json-comments": { 2846 | "version": "3.1.1", 2847 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2848 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2849 | "dev": true 2850 | }, 2851 | "supports-color": { 2852 | "version": "7.2.0", 2853 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2854 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2855 | "dev": true, 2856 | "requires": { 2857 | "has-flag": "^4.0.0" 2858 | } 2859 | }, 2860 | "tape": { 2861 | "version": "5.5.0", 2862 | "resolved": "https://registry.npmjs.org/tape/-/tape-5.5.0.tgz", 2863 | "integrity": "sha512-hmsc9J+07tM+evk2Rkv7pkbj70Uoy9k0w1yhnN8Sza8kmjhtUTVNltsjywQjC+4grB+EBMKXiJPTkftX8IrbSA==", 2864 | "dev": true, 2865 | "requires": { 2866 | "array.prototype.every": "^1.1.3", 2867 | "call-bind": "^1.0.2", 2868 | "deep-equal": "^2.0.5", 2869 | "defined": "^1.0.0", 2870 | "dotignore": "^0.1.2", 2871 | "for-each": "^0.3.3", 2872 | "get-package-type": "^0.1.0", 2873 | "glob": "^7.2.0", 2874 | "has": "^1.0.3", 2875 | "has-dynamic-import": "^2.0.1", 2876 | "inherits": "^2.0.4", 2877 | "is-regex": "^1.1.4", 2878 | "minimist": "^1.2.5", 2879 | "object-inspect": "^1.12.0", 2880 | "object-is": "^1.1.5", 2881 | "object-keys": "^1.1.1", 2882 | "object.assign": "^4.1.2", 2883 | "resolve": "^2.0.0-next.3", 2884 | "resumer": "^0.0.0", 2885 | "string.prototype.trim": "^1.2.5", 2886 | "through": "^2.3.8" 2887 | } 2888 | }, 2889 | "text-table": { 2890 | "version": "0.2.0", 2891 | "dev": true 2892 | }, 2893 | "through": { 2894 | "version": "2.3.8", 2895 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2896 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 2897 | "dev": true 2898 | }, 2899 | "type-check": { 2900 | "version": "0.4.0", 2901 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2902 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2903 | "dev": true, 2904 | "requires": { 2905 | "prelude-ls": "^1.2.1" 2906 | } 2907 | }, 2908 | "type-fest": { 2909 | "version": "0.20.2", 2910 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2911 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2912 | "dev": true 2913 | }, 2914 | "unbox-primitive": { 2915 | "version": "1.0.1", 2916 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 2917 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 2918 | "dev": true, 2919 | "requires": { 2920 | "function-bind": "^1.1.1", 2921 | "has-bigints": "^1.0.1", 2922 | "has-symbols": "^1.0.2", 2923 | "which-boxed-primitive": "^1.0.2" 2924 | } 2925 | }, 2926 | "uri-js": { 2927 | "version": "4.4.1", 2928 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2929 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2930 | "dev": true, 2931 | "requires": { 2932 | "punycode": "^2.1.0" 2933 | } 2934 | }, 2935 | "v8-compile-cache": { 2936 | "version": "2.3.0", 2937 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 2938 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 2939 | "dev": true 2940 | }, 2941 | "which": { 2942 | "version": "2.0.2", 2943 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2944 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2945 | "dev": true, 2946 | "requires": { 2947 | "isexe": "^2.0.0" 2948 | } 2949 | }, 2950 | "which-boxed-primitive": { 2951 | "version": "1.0.2", 2952 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 2953 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 2954 | "dev": true, 2955 | "requires": { 2956 | "is-bigint": "^1.0.1", 2957 | "is-boolean-object": "^1.1.0", 2958 | "is-number-object": "^1.0.4", 2959 | "is-string": "^1.0.5", 2960 | "is-symbol": "^1.0.3" 2961 | } 2962 | }, 2963 | "which-collection": { 2964 | "version": "1.0.1", 2965 | "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", 2966 | "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", 2967 | "dev": true, 2968 | "requires": { 2969 | "is-map": "^2.0.1", 2970 | "is-set": "^2.0.1", 2971 | "is-weakmap": "^2.0.1", 2972 | "is-weakset": "^2.0.1" 2973 | } 2974 | }, 2975 | "which-typed-array": { 2976 | "version": "1.1.7", 2977 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", 2978 | "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", 2979 | "dev": true, 2980 | "requires": { 2981 | "available-typed-arrays": "^1.0.5", 2982 | "call-bind": "^1.0.2", 2983 | "es-abstract": "^1.18.5", 2984 | "foreach": "^2.0.5", 2985 | "has-tostringtag": "^1.0.0", 2986 | "is-typed-array": "^1.1.7" 2987 | } 2988 | }, 2989 | "word-wrap": { 2990 | "version": "1.2.3", 2991 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2992 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2993 | "dev": true 2994 | }, 2995 | "wrappy": { 2996 | "version": "1.0.2", 2997 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2998 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2999 | "dev": true 3000 | } 3001 | } 3002 | } 3003 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "suncalc", 3 | "version": "1.9.0", 4 | "description": "A tiny JavaScript library for calculating sun/moon positions and phases.", 5 | "homepage": "https://github.com/mourner/suncalc", 6 | "keywords": [ 7 | "sun", 8 | "astronomy", 9 | "math", 10 | "calculation", 11 | "sunrise", 12 | "sunset", 13 | "twilight", 14 | "moon", 15 | "illumination" 16 | ], 17 | "author": "Vladimir Agafonkin", 18 | "repository": { 19 | "type": "git", 20 | "url": "git://github.com/mourner/suncalc.git" 21 | }, 22 | "main": "suncalc.js", 23 | "devDependencies": { 24 | "eslint": "^8.8.0", 25 | "eslint-config-mourner": "^2.0.1", 26 | "tape": "^5.5.0" 27 | }, 28 | "eslintConfig": { 29 | "extends": "mourner", 30 | "rules": { 31 | "indent": 0, 32 | "array-bracket-spacing": 0, 33 | "strict": 0, 34 | "brace-style": 0 35 | }, 36 | "env": { 37 | "amd": true 38 | } 39 | }, 40 | "files": [ 41 | "suncalc.js" 42 | ], 43 | "scripts": { 44 | "pretest": "eslint suncalc.js test.js", 45 | "test": "node test.js", 46 | "prepublishOnly": "npm test" 47 | }, 48 | "jshintConfig": { 49 | "quotmark": "single", 50 | "trailing": true, 51 | "unused": true 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /suncalc.js: -------------------------------------------------------------------------------- 1 | /* 2 | (c) 2011-2015, Vladimir Agafonkin 3 | SunCalc is a JavaScript library for calculating sun/moon position and light phases. 4 | https://github.com/mourner/suncalc 5 | */ 6 | 7 | (function () { 'use strict'; 8 | 9 | // shortcuts for easier to read formulas 10 | 11 | var PI = Math.PI, 12 | sin = Math.sin, 13 | cos = Math.cos, 14 | tan = Math.tan, 15 | asin = Math.asin, 16 | atan = Math.atan2, 17 | acos = Math.acos, 18 | rad = PI / 180; 19 | 20 | // sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas 21 | 22 | 23 | // date/time constants and conversions 24 | 25 | var dayMs = 1000 * 60 * 60 * 24, 26 | J1970 = 2440588, 27 | J2000 = 2451545; 28 | 29 | function toJulian(date) { return date.valueOf() / dayMs - 0.5 + J1970; } 30 | function fromJulian(j) { return new Date((j + 0.5 - J1970) * dayMs); } 31 | function toDays(date) { return toJulian(date) - J2000; } 32 | 33 | 34 | // general calculations for position 35 | 36 | var e = rad * 23.4397; // obliquity of the Earth 37 | 38 | function rightAscension(l, b) { return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); } 39 | function declination(l, b) { return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); } 40 | 41 | function azimuth(H, phi, dec) { return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); } 42 | function altitude(H, phi, dec) { return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); } 43 | 44 | function siderealTime(d, lw) { return rad * (280.16 + 360.9856235 * d) - lw; } 45 | 46 | function astroRefraction(h) { 47 | if (h < 0) // the following formula works for positive altitudes only. 48 | h = 0; // if h = -0.08901179 a div/0 would occur. 49 | 50 | // formula 16.4 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. 51 | // 1.02 / tan(h + 10.26 / (h + 5.10)) h in degrees, result in arc minutes -> converted to rad: 52 | return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179)); 53 | } 54 | 55 | // general sun calculations 56 | 57 | function solarMeanAnomaly(d) { return rad * (357.5291 + 0.98560028 * d); } 58 | 59 | function eclipticLongitude(M) { 60 | 61 | var C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)), // equation of center 62 | P = rad * 102.9372; // perihelion of the Earth 63 | 64 | return M + C + P + PI; 65 | } 66 | 67 | function sunCoords(d) { 68 | 69 | var M = solarMeanAnomaly(d), 70 | L = eclipticLongitude(M); 71 | 72 | return { 73 | dec: declination(L, 0), 74 | ra: rightAscension(L, 0) 75 | }; 76 | } 77 | 78 | 79 | var SunCalc = {}; 80 | 81 | 82 | // calculates sun position for a given date and latitude/longitude 83 | 84 | SunCalc.getPosition = function (date, lat, lng) { 85 | 86 | var lw = rad * -lng, 87 | phi = rad * lat, 88 | d = toDays(date), 89 | 90 | c = sunCoords(d), 91 | H = siderealTime(d, lw) - c.ra; 92 | 93 | return { 94 | azimuth: azimuth(H, phi, c.dec), 95 | altitude: altitude(H, phi, c.dec) 96 | }; 97 | }; 98 | 99 | 100 | // sun times configuration (angle, morning name, evening name) 101 | 102 | var times = SunCalc.times = [ 103 | [-0.833, 'sunrise', 'sunset' ], 104 | [ -0.3, 'sunriseEnd', 'sunsetStart' ], 105 | [ -6, 'dawn', 'dusk' ], 106 | [ -12, 'nauticalDawn', 'nauticalDusk'], 107 | [ -18, 'nightEnd', 'night' ], 108 | [ 6, 'goldenHourEnd', 'goldenHour' ] 109 | ]; 110 | 111 | // adds a custom time to the times config 112 | 113 | SunCalc.addTime = function (angle, riseName, setName) { 114 | times.push([angle, riseName, setName]); 115 | }; 116 | 117 | 118 | // calculations for sun times 119 | 120 | var J0 = 0.0009; 121 | 122 | function julianCycle(d, lw) { return Math.round(d - J0 - lw / (2 * PI)); } 123 | 124 | function approxTransit(Ht, lw, n) { return J0 + (Ht + lw) / (2 * PI) + n; } 125 | function solarTransitJ(ds, M, L) { return J2000 + ds + 0.0053 * sin(M) - 0.0069 * sin(2 * L); } 126 | 127 | function hourAngle(h, phi, d) { return acos((sin(h) - sin(phi) * sin(d)) / (cos(phi) * cos(d))); } 128 | function observerAngle(height) { return -2.076 * Math.sqrt(height) / 60; } 129 | 130 | // returns set time for the given sun altitude 131 | function getSetJ(h, lw, phi, dec, n, M, L) { 132 | 133 | var w = hourAngle(h, phi, dec), 134 | a = approxTransit(w, lw, n); 135 | return solarTransitJ(a, M, L); 136 | } 137 | 138 | 139 | // calculates sun times for a given date, latitude/longitude, and, optionally, 140 | // the observer height (in meters) relative to the horizon 141 | 142 | SunCalc.getTimes = function (date, lat, lng, height) { 143 | 144 | height = height || 0; 145 | 146 | var lw = rad * -lng, 147 | phi = rad * lat, 148 | 149 | dh = observerAngle(height), 150 | 151 | d = toDays(date), 152 | n = julianCycle(d, lw), 153 | ds = approxTransit(0, lw, n), 154 | 155 | M = solarMeanAnomaly(ds), 156 | L = eclipticLongitude(M), 157 | dec = declination(L, 0), 158 | 159 | Jnoon = solarTransitJ(ds, M, L), 160 | 161 | i, len, time, h0, Jset, Jrise; 162 | 163 | 164 | var result = { 165 | solarNoon: fromJulian(Jnoon), 166 | nadir: fromJulian(Jnoon - 0.5) 167 | }; 168 | 169 | for (i = 0, len = times.length; i < len; i += 1) { 170 | time = times[i]; 171 | h0 = (time[0] + dh) * rad; 172 | 173 | Jset = getSetJ(h0, lw, phi, dec, n, M, L); 174 | Jrise = Jnoon - (Jset - Jnoon); 175 | 176 | result[time[1]] = fromJulian(Jrise); 177 | result[time[2]] = fromJulian(Jset); 178 | } 179 | 180 | return result; 181 | }; 182 | 183 | 184 | // moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas 185 | 186 | function moonCoords(d) { // geocentric ecliptic coordinates of the moon 187 | 188 | var L = rad * (218.316 + 13.176396 * d), // ecliptic longitude 189 | M = rad * (134.963 + 13.064993 * d), // mean anomaly 190 | F = rad * (93.272 + 13.229350 * d), // mean distance 191 | 192 | l = L + rad * 6.289 * sin(M), // longitude 193 | b = rad * 5.128 * sin(F), // latitude 194 | dt = 385001 - 20905 * cos(M); // distance to the moon in km 195 | 196 | return { 197 | ra: rightAscension(l, b), 198 | dec: declination(l, b), 199 | dist: dt 200 | }; 201 | } 202 | 203 | SunCalc.getMoonPosition = function (date, lat, lng) { 204 | 205 | var lw = rad * -lng, 206 | phi = rad * lat, 207 | d = toDays(date), 208 | 209 | c = moonCoords(d), 210 | H = siderealTime(d, lw) - c.ra, 211 | h = altitude(H, phi, c.dec), 212 | // formula 14.1 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. 213 | pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H)); 214 | 215 | h = h + astroRefraction(h); // altitude correction for refraction 216 | 217 | return { 218 | azimuth: azimuth(H, phi, c.dec), 219 | altitude: h, 220 | distance: c.dist, 221 | parallacticAngle: pa 222 | }; 223 | }; 224 | 225 | 226 | // calculations for illumination parameters of the moon, 227 | // based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and 228 | // Chapter 48 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. 229 | 230 | SunCalc.getMoonIllumination = function (date) { 231 | 232 | var d = toDays(date || new Date()), 233 | s = sunCoords(d), 234 | m = moonCoords(d), 235 | 236 | sdist = 149598000, // distance from Earth to Sun in km 237 | 238 | phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)), 239 | inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)), 240 | angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) - 241 | cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra)); 242 | 243 | return { 244 | fraction: (1 + cos(inc)) / 2, 245 | phase: 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI, 246 | angle: angle 247 | }; 248 | }; 249 | 250 | 251 | function hoursLater(date, h) { 252 | return new Date(date.valueOf() + h * dayMs / 24); 253 | } 254 | 255 | // calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article 256 | 257 | SunCalc.getMoonTimes = function (date, lat, lng, inUTC) { 258 | var t = new Date(date); 259 | if (inUTC) t.setUTCHours(0, 0, 0, 0); 260 | else t.setHours(0, 0, 0, 0); 261 | 262 | var hc = 0.133 * rad, 263 | h0 = SunCalc.getMoonPosition(t, lat, lng).altitude - hc, 264 | h1, h2, rise, set, a, b, xe, ye, d, roots, x1, x2, dx; 265 | 266 | // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set) 267 | for (var i = 1; i <= 24; i += 2) { 268 | h1 = SunCalc.getMoonPosition(hoursLater(t, i), lat, lng).altitude - hc; 269 | h2 = SunCalc.getMoonPosition(hoursLater(t, i + 1), lat, lng).altitude - hc; 270 | 271 | a = (h0 + h2) / 2 - h1; 272 | b = (h2 - h0) / 2; 273 | xe = -b / (2 * a); 274 | ye = (a * xe + b) * xe + h1; 275 | d = b * b - 4 * a * h1; 276 | roots = 0; 277 | 278 | if (d >= 0) { 279 | dx = Math.sqrt(d) / (Math.abs(a) * 2); 280 | x1 = xe - dx; 281 | x2 = xe + dx; 282 | if (Math.abs(x1) <= 1) roots++; 283 | if (Math.abs(x2) <= 1) roots++; 284 | if (x1 < -1) x1 = x2; 285 | } 286 | 287 | if (roots === 1) { 288 | if (h0 < 0) rise = i + x1; 289 | else set = i + x1; 290 | 291 | } else if (roots === 2) { 292 | rise = i + (ye < 0 ? x2 : x1); 293 | set = i + (ye < 0 ? x1 : x2); 294 | } 295 | 296 | if (rise && set) break; 297 | 298 | h0 = h2; 299 | } 300 | 301 | var result = {}; 302 | 303 | if (rise) result.rise = hoursLater(t, rise); 304 | if (set) result.set = hoursLater(t, set); 305 | 306 | if (!rise && !set) result[ye > 0 ? 'alwaysUp' : 'alwaysDown'] = true; 307 | 308 | return result; 309 | }; 310 | 311 | 312 | // export as Node module / AMD module / browser variable 313 | if (typeof exports === 'object' && typeof module !== 'undefined') module.exports = SunCalc; 314 | else if (typeof define === 'function' && define.amd) define(SunCalc); 315 | else window.SunCalc = SunCalc; 316 | 317 | }()); 318 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | 2 | var SunCalc = require('./suncalc'), 3 | t = require('tape'); 4 | 5 | function near(val1, val2, margin) { 6 | return Math.abs(val1 - val2) < (margin || 1E-15); 7 | } 8 | 9 | var date = new Date('2013-03-05UTC'), 10 | lat = 50.5, 11 | lng = 30.5, 12 | height = 2000; 13 | 14 | var testTimes = { 15 | solarNoon: '2013-03-05T10:10:57Z', 16 | nadir: '2013-03-04T22:10:57Z', 17 | sunrise: '2013-03-05T04:34:56Z', 18 | sunset: '2013-03-05T15:46:57Z', 19 | sunriseEnd: '2013-03-05T04:38:19Z', 20 | sunsetStart: '2013-03-05T15:43:34Z', 21 | dawn: '2013-03-05T04:02:17Z', 22 | dusk: '2013-03-05T16:19:36Z', 23 | nauticalDawn: '2013-03-05T03:24:31Z', 24 | nauticalDusk: '2013-03-05T16:57:22Z', 25 | nightEnd: '2013-03-05T02:46:17Z', 26 | night: '2013-03-05T17:35:36Z', 27 | goldenHourEnd: '2013-03-05T05:19:01Z', 28 | goldenHour: '2013-03-05T15:02:52Z' 29 | }; 30 | 31 | var heightTestTimes = { 32 | solarNoon: '2013-03-05T10:10:57Z', 33 | nadir: '2013-03-04T22:10:57Z', 34 | sunrise: '2013-03-05T04:25:07Z', 35 | sunset: '2013-03-05T15:56:46Z' 36 | }; 37 | 38 | t.test('getPosition returns azimuth and altitude for the given time and location', function (t) { 39 | var sunPos = SunCalc.getPosition(date, lat, lng); 40 | 41 | t.ok(near(sunPos.azimuth, -2.5003175907168385), 'azimuth'); 42 | t.ok(near(sunPos.altitude, -0.7000406838781611), 'altitude'); 43 | t.end(); 44 | }); 45 | 46 | t.test('getTimes returns sun phases for the given date and location', function (t) { 47 | var times = SunCalc.getTimes(date, lat, lng); 48 | 49 | for (var i in testTimes) { 50 | t.equal(new Date(testTimes[i]).toUTCString(), times[i].toUTCString(), i); 51 | } 52 | t.end(); 53 | }); 54 | 55 | t.test('getTimes adjusts sun phases when additionally given the observer height', function (t) { 56 | var times = SunCalc.getTimes(date, lat, lng, height); 57 | 58 | for (var i in heightTestTimes) { 59 | t.equal(new Date(heightTestTimes[i]).toUTCString(), times[i].toUTCString(), i); 60 | } 61 | t.end(); 62 | }); 63 | 64 | t.test('getMoonPosition returns moon position data given time and location', function (t) { 65 | var moonPos = SunCalc.getMoonPosition(date, lat, lng); 66 | 67 | t.ok(near(moonPos.azimuth, -0.9783999522438226), 'azimuth'); 68 | t.ok(near(moonPos.altitude, 0.014551482243892251), 'altitude'); 69 | t.ok(near(moonPos.distance, 364121.37256256194), 'distance'); 70 | t.end(); 71 | }); 72 | 73 | t.test('getMoonIllumination returns fraction and angle of moon\'s illuminated limb and phase', function (t) { 74 | var moonIllum = SunCalc.getMoonIllumination(date); 75 | 76 | t.ok(near(moonIllum.fraction, 0.4848068202456373), 'fraction'); 77 | t.ok(near(moonIllum.phase, 0.7548368838538762), 'phase'); 78 | t.ok(near(moonIllum.angle, 1.6732942678578346), 'angle'); 79 | t.end(); 80 | }); 81 | 82 | t.test('getMoonTimes returns moon rise and set times', function (t) { 83 | var moonTimes = SunCalc.getMoonTimes(new Date('2013-03-04UTC'), lat, lng, true); 84 | 85 | t.equal(moonTimes.rise.toUTCString(), 'Mon, 04 Mar 2013 23:54:29 GMT'); 86 | t.equal(moonTimes.set.toUTCString(), 'Mon, 04 Mar 2013 07:47:58 GMT'); 87 | 88 | t.end(); 89 | }); 90 | --------------------------------------------------------------------------------