├── .github └── workflows │ └── node.js.yml ├── .gitignore ├── .markdownlint.json ├── LICENSE ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── rollup.config.js ├── src └── y-indexeddb.js ├── tests ├── index.js └── y-indexeddb.tests.js └── tsconfig.json /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Node.js CI 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | node-version: [16.x, 18.x] 20 | 21 | steps: 22 | - uses: actions/checkout@v2 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v1 25 | with: 26 | node-version: ${{ matrix.node-version }} 27 | - run: npm ci 28 | - run: npm run build --if-present 29 | - run: npm test 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /.markdownlint.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": true, 3 | "no-inline-html": false 4 | } 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 4 | - Kevin Jahns . 5 | - Chair of Computer Science 5 (Databases & Information Systems), RWTH Aachen University, Germany 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # y-indexeddb 2 | 3 | > IndexedDB database provider for Yjs. [Documentation](https://docs.yjs.dev/ecosystem/database-provider/y-indexeddb) 4 | 5 | Use the IndexedDB database adapter to store your shared data persistently in 6 | the browser. The next time you join the session, your changes will still be 7 | there. 8 | 9 | * Minimizes the amount of data exchanged between server and client 10 | * Makes offline editing possible 11 | 12 | ## Getting Started 13 | 14 | You find the complete documentation published online: [API documentation](https://docs.yjs.dev/ecosystem/database-provider/y-indexeddb). 15 | 16 | ```sh 17 | npm i --save y-indexeddb 18 | ``` 19 | 20 | ```js 21 | const provider = new IndexeddbPersistence(docName, ydoc) 22 | 23 | provider.on('synced', () => { 24 | console.log('content from the database is loaded') 25 | }) 26 | ``` 27 | 28 | ## API 29 | 30 |
31 | provider = new IndexeddbPersistence(docName: string, ydoc: Y.Doc) 32 |
33 | Create a y-indexeddb persistence provider. Specify docName as a unique string 34 | that identifies this document. In most cases, you want to use the same identifier 35 | that is used as the room-name in the connection provider. 36 |
37 | provider.on('synced', function(idbPersistence: IndexeddbPersistence)) 38 |
39 | The "synced" event is fired when the connection to the database has been established 40 | and all available content has been loaded. The event is also fired if no content 41 | is found for the given doc name. 42 |
43 | provider.set(key: any, value: any): Promise<any> 44 |
45 | Set a custom property on the provider instance. You can use this to store relevant 46 | meta-information for the persisted document. However, the content will not be 47 | synced with other peers. 48 |
49 | provider.get(key: any): Promise>any< 50 |
51 | Retrieve a stored value. 52 |
53 | provider.del(key: any): Promise>undefined< 54 |
55 | Delete a stored value. 56 |
57 | provider.destroy(): Promise 58 |
59 | Close the connection to the database and stop syncing the document. This method is 60 | automatically called when the Yjs document is destroyed (e.g. ydoc.destroy()). 61 |
62 | provider.clearData(): Promise 63 |
64 | Destroy this database and remove the stored document and all related meta-information 65 | from the database. 66 |
67 |
68 | 69 | ## License 70 | 71 | Yjs is licensed under the [MIT License](./LICENSE). 72 | 73 | 74 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Testing y-indexeddb 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "y-indexeddb", 3 | "version": "9.0.12", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "y-indexeddb", 9 | "version": "9.0.12", 10 | "license": "MIT", 11 | "dependencies": { 12 | "lib0": "^0.2.74" 13 | }, 14 | "devDependencies": { 15 | "@rollup/plugin-commonjs": "^11.1.0", 16 | "@rollup/plugin-node-resolve": "^7.1.3", 17 | "concurrently": "^3.6.1", 18 | "http-server": "^0.12.3", 19 | "jsdoc": "^3.6.6", 20 | "markdownlint-cli": "^0.19.0", 21 | "rollup": "^1.32.1", 22 | "standard": "^11.0.1", 23 | "typescript": "^5.0.4", 24 | "y-protocols": "^1.0.1", 25 | "yjs": "^13.4.7" 26 | }, 27 | "engines": { 28 | "node": ">=16.0.0", 29 | "npm": ">=8.0.0" 30 | }, 31 | "funding": { 32 | "type": "GitHub Sponsors ❤", 33 | "url": "https://github.com/sponsors/dmonad" 34 | }, 35 | "peerDependencies": { 36 | "yjs": "^13.0.0" 37 | } 38 | }, 39 | "node_modules/@babel/parser": { 40 | "version": "7.21.8", 41 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", 42 | "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", 43 | "dev": true, 44 | "bin": { 45 | "parser": "bin/babel-parser.js" 46 | }, 47 | "engines": { 48 | "node": ">=6.0.0" 49 | } 50 | }, 51 | "node_modules/@rollup/plugin-commonjs": { 52 | "version": "11.1.0", 53 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz", 54 | "integrity": "sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==", 55 | "dev": true, 56 | "dependencies": { 57 | "@rollup/pluginutils": "^3.0.8", 58 | "commondir": "^1.0.1", 59 | "estree-walker": "^1.0.1", 60 | "glob": "^7.1.2", 61 | "is-reference": "^1.1.2", 62 | "magic-string": "^0.25.2", 63 | "resolve": "^1.11.0" 64 | }, 65 | "engines": { 66 | "node": ">= 8.0.0" 67 | }, 68 | "peerDependencies": { 69 | "rollup": "^1.20.0||^2.0.0" 70 | } 71 | }, 72 | "node_modules/@rollup/plugin-node-resolve": { 73 | "version": "7.1.3", 74 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", 75 | "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", 76 | "dev": true, 77 | "dependencies": { 78 | "@rollup/pluginutils": "^3.0.8", 79 | "@types/resolve": "0.0.8", 80 | "builtin-modules": "^3.1.0", 81 | "is-module": "^1.0.0", 82 | "resolve": "^1.14.2" 83 | }, 84 | "engines": { 85 | "node": ">= 8.0.0" 86 | }, 87 | "peerDependencies": { 88 | "rollup": "^1.20.0||^2.0.0" 89 | } 90 | }, 91 | "node_modules/@rollup/pluginutils": { 92 | "version": "3.1.0", 93 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", 94 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", 95 | "dev": true, 96 | "dependencies": { 97 | "@types/estree": "0.0.39", 98 | "estree-walker": "^1.0.1", 99 | "picomatch": "^2.2.2" 100 | }, 101 | "engines": { 102 | "node": ">= 8.0.0" 103 | }, 104 | "peerDependencies": { 105 | "rollup": "^1.20.0||^2.0.0" 106 | } 107 | }, 108 | "node_modules/@types/estree": { 109 | "version": "0.0.39", 110 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 111 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 112 | "dev": true 113 | }, 114 | "node_modules/@types/linkify-it": { 115 | "version": "3.0.2", 116 | "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", 117 | "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", 118 | "dev": true 119 | }, 120 | "node_modules/@types/markdown-it": { 121 | "version": "12.2.3", 122 | "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", 123 | "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", 124 | "dev": true, 125 | "dependencies": { 126 | "@types/linkify-it": "*", 127 | "@types/mdurl": "*" 128 | } 129 | }, 130 | "node_modules/@types/mdurl": { 131 | "version": "1.0.2", 132 | "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", 133 | "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", 134 | "dev": true 135 | }, 136 | "node_modules/@types/node": { 137 | "version": "18.16.3", 138 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", 139 | "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==", 140 | "dev": true 141 | }, 142 | "node_modules/@types/resolve": { 143 | "version": "0.0.8", 144 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", 145 | "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", 146 | "dev": true, 147 | "dependencies": { 148 | "@types/node": "*" 149 | } 150 | }, 151 | "node_modules/acorn": { 152 | "version": "7.4.1", 153 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 154 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 155 | "dev": true, 156 | "bin": { 157 | "acorn": "bin/acorn" 158 | }, 159 | "engines": { 160 | "node": ">=0.4.0" 161 | } 162 | }, 163 | "node_modules/acorn-jsx": { 164 | "version": "3.0.1", 165 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 166 | "integrity": "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ==", 167 | "dev": true, 168 | "dependencies": { 169 | "acorn": "^3.0.4" 170 | } 171 | }, 172 | "node_modules/acorn-jsx/node_modules/acorn": { 173 | "version": "3.3.0", 174 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 175 | "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==", 176 | "dev": true, 177 | "bin": { 178 | "acorn": "bin/acorn" 179 | }, 180 | "engines": { 181 | "node": ">=0.4.0" 182 | } 183 | }, 184 | "node_modules/ajv": { 185 | "version": "5.5.2", 186 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 187 | "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", 188 | "dev": true, 189 | "dependencies": { 190 | "co": "^4.6.0", 191 | "fast-deep-equal": "^1.0.0", 192 | "fast-json-stable-stringify": "^2.0.0", 193 | "json-schema-traverse": "^0.3.0" 194 | } 195 | }, 196 | "node_modules/ajv-keywords": { 197 | "version": "2.1.1", 198 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", 199 | "integrity": "sha512-ZFztHzVRdGLAzJmpUT9LNFLe1YiVOEylcaNpEutM26PVTCtOD919IMfD01CgbRouB42Dd9atjx1HseC15DgOZA==", 200 | "dev": true, 201 | "peerDependencies": { 202 | "ajv": "^5.0.0" 203 | } 204 | }, 205 | "node_modules/ansi-escapes": { 206 | "version": "3.2.0", 207 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 208 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 209 | "dev": true, 210 | "engines": { 211 | "node": ">=4" 212 | } 213 | }, 214 | "node_modules/ansi-regex": { 215 | "version": "3.0.1", 216 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", 217 | "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", 218 | "dev": true, 219 | "engines": { 220 | "node": ">=4" 221 | } 222 | }, 223 | "node_modules/ansi-styles": { 224 | "version": "3.2.1", 225 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 226 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 227 | "dev": true, 228 | "dependencies": { 229 | "color-convert": "^1.9.0" 230 | }, 231 | "engines": { 232 | "node": ">=4" 233 | } 234 | }, 235 | "node_modules/argparse": { 236 | "version": "2.0.1", 237 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 238 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 239 | "dev": true 240 | }, 241 | "node_modules/array-buffer-byte-length": { 242 | "version": "1.0.0", 243 | "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", 244 | "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", 245 | "dev": true, 246 | "dependencies": { 247 | "call-bind": "^1.0.2", 248 | "is-array-buffer": "^3.0.1" 249 | }, 250 | "funding": { 251 | "url": "https://github.com/sponsors/ljharb" 252 | } 253 | }, 254 | "node_modules/array-includes": { 255 | "version": "3.1.6", 256 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", 257 | "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", 258 | "dev": true, 259 | "dependencies": { 260 | "call-bind": "^1.0.2", 261 | "define-properties": "^1.1.4", 262 | "es-abstract": "^1.20.4", 263 | "get-intrinsic": "^1.1.3", 264 | "is-string": "^1.0.7" 265 | }, 266 | "engines": { 267 | "node": ">= 0.4" 268 | }, 269 | "funding": { 270 | "url": "https://github.com/sponsors/ljharb" 271 | } 272 | }, 273 | "node_modules/async": { 274 | "version": "2.6.4", 275 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", 276 | "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", 277 | "dev": true, 278 | "dependencies": { 279 | "lodash": "^4.17.14" 280 | } 281 | }, 282 | "node_modules/available-typed-arrays": { 283 | "version": "1.0.5", 284 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", 285 | "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", 286 | "dev": true, 287 | "engines": { 288 | "node": ">= 0.4" 289 | }, 290 | "funding": { 291 | "url": "https://github.com/sponsors/ljharb" 292 | } 293 | }, 294 | "node_modules/babel-code-frame": { 295 | "version": "6.26.0", 296 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 297 | "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", 298 | "dev": true, 299 | "dependencies": { 300 | "chalk": "^1.1.3", 301 | "esutils": "^2.0.2", 302 | "js-tokens": "^3.0.2" 303 | } 304 | }, 305 | "node_modules/babel-code-frame/node_modules/ansi-regex": { 306 | "version": "2.1.1", 307 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 308 | "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", 309 | "dev": true, 310 | "engines": { 311 | "node": ">=0.10.0" 312 | } 313 | }, 314 | "node_modules/babel-code-frame/node_modules/ansi-styles": { 315 | "version": "2.2.1", 316 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 317 | "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", 318 | "dev": true, 319 | "engines": { 320 | "node": ">=0.10.0" 321 | } 322 | }, 323 | "node_modules/babel-code-frame/node_modules/chalk": { 324 | "version": "1.1.3", 325 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 326 | "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", 327 | "dev": true, 328 | "dependencies": { 329 | "ansi-styles": "^2.2.1", 330 | "escape-string-regexp": "^1.0.2", 331 | "has-ansi": "^2.0.0", 332 | "strip-ansi": "^3.0.0", 333 | "supports-color": "^2.0.0" 334 | }, 335 | "engines": { 336 | "node": ">=0.10.0" 337 | } 338 | }, 339 | "node_modules/babel-code-frame/node_modules/strip-ansi": { 340 | "version": "3.0.1", 341 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 342 | "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", 343 | "dev": true, 344 | "dependencies": { 345 | "ansi-regex": "^2.0.0" 346 | }, 347 | "engines": { 348 | "node": ">=0.10.0" 349 | } 350 | }, 351 | "node_modules/babel-code-frame/node_modules/supports-color": { 352 | "version": "2.0.0", 353 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 354 | "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", 355 | "dev": true, 356 | "engines": { 357 | "node": ">=0.8.0" 358 | } 359 | }, 360 | "node_modules/balanced-match": { 361 | "version": "1.0.2", 362 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 363 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 364 | "dev": true 365 | }, 366 | "node_modules/basic-auth": { 367 | "version": "1.1.0", 368 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", 369 | "integrity": "sha512-CtGuTyWf3ig+sgRyC7uP6DM3N+5ur/p8L+FPfsd+BbIfIs74TFfCajZTHnCw6K5dqM0bZEbRIqRy1fAdiUJhTA==", 370 | "dev": true, 371 | "engines": { 372 | "node": ">= 0.6" 373 | } 374 | }, 375 | "node_modules/bluebird": { 376 | "version": "3.7.2", 377 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 378 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 379 | "dev": true 380 | }, 381 | "node_modules/brace-expansion": { 382 | "version": "1.1.11", 383 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 384 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 385 | "dev": true, 386 | "dependencies": { 387 | "balanced-match": "^1.0.0", 388 | "concat-map": "0.0.1" 389 | } 390 | }, 391 | "node_modules/buffer-from": { 392 | "version": "1.1.2", 393 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 394 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 395 | "dev": true 396 | }, 397 | "node_modules/builtin-modules": { 398 | "version": "3.3.0", 399 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 400 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 401 | "dev": true, 402 | "engines": { 403 | "node": ">=6" 404 | }, 405 | "funding": { 406 | "url": "https://github.com/sponsors/sindresorhus" 407 | } 408 | }, 409 | "node_modules/call-bind": { 410 | "version": "1.0.2", 411 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 412 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 413 | "dev": true, 414 | "dependencies": { 415 | "function-bind": "^1.1.1", 416 | "get-intrinsic": "^1.0.2" 417 | }, 418 | "funding": { 419 | "url": "https://github.com/sponsors/ljharb" 420 | } 421 | }, 422 | "node_modules/caller-path": { 423 | "version": "0.1.0", 424 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 425 | "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", 426 | "dev": true, 427 | "dependencies": { 428 | "callsites": "^0.2.0" 429 | }, 430 | "engines": { 431 | "node": ">=0.10.0" 432 | } 433 | }, 434 | "node_modules/callsites": { 435 | "version": "0.2.0", 436 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 437 | "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", 438 | "dev": true, 439 | "engines": { 440 | "node": ">=0.10.0" 441 | } 442 | }, 443 | "node_modules/catharsis": { 444 | "version": "0.9.0", 445 | "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", 446 | "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", 447 | "dev": true, 448 | "dependencies": { 449 | "lodash": "^4.17.15" 450 | }, 451 | "engines": { 452 | "node": ">= 10" 453 | } 454 | }, 455 | "node_modules/chalk": { 456 | "version": "2.4.2", 457 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 458 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 459 | "dev": true, 460 | "dependencies": { 461 | "ansi-styles": "^3.2.1", 462 | "escape-string-regexp": "^1.0.5", 463 | "supports-color": "^5.3.0" 464 | }, 465 | "engines": { 466 | "node": ">=4" 467 | } 468 | }, 469 | "node_modules/chalk/node_modules/has-flag": { 470 | "version": "3.0.0", 471 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 472 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 473 | "dev": true, 474 | "engines": { 475 | "node": ">=4" 476 | } 477 | }, 478 | "node_modules/chalk/node_modules/supports-color": { 479 | "version": "5.5.0", 480 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 481 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 482 | "dev": true, 483 | "dependencies": { 484 | "has-flag": "^3.0.0" 485 | }, 486 | "engines": { 487 | "node": ">=4" 488 | } 489 | }, 490 | "node_modules/chardet": { 491 | "version": "0.4.2", 492 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", 493 | "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", 494 | "dev": true 495 | }, 496 | "node_modules/circular-json": { 497 | "version": "0.3.3", 498 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", 499 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", 500 | "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", 501 | "dev": true 502 | }, 503 | "node_modules/cli-cursor": { 504 | "version": "2.1.0", 505 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 506 | "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", 507 | "dev": true, 508 | "dependencies": { 509 | "restore-cursor": "^2.0.0" 510 | }, 511 | "engines": { 512 | "node": ">=4" 513 | } 514 | }, 515 | "node_modules/cli-width": { 516 | "version": "2.2.1", 517 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", 518 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", 519 | "dev": true 520 | }, 521 | "node_modules/co": { 522 | "version": "4.6.0", 523 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 524 | "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", 525 | "dev": true, 526 | "engines": { 527 | "iojs": ">= 1.0.0", 528 | "node": ">= 0.12.0" 529 | } 530 | }, 531 | "node_modules/color-convert": { 532 | "version": "1.9.3", 533 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 534 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 535 | "dev": true, 536 | "dependencies": { 537 | "color-name": "1.1.3" 538 | } 539 | }, 540 | "node_modules/color-name": { 541 | "version": "1.1.3", 542 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 543 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 544 | "dev": true 545 | }, 546 | "node_modules/colors": { 547 | "version": "1.4.0", 548 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 549 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 550 | "dev": true, 551 | "engines": { 552 | "node": ">=0.1.90" 553 | } 554 | }, 555 | "node_modules/commander": { 556 | "version": "2.6.0", 557 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", 558 | "integrity": "sha512-PhbTMT+ilDXZKqH8xbvuUY2ZEQNef0Q7DKxgoEKb4ccytsdvVVJmYqR0sGbi96nxU6oGrwEIQnclpK2NBZuQlg==", 559 | "dev": true, 560 | "engines": { 561 | "node": ">= 0.6.x" 562 | } 563 | }, 564 | "node_modules/commondir": { 565 | "version": "1.0.1", 566 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 567 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", 568 | "dev": true 569 | }, 570 | "node_modules/concat-map": { 571 | "version": "0.0.1", 572 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 573 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 574 | "dev": true 575 | }, 576 | "node_modules/concat-stream": { 577 | "version": "1.6.2", 578 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 579 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 580 | "dev": true, 581 | "engines": [ 582 | "node >= 0.8" 583 | ], 584 | "dependencies": { 585 | "buffer-from": "^1.0.0", 586 | "inherits": "^2.0.3", 587 | "readable-stream": "^2.2.2", 588 | "typedarray": "^0.0.6" 589 | } 590 | }, 591 | "node_modules/concurrently": { 592 | "version": "3.6.1", 593 | "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-3.6.1.tgz", 594 | "integrity": "sha512-/+ugz+gwFSEfTGUxn0KHkY+19XPRTXR8+7oUK/HxgiN1n7FjeJmkrbSiXAJfyQ0zORgJYPaenmymwon51YXH9Q==", 595 | "dev": true, 596 | "dependencies": { 597 | "chalk": "^2.4.1", 598 | "commander": "2.6.0", 599 | "date-fns": "^1.23.0", 600 | "lodash": "^4.5.1", 601 | "read-pkg": "^3.0.0", 602 | "rx": "2.3.24", 603 | "spawn-command": "^0.0.2-1", 604 | "supports-color": "^3.2.3", 605 | "tree-kill": "^1.1.0" 606 | }, 607 | "bin": { 608 | "concurrent": "src/main.js", 609 | "concurrently": "src/main.js" 610 | }, 611 | "engines": { 612 | "node": ">=4.0.0" 613 | } 614 | }, 615 | "node_modules/contains-path": { 616 | "version": "0.1.0", 617 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 618 | "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", 619 | "dev": true, 620 | "engines": { 621 | "node": ">=0.10.0" 622 | } 623 | }, 624 | "node_modules/core-util-is": { 625 | "version": "1.0.3", 626 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 627 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 628 | "dev": true 629 | }, 630 | "node_modules/corser": { 631 | "version": "2.0.1", 632 | "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", 633 | "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", 634 | "dev": true, 635 | "engines": { 636 | "node": ">= 0.4.0" 637 | } 638 | }, 639 | "node_modules/cross-spawn": { 640 | "version": "5.1.0", 641 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 642 | "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", 643 | "dev": true, 644 | "dependencies": { 645 | "lru-cache": "^4.0.1", 646 | "shebang-command": "^1.2.0", 647 | "which": "^1.2.9" 648 | } 649 | }, 650 | "node_modules/date-fns": { 651 | "version": "1.30.1", 652 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", 653 | "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", 654 | "dev": true 655 | }, 656 | "node_modules/debug": { 657 | "version": "3.2.7", 658 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 659 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 660 | "dev": true, 661 | "dependencies": { 662 | "ms": "^2.1.1" 663 | } 664 | }, 665 | "node_modules/debug-log": { 666 | "version": "1.0.1", 667 | "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", 668 | "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==", 669 | "dev": true, 670 | "engines": { 671 | "node": ">=0.10.0" 672 | } 673 | }, 674 | "node_modules/deep-extend": { 675 | "version": "0.5.1", 676 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", 677 | "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", 678 | "dev": true, 679 | "engines": { 680 | "iojs": ">=1.0.0", 681 | "node": ">=0.10.0" 682 | } 683 | }, 684 | "node_modules/deep-is": { 685 | "version": "0.1.4", 686 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 687 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 688 | "dev": true 689 | }, 690 | "node_modules/define-properties": { 691 | "version": "1.2.0", 692 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", 693 | "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", 694 | "dev": true, 695 | "dependencies": { 696 | "has-property-descriptors": "^1.0.0", 697 | "object-keys": "^1.1.1" 698 | }, 699 | "engines": { 700 | "node": ">= 0.4" 701 | }, 702 | "funding": { 703 | "url": "https://github.com/sponsors/ljharb" 704 | } 705 | }, 706 | "node_modules/deglob": { 707 | "version": "2.1.1", 708 | "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", 709 | "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", 710 | "dev": true, 711 | "dependencies": { 712 | "find-root": "^1.0.0", 713 | "glob": "^7.0.5", 714 | "ignore": "^3.0.9", 715 | "pkg-config": "^1.1.0", 716 | "run-parallel": "^1.1.2", 717 | "uniq": "^1.0.1" 718 | } 719 | }, 720 | "node_modules/doctrine": { 721 | "version": "2.1.0", 722 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 723 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 724 | "dev": true, 725 | "dependencies": { 726 | "esutils": "^2.0.2" 727 | }, 728 | "engines": { 729 | "node": ">=0.10.0" 730 | } 731 | }, 732 | "node_modules/ecstatic": { 733 | "version": "3.3.2", 734 | "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", 735 | "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", 736 | "deprecated": "This package is unmaintained and deprecated. See the GH Issue 259.", 737 | "dev": true, 738 | "dependencies": { 739 | "he": "^1.1.1", 740 | "mime": "^1.6.0", 741 | "minimist": "^1.1.0", 742 | "url-join": "^2.0.5" 743 | }, 744 | "bin": { 745 | "ecstatic": "lib/ecstatic.js" 746 | } 747 | }, 748 | "node_modules/entities": { 749 | "version": "2.1.0", 750 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", 751 | "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", 752 | "dev": true, 753 | "funding": { 754 | "url": "https://github.com/fb55/entities?sponsor=1" 755 | } 756 | }, 757 | "node_modules/error-ex": { 758 | "version": "1.3.2", 759 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 760 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 761 | "dev": true, 762 | "dependencies": { 763 | "is-arrayish": "^0.2.1" 764 | } 765 | }, 766 | "node_modules/es-abstract": { 767 | "version": "1.21.2", 768 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", 769 | "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", 770 | "dev": true, 771 | "dependencies": { 772 | "array-buffer-byte-length": "^1.0.0", 773 | "available-typed-arrays": "^1.0.5", 774 | "call-bind": "^1.0.2", 775 | "es-set-tostringtag": "^2.0.1", 776 | "es-to-primitive": "^1.2.1", 777 | "function.prototype.name": "^1.1.5", 778 | "get-intrinsic": "^1.2.0", 779 | "get-symbol-description": "^1.0.0", 780 | "globalthis": "^1.0.3", 781 | "gopd": "^1.0.1", 782 | "has": "^1.0.3", 783 | "has-property-descriptors": "^1.0.0", 784 | "has-proto": "^1.0.1", 785 | "has-symbols": "^1.0.3", 786 | "internal-slot": "^1.0.5", 787 | "is-array-buffer": "^3.0.2", 788 | "is-callable": "^1.2.7", 789 | "is-negative-zero": "^2.0.2", 790 | "is-regex": "^1.1.4", 791 | "is-shared-array-buffer": "^1.0.2", 792 | "is-string": "^1.0.7", 793 | "is-typed-array": "^1.1.10", 794 | "is-weakref": "^1.0.2", 795 | "object-inspect": "^1.12.3", 796 | "object-keys": "^1.1.1", 797 | "object.assign": "^4.1.4", 798 | "regexp.prototype.flags": "^1.4.3", 799 | "safe-regex-test": "^1.0.0", 800 | "string.prototype.trim": "^1.2.7", 801 | "string.prototype.trimend": "^1.0.6", 802 | "string.prototype.trimstart": "^1.0.6", 803 | "typed-array-length": "^1.0.4", 804 | "unbox-primitive": "^1.0.2", 805 | "which-typed-array": "^1.1.9" 806 | }, 807 | "engines": { 808 | "node": ">= 0.4" 809 | }, 810 | "funding": { 811 | "url": "https://github.com/sponsors/ljharb" 812 | } 813 | }, 814 | "node_modules/es-set-tostringtag": { 815 | "version": "2.0.1", 816 | "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", 817 | "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", 818 | "dev": true, 819 | "dependencies": { 820 | "get-intrinsic": "^1.1.3", 821 | "has": "^1.0.3", 822 | "has-tostringtag": "^1.0.0" 823 | }, 824 | "engines": { 825 | "node": ">= 0.4" 826 | } 827 | }, 828 | "node_modules/es-to-primitive": { 829 | "version": "1.2.1", 830 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 831 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 832 | "dev": true, 833 | "dependencies": { 834 | "is-callable": "^1.1.4", 835 | "is-date-object": "^1.0.1", 836 | "is-symbol": "^1.0.2" 837 | }, 838 | "engines": { 839 | "node": ">= 0.4" 840 | }, 841 | "funding": { 842 | "url": "https://github.com/sponsors/ljharb" 843 | } 844 | }, 845 | "node_modules/escape-string-regexp": { 846 | "version": "1.0.5", 847 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 848 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 849 | "dev": true, 850 | "engines": { 851 | "node": ">=0.8.0" 852 | } 853 | }, 854 | "node_modules/eslint": { 855 | "version": "4.18.2", 856 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.18.2.tgz", 857 | "integrity": "sha512-qy4i3wODqKMYfz9LUI8N2qYDkHkoieTbiHpMrYUI/WbjhXJQr7lI4VngixTgaG+yHX+NBCv7nW4hA0ShbvaNKw==", 858 | "dev": true, 859 | "dependencies": { 860 | "ajv": "^5.3.0", 861 | "babel-code-frame": "^6.22.0", 862 | "chalk": "^2.1.0", 863 | "concat-stream": "^1.6.0", 864 | "cross-spawn": "^5.1.0", 865 | "debug": "^3.1.0", 866 | "doctrine": "^2.1.0", 867 | "eslint-scope": "^3.7.1", 868 | "eslint-visitor-keys": "^1.0.0", 869 | "espree": "^3.5.2", 870 | "esquery": "^1.0.0", 871 | "esutils": "^2.0.2", 872 | "file-entry-cache": "^2.0.0", 873 | "functional-red-black-tree": "^1.0.1", 874 | "glob": "^7.1.2", 875 | "globals": "^11.0.1", 876 | "ignore": "^3.3.3", 877 | "imurmurhash": "^0.1.4", 878 | "inquirer": "^3.0.6", 879 | "is-resolvable": "^1.0.0", 880 | "js-yaml": "^3.9.1", 881 | "json-stable-stringify-without-jsonify": "^1.0.1", 882 | "levn": "^0.3.0", 883 | "lodash": "^4.17.4", 884 | "minimatch": "^3.0.2", 885 | "mkdirp": "^0.5.1", 886 | "natural-compare": "^1.4.0", 887 | "optionator": "^0.8.2", 888 | "path-is-inside": "^1.0.2", 889 | "pluralize": "^7.0.0", 890 | "progress": "^2.0.0", 891 | "require-uncached": "^1.0.3", 892 | "semver": "^5.3.0", 893 | "strip-ansi": "^4.0.0", 894 | "strip-json-comments": "~2.0.1", 895 | "table": "4.0.2", 896 | "text-table": "~0.2.0" 897 | }, 898 | "bin": { 899 | "eslint": "bin/eslint.js" 900 | }, 901 | "engines": { 902 | "node": ">=4" 903 | } 904 | }, 905 | "node_modules/eslint-config-standard": { 906 | "version": "11.0.0", 907 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0.tgz", 908 | "integrity": "sha512-oDdENzpViEe5fwuRCWla7AXQd++/oyIp8zP+iP9jiUPG6NBj3SHgdgtl/kTn00AjeN+1HNvavTKmYbMo+xMOlw==", 909 | "dev": true, 910 | "peerDependencies": { 911 | "eslint": ">=4.18.0", 912 | "eslint-plugin-import": ">=2.8.0", 913 | "eslint-plugin-node": ">=5.2.1", 914 | "eslint-plugin-promise": ">=3.6.0", 915 | "eslint-plugin-standard": ">=3.0.1" 916 | } 917 | }, 918 | "node_modules/eslint-config-standard-jsx": { 919 | "version": "5.0.0", 920 | "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-5.0.0.tgz", 921 | "integrity": "sha512-rLToPAEqLMPBfWnYTu6xRhm2OWziS2n40QFqJ8jAM8NSVzeVKTa3nclhsU4DpPJQRY60F34Oo1wi/71PN/eITg==", 922 | "dev": true, 923 | "peerDependencies": { 924 | "eslint": ">=4.18.0", 925 | "eslint-plugin-react": ">=7.6.1" 926 | } 927 | }, 928 | "node_modules/eslint-import-resolver-node": { 929 | "version": "0.3.7", 930 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", 931 | "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", 932 | "dev": true, 933 | "dependencies": { 934 | "debug": "^3.2.7", 935 | "is-core-module": "^2.11.0", 936 | "resolve": "^1.22.1" 937 | } 938 | }, 939 | "node_modules/eslint-module-utils": { 940 | "version": "2.8.0", 941 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", 942 | "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", 943 | "dev": true, 944 | "dependencies": { 945 | "debug": "^3.2.7" 946 | }, 947 | "engines": { 948 | "node": ">=4" 949 | }, 950 | "peerDependenciesMeta": { 951 | "eslint": { 952 | "optional": true 953 | } 954 | } 955 | }, 956 | "node_modules/eslint-plugin-import": { 957 | "version": "2.9.0", 958 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz", 959 | "integrity": "sha512-eQ9dz2DjU1pzZABSuJVeLwH6N2CYLdXGwPwbGsdckqQJ0RNx4kReIsl3kVkSJpR4zrvhuFXgYOe9OggjDCoWPg==", 960 | "dev": true, 961 | "dependencies": { 962 | "builtin-modules": "^1.1.1", 963 | "contains-path": "^0.1.0", 964 | "debug": "^2.6.8", 965 | "doctrine": "1.5.0", 966 | "eslint-import-resolver-node": "^0.3.1", 967 | "eslint-module-utils": "^2.1.1", 968 | "has": "^1.0.1", 969 | "lodash": "^4.17.4", 970 | "minimatch": "^3.0.3", 971 | "read-pkg-up": "^2.0.0" 972 | }, 973 | "engines": { 974 | "node": ">=4" 975 | }, 976 | "peerDependencies": { 977 | "eslint": "2.x - 4.x" 978 | } 979 | }, 980 | "node_modules/eslint-plugin-import/node_modules/builtin-modules": { 981 | "version": "1.1.1", 982 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 983 | "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", 984 | "dev": true, 985 | "engines": { 986 | "node": ">=0.10.0" 987 | } 988 | }, 989 | "node_modules/eslint-plugin-import/node_modules/debug": { 990 | "version": "2.6.9", 991 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 992 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 993 | "dev": true, 994 | "dependencies": { 995 | "ms": "2.0.0" 996 | } 997 | }, 998 | "node_modules/eslint-plugin-import/node_modules/doctrine": { 999 | "version": "1.5.0", 1000 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 1001 | "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", 1002 | "dev": true, 1003 | "dependencies": { 1004 | "esutils": "^2.0.2", 1005 | "isarray": "^1.0.0" 1006 | }, 1007 | "engines": { 1008 | "node": ">=0.10.0" 1009 | } 1010 | }, 1011 | "node_modules/eslint-plugin-import/node_modules/ms": { 1012 | "version": "2.0.0", 1013 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1014 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 1015 | "dev": true 1016 | }, 1017 | "node_modules/eslint-plugin-node": { 1018 | "version": "6.0.1", 1019 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", 1020 | "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", 1021 | "dev": true, 1022 | "dependencies": { 1023 | "ignore": "^3.3.6", 1024 | "minimatch": "^3.0.4", 1025 | "resolve": "^1.3.3", 1026 | "semver": "^5.4.1" 1027 | }, 1028 | "engines": { 1029 | "node": ">=4" 1030 | }, 1031 | "peerDependencies": { 1032 | "eslint": ">=3.1.0" 1033 | } 1034 | }, 1035 | "node_modules/eslint-plugin-promise": { 1036 | "version": "3.7.0", 1037 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.7.0.tgz", 1038 | "integrity": "sha512-2WO+ZFh7vxUKRfR0cOIMrWgYKdR6S1AlOezw6pC52B6oYpd5WFghN+QHxvrRdZMtbo8h3dfUZ2o1rWb0UPbKtg==", 1039 | "dev": true, 1040 | "engines": { 1041 | "node": ">=4" 1042 | } 1043 | }, 1044 | "node_modules/eslint-plugin-react": { 1045 | "version": "7.7.0", 1046 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz", 1047 | "integrity": "sha512-KC7Snr4YsWZD5flu6A5c0AcIZidzW3Exbqp7OT67OaD2AppJtlBr/GuPrW/vaQM/yfZotEvKAdrxrO+v8vwYJA==", 1048 | "dev": true, 1049 | "dependencies": { 1050 | "doctrine": "^2.0.2", 1051 | "has": "^1.0.1", 1052 | "jsx-ast-utils": "^2.0.1", 1053 | "prop-types": "^15.6.0" 1054 | }, 1055 | "engines": { 1056 | "node": ">=4" 1057 | }, 1058 | "peerDependencies": { 1059 | "eslint": "^3.0.0 || ^4.0.0" 1060 | } 1061 | }, 1062 | "node_modules/eslint-plugin-standard": { 1063 | "version": "3.0.1", 1064 | "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", 1065 | "integrity": "sha512-JyT7wqVYlaHxnljWMT7CKa0R1QDQqArTi6g8kYnexTHHuK7x3Vg//kCepnoTgdT9x/kDbSluXMhJgjBvgVRLlQ==", 1066 | "dev": true, 1067 | "peerDependencies": { 1068 | "eslint": ">=3.19.0" 1069 | } 1070 | }, 1071 | "node_modules/eslint-scope": { 1072 | "version": "3.7.3", 1073 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", 1074 | "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", 1075 | "dev": true, 1076 | "dependencies": { 1077 | "esrecurse": "^4.1.0", 1078 | "estraverse": "^4.1.1" 1079 | }, 1080 | "engines": { 1081 | "node": ">=4.0.0" 1082 | } 1083 | }, 1084 | "node_modules/eslint-visitor-keys": { 1085 | "version": "1.3.0", 1086 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1087 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1088 | "dev": true, 1089 | "engines": { 1090 | "node": ">=4" 1091 | } 1092 | }, 1093 | "node_modules/eslint/node_modules/mkdirp": { 1094 | "version": "0.5.6", 1095 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 1096 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 1097 | "dev": true, 1098 | "dependencies": { 1099 | "minimist": "^1.2.6" 1100 | }, 1101 | "bin": { 1102 | "mkdirp": "bin/cmd.js" 1103 | } 1104 | }, 1105 | "node_modules/eslint/node_modules/strip-json-comments": { 1106 | "version": "2.0.1", 1107 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1108 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 1109 | "dev": true, 1110 | "engines": { 1111 | "node": ">=0.10.0" 1112 | } 1113 | }, 1114 | "node_modules/espree": { 1115 | "version": "3.5.4", 1116 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", 1117 | "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", 1118 | "dev": true, 1119 | "dependencies": { 1120 | "acorn": "^5.5.0", 1121 | "acorn-jsx": "^3.0.0" 1122 | }, 1123 | "engines": { 1124 | "node": ">=0.10.0" 1125 | } 1126 | }, 1127 | "node_modules/espree/node_modules/acorn": { 1128 | "version": "5.7.4", 1129 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", 1130 | "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", 1131 | "dev": true, 1132 | "bin": { 1133 | "acorn": "bin/acorn" 1134 | }, 1135 | "engines": { 1136 | "node": ">=0.4.0" 1137 | } 1138 | }, 1139 | "node_modules/esprima": { 1140 | "version": "4.0.1", 1141 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1142 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1143 | "dev": true, 1144 | "bin": { 1145 | "esparse": "bin/esparse.js", 1146 | "esvalidate": "bin/esvalidate.js" 1147 | }, 1148 | "engines": { 1149 | "node": ">=4" 1150 | } 1151 | }, 1152 | "node_modules/esquery": { 1153 | "version": "1.5.0", 1154 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 1155 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 1156 | "dev": true, 1157 | "dependencies": { 1158 | "estraverse": "^5.1.0" 1159 | }, 1160 | "engines": { 1161 | "node": ">=0.10" 1162 | } 1163 | }, 1164 | "node_modules/esquery/node_modules/estraverse": { 1165 | "version": "5.3.0", 1166 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1167 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1168 | "dev": true, 1169 | "engines": { 1170 | "node": ">=4.0" 1171 | } 1172 | }, 1173 | "node_modules/esrecurse": { 1174 | "version": "4.3.0", 1175 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1176 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1177 | "dev": true, 1178 | "dependencies": { 1179 | "estraverse": "^5.2.0" 1180 | }, 1181 | "engines": { 1182 | "node": ">=4.0" 1183 | } 1184 | }, 1185 | "node_modules/esrecurse/node_modules/estraverse": { 1186 | "version": "5.3.0", 1187 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1188 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1189 | "dev": true, 1190 | "engines": { 1191 | "node": ">=4.0" 1192 | } 1193 | }, 1194 | "node_modules/estraverse": { 1195 | "version": "4.3.0", 1196 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1197 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1198 | "dev": true, 1199 | "engines": { 1200 | "node": ">=4.0" 1201 | } 1202 | }, 1203 | "node_modules/estree-walker": { 1204 | "version": "1.0.1", 1205 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 1206 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 1207 | "dev": true 1208 | }, 1209 | "node_modules/esutils": { 1210 | "version": "2.0.3", 1211 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1212 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1213 | "dev": true, 1214 | "engines": { 1215 | "node": ">=0.10.0" 1216 | } 1217 | }, 1218 | "node_modules/eventemitter3": { 1219 | "version": "4.0.7", 1220 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 1221 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 1222 | "dev": true 1223 | }, 1224 | "node_modules/external-editor": { 1225 | "version": "2.2.0", 1226 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", 1227 | "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", 1228 | "dev": true, 1229 | "dependencies": { 1230 | "chardet": "^0.4.0", 1231 | "iconv-lite": "^0.4.17", 1232 | "tmp": "^0.0.33" 1233 | }, 1234 | "engines": { 1235 | "node": ">=0.12" 1236 | } 1237 | }, 1238 | "node_modules/fast-deep-equal": { 1239 | "version": "1.1.0", 1240 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 1241 | "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", 1242 | "dev": true 1243 | }, 1244 | "node_modules/fast-json-stable-stringify": { 1245 | "version": "2.1.0", 1246 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1247 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1248 | "dev": true 1249 | }, 1250 | "node_modules/fast-levenshtein": { 1251 | "version": "2.0.6", 1252 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1253 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1254 | "dev": true 1255 | }, 1256 | "node_modules/figures": { 1257 | "version": "2.0.0", 1258 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 1259 | "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", 1260 | "dev": true, 1261 | "dependencies": { 1262 | "escape-string-regexp": "^1.0.5" 1263 | }, 1264 | "engines": { 1265 | "node": ">=4" 1266 | } 1267 | }, 1268 | "node_modules/file-entry-cache": { 1269 | "version": "2.0.0", 1270 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 1271 | "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", 1272 | "dev": true, 1273 | "dependencies": { 1274 | "flat-cache": "^1.2.1", 1275 | "object-assign": "^4.0.1" 1276 | }, 1277 | "engines": { 1278 | "node": ">=0.10.0" 1279 | } 1280 | }, 1281 | "node_modules/find-root": { 1282 | "version": "1.1.0", 1283 | "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", 1284 | "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", 1285 | "dev": true 1286 | }, 1287 | "node_modules/find-up": { 1288 | "version": "2.1.0", 1289 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1290 | "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", 1291 | "dev": true, 1292 | "dependencies": { 1293 | "locate-path": "^2.0.0" 1294 | }, 1295 | "engines": { 1296 | "node": ">=4" 1297 | } 1298 | }, 1299 | "node_modules/flat-cache": { 1300 | "version": "1.3.4", 1301 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", 1302 | "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", 1303 | "dev": true, 1304 | "dependencies": { 1305 | "circular-json": "^0.3.1", 1306 | "graceful-fs": "^4.1.2", 1307 | "rimraf": "~2.6.2", 1308 | "write": "^0.2.1" 1309 | }, 1310 | "engines": { 1311 | "node": ">=0.10.0" 1312 | } 1313 | }, 1314 | "node_modules/follow-redirects": { 1315 | "version": "1.15.2", 1316 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 1317 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 1318 | "dev": true, 1319 | "funding": [ 1320 | { 1321 | "type": "individual", 1322 | "url": "https://github.com/sponsors/RubenVerborgh" 1323 | } 1324 | ], 1325 | "engines": { 1326 | "node": ">=4.0" 1327 | }, 1328 | "peerDependenciesMeta": { 1329 | "debug": { 1330 | "optional": true 1331 | } 1332 | } 1333 | }, 1334 | "node_modules/for-each": { 1335 | "version": "0.3.3", 1336 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 1337 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 1338 | "dev": true, 1339 | "dependencies": { 1340 | "is-callable": "^1.1.3" 1341 | } 1342 | }, 1343 | "node_modules/fs.realpath": { 1344 | "version": "1.0.0", 1345 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1346 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1347 | "dev": true 1348 | }, 1349 | "node_modules/function-bind": { 1350 | "version": "1.1.1", 1351 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1352 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1353 | "dev": true 1354 | }, 1355 | "node_modules/function.prototype.name": { 1356 | "version": "1.1.5", 1357 | "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", 1358 | "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", 1359 | "dev": true, 1360 | "dependencies": { 1361 | "call-bind": "^1.0.2", 1362 | "define-properties": "^1.1.3", 1363 | "es-abstract": "^1.19.0", 1364 | "functions-have-names": "^1.2.2" 1365 | }, 1366 | "engines": { 1367 | "node": ">= 0.4" 1368 | }, 1369 | "funding": { 1370 | "url": "https://github.com/sponsors/ljharb" 1371 | } 1372 | }, 1373 | "node_modules/functional-red-black-tree": { 1374 | "version": "1.0.1", 1375 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1376 | "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 1377 | "dev": true 1378 | }, 1379 | "node_modules/functions-have-names": { 1380 | "version": "1.2.3", 1381 | "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 1382 | "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 1383 | "dev": true, 1384 | "funding": { 1385 | "url": "https://github.com/sponsors/ljharb" 1386 | } 1387 | }, 1388 | "node_modules/get-intrinsic": { 1389 | "version": "1.2.0", 1390 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 1391 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 1392 | "dev": true, 1393 | "dependencies": { 1394 | "function-bind": "^1.1.1", 1395 | "has": "^1.0.3", 1396 | "has-symbols": "^1.0.3" 1397 | }, 1398 | "funding": { 1399 | "url": "https://github.com/sponsors/ljharb" 1400 | } 1401 | }, 1402 | "node_modules/get-stdin": { 1403 | "version": "5.0.1", 1404 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", 1405 | "integrity": "sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==", 1406 | "dev": true, 1407 | "engines": { 1408 | "node": ">=0.12.0" 1409 | } 1410 | }, 1411 | "node_modules/get-symbol-description": { 1412 | "version": "1.0.0", 1413 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 1414 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 1415 | "dev": true, 1416 | "dependencies": { 1417 | "call-bind": "^1.0.2", 1418 | "get-intrinsic": "^1.1.1" 1419 | }, 1420 | "engines": { 1421 | "node": ">= 0.4" 1422 | }, 1423 | "funding": { 1424 | "url": "https://github.com/sponsors/ljharb" 1425 | } 1426 | }, 1427 | "node_modules/glob": { 1428 | "version": "7.2.3", 1429 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1430 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1431 | "dev": true, 1432 | "dependencies": { 1433 | "fs.realpath": "^1.0.0", 1434 | "inflight": "^1.0.4", 1435 | "inherits": "2", 1436 | "minimatch": "^3.1.1", 1437 | "once": "^1.3.0", 1438 | "path-is-absolute": "^1.0.0" 1439 | }, 1440 | "engines": { 1441 | "node": "*" 1442 | }, 1443 | "funding": { 1444 | "url": "https://github.com/sponsors/isaacs" 1445 | } 1446 | }, 1447 | "node_modules/globals": { 1448 | "version": "11.12.0", 1449 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1450 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1451 | "dev": true, 1452 | "engines": { 1453 | "node": ">=4" 1454 | } 1455 | }, 1456 | "node_modules/globalthis": { 1457 | "version": "1.0.3", 1458 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", 1459 | "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", 1460 | "dev": true, 1461 | "dependencies": { 1462 | "define-properties": "^1.1.3" 1463 | }, 1464 | "engines": { 1465 | "node": ">= 0.4" 1466 | }, 1467 | "funding": { 1468 | "url": "https://github.com/sponsors/ljharb" 1469 | } 1470 | }, 1471 | "node_modules/gopd": { 1472 | "version": "1.0.1", 1473 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", 1474 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", 1475 | "dev": true, 1476 | "dependencies": { 1477 | "get-intrinsic": "^1.1.3" 1478 | }, 1479 | "funding": { 1480 | "url": "https://github.com/sponsors/ljharb" 1481 | } 1482 | }, 1483 | "node_modules/graceful-fs": { 1484 | "version": "4.2.11", 1485 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1486 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1487 | "dev": true 1488 | }, 1489 | "node_modules/graceful-readlink": { 1490 | "version": "1.0.1", 1491 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 1492 | "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", 1493 | "dev": true 1494 | }, 1495 | "node_modules/has": { 1496 | "version": "1.0.3", 1497 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1498 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1499 | "dev": true, 1500 | "dependencies": { 1501 | "function-bind": "^1.1.1" 1502 | }, 1503 | "engines": { 1504 | "node": ">= 0.4.0" 1505 | } 1506 | }, 1507 | "node_modules/has-ansi": { 1508 | "version": "2.0.0", 1509 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1510 | "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", 1511 | "dev": true, 1512 | "dependencies": { 1513 | "ansi-regex": "^2.0.0" 1514 | }, 1515 | "engines": { 1516 | "node": ">=0.10.0" 1517 | } 1518 | }, 1519 | "node_modules/has-ansi/node_modules/ansi-regex": { 1520 | "version": "2.1.1", 1521 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1522 | "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", 1523 | "dev": true, 1524 | "engines": { 1525 | "node": ">=0.10.0" 1526 | } 1527 | }, 1528 | "node_modules/has-bigints": { 1529 | "version": "1.0.2", 1530 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", 1531 | "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", 1532 | "dev": true, 1533 | "funding": { 1534 | "url": "https://github.com/sponsors/ljharb" 1535 | } 1536 | }, 1537 | "node_modules/has-flag": { 1538 | "version": "1.0.0", 1539 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 1540 | "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", 1541 | "dev": true, 1542 | "engines": { 1543 | "node": ">=0.10.0" 1544 | } 1545 | }, 1546 | "node_modules/has-property-descriptors": { 1547 | "version": "1.0.0", 1548 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 1549 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 1550 | "dev": true, 1551 | "dependencies": { 1552 | "get-intrinsic": "^1.1.1" 1553 | }, 1554 | "funding": { 1555 | "url": "https://github.com/sponsors/ljharb" 1556 | } 1557 | }, 1558 | "node_modules/has-proto": { 1559 | "version": "1.0.1", 1560 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", 1561 | "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", 1562 | "dev": true, 1563 | "engines": { 1564 | "node": ">= 0.4" 1565 | }, 1566 | "funding": { 1567 | "url": "https://github.com/sponsors/ljharb" 1568 | } 1569 | }, 1570 | "node_modules/has-symbols": { 1571 | "version": "1.0.3", 1572 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1573 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1574 | "dev": true, 1575 | "engines": { 1576 | "node": ">= 0.4" 1577 | }, 1578 | "funding": { 1579 | "url": "https://github.com/sponsors/ljharb" 1580 | } 1581 | }, 1582 | "node_modules/has-tostringtag": { 1583 | "version": "1.0.0", 1584 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 1585 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 1586 | "dev": true, 1587 | "dependencies": { 1588 | "has-symbols": "^1.0.2" 1589 | }, 1590 | "engines": { 1591 | "node": ">= 0.4" 1592 | }, 1593 | "funding": { 1594 | "url": "https://github.com/sponsors/ljharb" 1595 | } 1596 | }, 1597 | "node_modules/he": { 1598 | "version": "1.2.0", 1599 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1600 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1601 | "dev": true, 1602 | "bin": { 1603 | "he": "bin/he" 1604 | } 1605 | }, 1606 | "node_modules/hosted-git-info": { 1607 | "version": "2.8.9", 1608 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", 1609 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", 1610 | "dev": true 1611 | }, 1612 | "node_modules/http-proxy": { 1613 | "version": "1.18.1", 1614 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 1615 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 1616 | "dev": true, 1617 | "dependencies": { 1618 | "eventemitter3": "^4.0.0", 1619 | "follow-redirects": "^1.0.0", 1620 | "requires-port": "^1.0.0" 1621 | }, 1622 | "engines": { 1623 | "node": ">=8.0.0" 1624 | } 1625 | }, 1626 | "node_modules/http-server": { 1627 | "version": "0.12.3", 1628 | "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", 1629 | "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", 1630 | "dev": true, 1631 | "dependencies": { 1632 | "basic-auth": "^1.0.3", 1633 | "colors": "^1.4.0", 1634 | "corser": "^2.0.1", 1635 | "ecstatic": "^3.3.2", 1636 | "http-proxy": "^1.18.0", 1637 | "minimist": "^1.2.5", 1638 | "opener": "^1.5.1", 1639 | "portfinder": "^1.0.25", 1640 | "secure-compare": "3.0.1", 1641 | "union": "~0.5.0" 1642 | }, 1643 | "bin": { 1644 | "hs": "bin/http-server", 1645 | "http-server": "bin/http-server" 1646 | }, 1647 | "engines": { 1648 | "node": ">=6" 1649 | } 1650 | }, 1651 | "node_modules/iconv-lite": { 1652 | "version": "0.4.24", 1653 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1654 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1655 | "dev": true, 1656 | "dependencies": { 1657 | "safer-buffer": ">= 2.1.2 < 3" 1658 | }, 1659 | "engines": { 1660 | "node": ">=0.10.0" 1661 | } 1662 | }, 1663 | "node_modules/ignore": { 1664 | "version": "3.3.10", 1665 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", 1666 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", 1667 | "dev": true 1668 | }, 1669 | "node_modules/imurmurhash": { 1670 | "version": "0.1.4", 1671 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1672 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1673 | "dev": true, 1674 | "engines": { 1675 | "node": ">=0.8.19" 1676 | } 1677 | }, 1678 | "node_modules/inflight": { 1679 | "version": "1.0.6", 1680 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1681 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1682 | "dev": true, 1683 | "dependencies": { 1684 | "once": "^1.3.0", 1685 | "wrappy": "1" 1686 | } 1687 | }, 1688 | "node_modules/inherits": { 1689 | "version": "2.0.4", 1690 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1691 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1692 | "dev": true 1693 | }, 1694 | "node_modules/ini": { 1695 | "version": "1.3.8", 1696 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1697 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1698 | "dev": true 1699 | }, 1700 | "node_modules/inquirer": { 1701 | "version": "3.3.0", 1702 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", 1703 | "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", 1704 | "dev": true, 1705 | "dependencies": { 1706 | "ansi-escapes": "^3.0.0", 1707 | "chalk": "^2.0.0", 1708 | "cli-cursor": "^2.1.0", 1709 | "cli-width": "^2.0.0", 1710 | "external-editor": "^2.0.4", 1711 | "figures": "^2.0.0", 1712 | "lodash": "^4.3.0", 1713 | "mute-stream": "0.0.7", 1714 | "run-async": "^2.2.0", 1715 | "rx-lite": "^4.0.8", 1716 | "rx-lite-aggregates": "^4.0.8", 1717 | "string-width": "^2.1.0", 1718 | "strip-ansi": "^4.0.0", 1719 | "through": "^2.3.6" 1720 | } 1721 | }, 1722 | "node_modules/internal-slot": { 1723 | "version": "1.0.5", 1724 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", 1725 | "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", 1726 | "dev": true, 1727 | "dependencies": { 1728 | "get-intrinsic": "^1.2.0", 1729 | "has": "^1.0.3", 1730 | "side-channel": "^1.0.4" 1731 | }, 1732 | "engines": { 1733 | "node": ">= 0.4" 1734 | } 1735 | }, 1736 | "node_modules/is-array-buffer": { 1737 | "version": "3.0.2", 1738 | "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", 1739 | "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", 1740 | "dev": true, 1741 | "dependencies": { 1742 | "call-bind": "^1.0.2", 1743 | "get-intrinsic": "^1.2.0", 1744 | "is-typed-array": "^1.1.10" 1745 | }, 1746 | "funding": { 1747 | "url": "https://github.com/sponsors/ljharb" 1748 | } 1749 | }, 1750 | "node_modules/is-arrayish": { 1751 | "version": "0.2.1", 1752 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1753 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", 1754 | "dev": true 1755 | }, 1756 | "node_modules/is-bigint": { 1757 | "version": "1.0.4", 1758 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 1759 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 1760 | "dev": true, 1761 | "dependencies": { 1762 | "has-bigints": "^1.0.1" 1763 | }, 1764 | "funding": { 1765 | "url": "https://github.com/sponsors/ljharb" 1766 | } 1767 | }, 1768 | "node_modules/is-boolean-object": { 1769 | "version": "1.1.2", 1770 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1771 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1772 | "dev": true, 1773 | "dependencies": { 1774 | "call-bind": "^1.0.2", 1775 | "has-tostringtag": "^1.0.0" 1776 | }, 1777 | "engines": { 1778 | "node": ">= 0.4" 1779 | }, 1780 | "funding": { 1781 | "url": "https://github.com/sponsors/ljharb" 1782 | } 1783 | }, 1784 | "node_modules/is-callable": { 1785 | "version": "1.2.7", 1786 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", 1787 | "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", 1788 | "dev": true, 1789 | "engines": { 1790 | "node": ">= 0.4" 1791 | }, 1792 | "funding": { 1793 | "url": "https://github.com/sponsors/ljharb" 1794 | } 1795 | }, 1796 | "node_modules/is-core-module": { 1797 | "version": "2.12.0", 1798 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", 1799 | "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", 1800 | "dev": true, 1801 | "dependencies": { 1802 | "has": "^1.0.3" 1803 | }, 1804 | "funding": { 1805 | "url": "https://github.com/sponsors/ljharb" 1806 | } 1807 | }, 1808 | "node_modules/is-date-object": { 1809 | "version": "1.0.5", 1810 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1811 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1812 | "dev": true, 1813 | "dependencies": { 1814 | "has-tostringtag": "^1.0.0" 1815 | }, 1816 | "engines": { 1817 | "node": ">= 0.4" 1818 | }, 1819 | "funding": { 1820 | "url": "https://github.com/sponsors/ljharb" 1821 | } 1822 | }, 1823 | "node_modules/is-fullwidth-code-point": { 1824 | "version": "2.0.0", 1825 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1826 | "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", 1827 | "dev": true, 1828 | "engines": { 1829 | "node": ">=4" 1830 | } 1831 | }, 1832 | "node_modules/is-module": { 1833 | "version": "1.0.0", 1834 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 1835 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 1836 | "dev": true 1837 | }, 1838 | "node_modules/is-negative-zero": { 1839 | "version": "2.0.2", 1840 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1841 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 1842 | "dev": true, 1843 | "engines": { 1844 | "node": ">= 0.4" 1845 | }, 1846 | "funding": { 1847 | "url": "https://github.com/sponsors/ljharb" 1848 | } 1849 | }, 1850 | "node_modules/is-number-object": { 1851 | "version": "1.0.7", 1852 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 1853 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 1854 | "dev": true, 1855 | "dependencies": { 1856 | "has-tostringtag": "^1.0.0" 1857 | }, 1858 | "engines": { 1859 | "node": ">= 0.4" 1860 | }, 1861 | "funding": { 1862 | "url": "https://github.com/sponsors/ljharb" 1863 | } 1864 | }, 1865 | "node_modules/is-reference": { 1866 | "version": "1.2.1", 1867 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 1868 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 1869 | "dev": true, 1870 | "dependencies": { 1871 | "@types/estree": "*" 1872 | } 1873 | }, 1874 | "node_modules/is-regex": { 1875 | "version": "1.1.4", 1876 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1877 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1878 | "dev": true, 1879 | "dependencies": { 1880 | "call-bind": "^1.0.2", 1881 | "has-tostringtag": "^1.0.0" 1882 | }, 1883 | "engines": { 1884 | "node": ">= 0.4" 1885 | }, 1886 | "funding": { 1887 | "url": "https://github.com/sponsors/ljharb" 1888 | } 1889 | }, 1890 | "node_modules/is-resolvable": { 1891 | "version": "1.1.0", 1892 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", 1893 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", 1894 | "dev": true 1895 | }, 1896 | "node_modules/is-shared-array-buffer": { 1897 | "version": "1.0.2", 1898 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 1899 | "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 1900 | "dev": true, 1901 | "dependencies": { 1902 | "call-bind": "^1.0.2" 1903 | }, 1904 | "funding": { 1905 | "url": "https://github.com/sponsors/ljharb" 1906 | } 1907 | }, 1908 | "node_modules/is-string": { 1909 | "version": "1.0.7", 1910 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1911 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1912 | "dev": true, 1913 | "dependencies": { 1914 | "has-tostringtag": "^1.0.0" 1915 | }, 1916 | "engines": { 1917 | "node": ">= 0.4" 1918 | }, 1919 | "funding": { 1920 | "url": "https://github.com/sponsors/ljharb" 1921 | } 1922 | }, 1923 | "node_modules/is-symbol": { 1924 | "version": "1.0.4", 1925 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1926 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1927 | "dev": true, 1928 | "dependencies": { 1929 | "has-symbols": "^1.0.2" 1930 | }, 1931 | "engines": { 1932 | "node": ">= 0.4" 1933 | }, 1934 | "funding": { 1935 | "url": "https://github.com/sponsors/ljharb" 1936 | } 1937 | }, 1938 | "node_modules/is-typed-array": { 1939 | "version": "1.1.10", 1940 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", 1941 | "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", 1942 | "dev": true, 1943 | "dependencies": { 1944 | "available-typed-arrays": "^1.0.5", 1945 | "call-bind": "^1.0.2", 1946 | "for-each": "^0.3.3", 1947 | "gopd": "^1.0.1", 1948 | "has-tostringtag": "^1.0.0" 1949 | }, 1950 | "engines": { 1951 | "node": ">= 0.4" 1952 | }, 1953 | "funding": { 1954 | "url": "https://github.com/sponsors/ljharb" 1955 | } 1956 | }, 1957 | "node_modules/is-weakref": { 1958 | "version": "1.0.2", 1959 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1960 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1961 | "dev": true, 1962 | "dependencies": { 1963 | "call-bind": "^1.0.2" 1964 | }, 1965 | "funding": { 1966 | "url": "https://github.com/sponsors/ljharb" 1967 | } 1968 | }, 1969 | "node_modules/isarray": { 1970 | "version": "1.0.0", 1971 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1972 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 1973 | "dev": true 1974 | }, 1975 | "node_modules/isexe": { 1976 | "version": "2.0.0", 1977 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1978 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1979 | "dev": true 1980 | }, 1981 | "node_modules/isomorphic.js": { 1982 | "version": "0.2.5", 1983 | "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", 1984 | "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", 1985 | "funding": { 1986 | "type": "GitHub Sponsors ❤", 1987 | "url": "https://github.com/sponsors/dmonad" 1988 | } 1989 | }, 1990 | "node_modules/js-tokens": { 1991 | "version": "3.0.2", 1992 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1993 | "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", 1994 | "dev": true 1995 | }, 1996 | "node_modules/js-yaml": { 1997 | "version": "3.14.1", 1998 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1999 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 2000 | "dev": true, 2001 | "dependencies": { 2002 | "argparse": "^1.0.7", 2003 | "esprima": "^4.0.0" 2004 | }, 2005 | "bin": { 2006 | "js-yaml": "bin/js-yaml.js" 2007 | } 2008 | }, 2009 | "node_modules/js-yaml/node_modules/argparse": { 2010 | "version": "1.0.10", 2011 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 2012 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 2013 | "dev": true, 2014 | "dependencies": { 2015 | "sprintf-js": "~1.0.2" 2016 | } 2017 | }, 2018 | "node_modules/js2xmlparser": { 2019 | "version": "4.0.2", 2020 | "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", 2021 | "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", 2022 | "dev": true, 2023 | "dependencies": { 2024 | "xmlcreate": "^2.0.4" 2025 | } 2026 | }, 2027 | "node_modules/jsdoc": { 2028 | "version": "3.6.11", 2029 | "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz", 2030 | "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==", 2031 | "dev": true, 2032 | "dependencies": { 2033 | "@babel/parser": "^7.9.4", 2034 | "@types/markdown-it": "^12.2.3", 2035 | "bluebird": "^3.7.2", 2036 | "catharsis": "^0.9.0", 2037 | "escape-string-regexp": "^2.0.0", 2038 | "js2xmlparser": "^4.0.2", 2039 | "klaw": "^3.0.0", 2040 | "markdown-it": "^12.3.2", 2041 | "markdown-it-anchor": "^8.4.1", 2042 | "marked": "^4.0.10", 2043 | "mkdirp": "^1.0.4", 2044 | "requizzle": "^0.2.3", 2045 | "strip-json-comments": "^3.1.0", 2046 | "taffydb": "2.6.2", 2047 | "underscore": "~1.13.2" 2048 | }, 2049 | "bin": { 2050 | "jsdoc": "jsdoc.js" 2051 | }, 2052 | "engines": { 2053 | "node": ">=12.0.0" 2054 | } 2055 | }, 2056 | "node_modules/jsdoc/node_modules/escape-string-regexp": { 2057 | "version": "2.0.0", 2058 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", 2059 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", 2060 | "dev": true, 2061 | "engines": { 2062 | "node": ">=8" 2063 | } 2064 | }, 2065 | "node_modules/json-parse-better-errors": { 2066 | "version": "1.0.2", 2067 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 2068 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 2069 | "dev": true 2070 | }, 2071 | "node_modules/json-schema-traverse": { 2072 | "version": "0.3.1", 2073 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 2074 | "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", 2075 | "dev": true 2076 | }, 2077 | "node_modules/json-stable-stringify-without-jsonify": { 2078 | "version": "1.0.1", 2079 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2080 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2081 | "dev": true 2082 | }, 2083 | "node_modules/jsx-ast-utils": { 2084 | "version": "2.4.1", 2085 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", 2086 | "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", 2087 | "dev": true, 2088 | "dependencies": { 2089 | "array-includes": "^3.1.1", 2090 | "object.assign": "^4.1.0" 2091 | }, 2092 | "engines": { 2093 | "node": ">=4.0" 2094 | } 2095 | }, 2096 | "node_modules/klaw": { 2097 | "version": "3.0.0", 2098 | "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", 2099 | "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", 2100 | "dev": true, 2101 | "dependencies": { 2102 | "graceful-fs": "^4.1.9" 2103 | } 2104 | }, 2105 | "node_modules/levn": { 2106 | "version": "0.3.0", 2107 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 2108 | "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", 2109 | "dev": true, 2110 | "dependencies": { 2111 | "prelude-ls": "~1.1.2", 2112 | "type-check": "~0.3.2" 2113 | }, 2114 | "engines": { 2115 | "node": ">= 0.8.0" 2116 | } 2117 | }, 2118 | "node_modules/lib0": { 2119 | "version": "0.2.74", 2120 | "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.74.tgz", 2121 | "integrity": "sha512-roj9i46/JwG5ik5KNTkxP2IytlnrssAkD/OhlAVtE+GqectrdkfR+pttszVLrOzMDeXNs1MPt6yo66MUolWSiA==", 2122 | "dependencies": { 2123 | "isomorphic.js": "^0.2.4" 2124 | }, 2125 | "bin": { 2126 | "0gentesthtml": "bin/gentesthtml.js", 2127 | "0serve": "bin/0serve.js" 2128 | }, 2129 | "engines": { 2130 | "node": ">=14" 2131 | }, 2132 | "funding": { 2133 | "type": "GitHub Sponsors ❤", 2134 | "url": "https://github.com/sponsors/dmonad" 2135 | } 2136 | }, 2137 | "node_modules/linkify-it": { 2138 | "version": "3.0.3", 2139 | "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", 2140 | "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", 2141 | "dev": true, 2142 | "dependencies": { 2143 | "uc.micro": "^1.0.1" 2144 | } 2145 | }, 2146 | "node_modules/load-json-file": { 2147 | "version": "4.0.0", 2148 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 2149 | "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", 2150 | "dev": true, 2151 | "dependencies": { 2152 | "graceful-fs": "^4.1.2", 2153 | "parse-json": "^4.0.0", 2154 | "pify": "^3.0.0", 2155 | "strip-bom": "^3.0.0" 2156 | }, 2157 | "engines": { 2158 | "node": ">=4" 2159 | } 2160 | }, 2161 | "node_modules/locate-path": { 2162 | "version": "2.0.0", 2163 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2164 | "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", 2165 | "dev": true, 2166 | "dependencies": { 2167 | "p-locate": "^2.0.0", 2168 | "path-exists": "^3.0.0" 2169 | }, 2170 | "engines": { 2171 | "node": ">=4" 2172 | } 2173 | }, 2174 | "node_modules/lodash": { 2175 | "version": "4.17.21", 2176 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2177 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 2178 | "dev": true 2179 | }, 2180 | "node_modules/lodash.differencewith": { 2181 | "version": "4.5.0", 2182 | "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz", 2183 | "integrity": "sha512-/8JFjydAS+4bQuo3CpLMBv7WxGFyk7/etOAsrQUCu0a9QVDemxv0YQ0rFyeZvqlUD314SERfNlgnlqqHmaQ0Cg==", 2184 | "dev": true 2185 | }, 2186 | "node_modules/lodash.flatten": { 2187 | "version": "4.4.0", 2188 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", 2189 | "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", 2190 | "dev": true 2191 | }, 2192 | "node_modules/loose-envify": { 2193 | "version": "1.4.0", 2194 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2195 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2196 | "dev": true, 2197 | "dependencies": { 2198 | "js-tokens": "^3.0.0 || ^4.0.0" 2199 | }, 2200 | "bin": { 2201 | "loose-envify": "cli.js" 2202 | } 2203 | }, 2204 | "node_modules/lru-cache": { 2205 | "version": "4.1.5", 2206 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 2207 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 2208 | "dev": true, 2209 | "dependencies": { 2210 | "pseudomap": "^1.0.2", 2211 | "yallist": "^2.1.2" 2212 | } 2213 | }, 2214 | "node_modules/magic-string": { 2215 | "version": "0.25.9", 2216 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 2217 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 2218 | "dev": true, 2219 | "dependencies": { 2220 | "sourcemap-codec": "^1.4.8" 2221 | } 2222 | }, 2223 | "node_modules/markdown-it": { 2224 | "version": "12.3.2", 2225 | "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", 2226 | "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", 2227 | "dev": true, 2228 | "dependencies": { 2229 | "argparse": "^2.0.1", 2230 | "entities": "~2.1.0", 2231 | "linkify-it": "^3.0.1", 2232 | "mdurl": "^1.0.1", 2233 | "uc.micro": "^1.0.5" 2234 | }, 2235 | "bin": { 2236 | "markdown-it": "bin/markdown-it.js" 2237 | } 2238 | }, 2239 | "node_modules/markdown-it-anchor": { 2240 | "version": "8.6.7", 2241 | "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", 2242 | "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", 2243 | "dev": true, 2244 | "peerDependencies": { 2245 | "@types/markdown-it": "*", 2246 | "markdown-it": "*" 2247 | } 2248 | }, 2249 | "node_modules/markdownlint": { 2250 | "version": "0.17.2", 2251 | "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.17.2.tgz", 2252 | "integrity": "sha512-vsxopn0qEdm0P2XI3S9sVA+jvjKjR8lHZ+0FKlusth+1UK9tI29mRFkKeZPERmbWsMehJcogfMieBUkMgNEFkQ==", 2253 | "dev": true, 2254 | "dependencies": { 2255 | "markdown-it": "10.0.0" 2256 | }, 2257 | "engines": { 2258 | "node": ">=8" 2259 | } 2260 | }, 2261 | "node_modules/markdownlint-cli": { 2262 | "version": "0.19.0", 2263 | "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.19.0.tgz", 2264 | "integrity": "sha512-5hUEBAmbCVJflws6841HJ0KTZdgGWYaPThoXPI6Wjn1VkoiYWsprNH0r3PvPmyGXtvbHJ7/7eGPde2a6cx8t0w==", 2265 | "dev": true, 2266 | "dependencies": { 2267 | "commander": "~2.9.0", 2268 | "deep-extend": "~0.5.1", 2269 | "get-stdin": "~5.0.1", 2270 | "glob": "~7.1.2", 2271 | "js-yaml": "^3.13.1", 2272 | "lodash.differencewith": "~4.5.0", 2273 | "lodash.flatten": "~4.4.0", 2274 | "markdownlint": "~0.17.1", 2275 | "markdownlint-rule-helpers": "~0.5.0", 2276 | "minimatch": "~3.0.4", 2277 | "rc": "~1.2.7" 2278 | }, 2279 | "bin": { 2280 | "markdownlint": "markdownlint.js" 2281 | }, 2282 | "engines": { 2283 | "node": ">=8" 2284 | } 2285 | }, 2286 | "node_modules/markdownlint-cli/node_modules/commander": { 2287 | "version": "2.9.0", 2288 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", 2289 | "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", 2290 | "dev": true, 2291 | "dependencies": { 2292 | "graceful-readlink": ">= 1.0.0" 2293 | }, 2294 | "engines": { 2295 | "node": ">= 0.6.x" 2296 | } 2297 | }, 2298 | "node_modules/markdownlint-cli/node_modules/glob": { 2299 | "version": "7.1.7", 2300 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 2301 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 2302 | "dev": true, 2303 | "dependencies": { 2304 | "fs.realpath": "^1.0.0", 2305 | "inflight": "^1.0.4", 2306 | "inherits": "2", 2307 | "minimatch": "^3.0.4", 2308 | "once": "^1.3.0", 2309 | "path-is-absolute": "^1.0.0" 2310 | }, 2311 | "engines": { 2312 | "node": "*" 2313 | }, 2314 | "funding": { 2315 | "url": "https://github.com/sponsors/isaacs" 2316 | } 2317 | }, 2318 | "node_modules/markdownlint-cli/node_modules/minimatch": { 2319 | "version": "3.0.8", 2320 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", 2321 | "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", 2322 | "dev": true, 2323 | "dependencies": { 2324 | "brace-expansion": "^1.1.7" 2325 | }, 2326 | "engines": { 2327 | "node": "*" 2328 | } 2329 | }, 2330 | "node_modules/markdownlint-rule-helpers": { 2331 | "version": "0.5.0", 2332 | "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.5.0.tgz", 2333 | "integrity": "sha512-6bJAV4TjUoDDnqxfb6EKTuZlpYI6vn4kerid7WTrZaEjsWuYDeYDAN+r4o+vbUYFZfJkiBU7NPBqPd4QJ1CZzQ==", 2334 | "dev": true 2335 | }, 2336 | "node_modules/markdownlint/node_modules/argparse": { 2337 | "version": "1.0.10", 2338 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 2339 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 2340 | "dev": true, 2341 | "dependencies": { 2342 | "sprintf-js": "~1.0.2" 2343 | } 2344 | }, 2345 | "node_modules/markdownlint/node_modules/entities": { 2346 | "version": "2.0.3", 2347 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", 2348 | "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", 2349 | "dev": true 2350 | }, 2351 | "node_modules/markdownlint/node_modules/linkify-it": { 2352 | "version": "2.2.0", 2353 | "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", 2354 | "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", 2355 | "dev": true, 2356 | "dependencies": { 2357 | "uc.micro": "^1.0.1" 2358 | } 2359 | }, 2360 | "node_modules/markdownlint/node_modules/markdown-it": { 2361 | "version": "10.0.0", 2362 | "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", 2363 | "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", 2364 | "dev": true, 2365 | "dependencies": { 2366 | "argparse": "^1.0.7", 2367 | "entities": "~2.0.0", 2368 | "linkify-it": "^2.0.0", 2369 | "mdurl": "^1.0.1", 2370 | "uc.micro": "^1.0.5" 2371 | }, 2372 | "bin": { 2373 | "markdown-it": "bin/markdown-it.js" 2374 | } 2375 | }, 2376 | "node_modules/marked": { 2377 | "version": "4.3.0", 2378 | "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", 2379 | "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", 2380 | "dev": true, 2381 | "bin": { 2382 | "marked": "bin/marked.js" 2383 | }, 2384 | "engines": { 2385 | "node": ">= 12" 2386 | } 2387 | }, 2388 | "node_modules/mdurl": { 2389 | "version": "1.0.1", 2390 | "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", 2391 | "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", 2392 | "dev": true 2393 | }, 2394 | "node_modules/mime": { 2395 | "version": "1.6.0", 2396 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 2397 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 2398 | "dev": true, 2399 | "bin": { 2400 | "mime": "cli.js" 2401 | }, 2402 | "engines": { 2403 | "node": ">=4" 2404 | } 2405 | }, 2406 | "node_modules/mimic-fn": { 2407 | "version": "1.2.0", 2408 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 2409 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 2410 | "dev": true, 2411 | "engines": { 2412 | "node": ">=4" 2413 | } 2414 | }, 2415 | "node_modules/minimatch": { 2416 | "version": "3.1.2", 2417 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2418 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2419 | "dev": true, 2420 | "dependencies": { 2421 | "brace-expansion": "^1.1.7" 2422 | }, 2423 | "engines": { 2424 | "node": "*" 2425 | } 2426 | }, 2427 | "node_modules/minimist": { 2428 | "version": "1.2.8", 2429 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 2430 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 2431 | "dev": true, 2432 | "funding": { 2433 | "url": "https://github.com/sponsors/ljharb" 2434 | } 2435 | }, 2436 | "node_modules/mkdirp": { 2437 | "version": "1.0.4", 2438 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 2439 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 2440 | "dev": true, 2441 | "bin": { 2442 | "mkdirp": "bin/cmd.js" 2443 | }, 2444 | "engines": { 2445 | "node": ">=10" 2446 | } 2447 | }, 2448 | "node_modules/ms": { 2449 | "version": "2.1.3", 2450 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2451 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2452 | "dev": true 2453 | }, 2454 | "node_modules/mute-stream": { 2455 | "version": "0.0.7", 2456 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 2457 | "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", 2458 | "dev": true 2459 | }, 2460 | "node_modules/natural-compare": { 2461 | "version": "1.4.0", 2462 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2463 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2464 | "dev": true 2465 | }, 2466 | "node_modules/normalize-package-data": { 2467 | "version": "2.5.0", 2468 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2469 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2470 | "dev": true, 2471 | "dependencies": { 2472 | "hosted-git-info": "^2.1.4", 2473 | "resolve": "^1.10.0", 2474 | "semver": "2 || 3 || 4 || 5", 2475 | "validate-npm-package-license": "^3.0.1" 2476 | } 2477 | }, 2478 | "node_modules/object-assign": { 2479 | "version": "4.1.1", 2480 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2481 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 2482 | "dev": true, 2483 | "engines": { 2484 | "node": ">=0.10.0" 2485 | } 2486 | }, 2487 | "node_modules/object-inspect": { 2488 | "version": "1.12.3", 2489 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 2490 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 2491 | "dev": true, 2492 | "funding": { 2493 | "url": "https://github.com/sponsors/ljharb" 2494 | } 2495 | }, 2496 | "node_modules/object-keys": { 2497 | "version": "1.1.1", 2498 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2499 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 2500 | "dev": true, 2501 | "engines": { 2502 | "node": ">= 0.4" 2503 | } 2504 | }, 2505 | "node_modules/object.assign": { 2506 | "version": "4.1.4", 2507 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", 2508 | "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", 2509 | "dev": true, 2510 | "dependencies": { 2511 | "call-bind": "^1.0.2", 2512 | "define-properties": "^1.1.4", 2513 | "has-symbols": "^1.0.3", 2514 | "object-keys": "^1.1.1" 2515 | }, 2516 | "engines": { 2517 | "node": ">= 0.4" 2518 | }, 2519 | "funding": { 2520 | "url": "https://github.com/sponsors/ljharb" 2521 | } 2522 | }, 2523 | "node_modules/once": { 2524 | "version": "1.4.0", 2525 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2526 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2527 | "dev": true, 2528 | "dependencies": { 2529 | "wrappy": "1" 2530 | } 2531 | }, 2532 | "node_modules/onetime": { 2533 | "version": "2.0.1", 2534 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 2535 | "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", 2536 | "dev": true, 2537 | "dependencies": { 2538 | "mimic-fn": "^1.0.0" 2539 | }, 2540 | "engines": { 2541 | "node": ">=4" 2542 | } 2543 | }, 2544 | "node_modules/opener": { 2545 | "version": "1.5.2", 2546 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", 2547 | "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", 2548 | "dev": true, 2549 | "bin": { 2550 | "opener": "bin/opener-bin.js" 2551 | } 2552 | }, 2553 | "node_modules/optionator": { 2554 | "version": "0.8.3", 2555 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 2556 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 2557 | "dev": true, 2558 | "dependencies": { 2559 | "deep-is": "~0.1.3", 2560 | "fast-levenshtein": "~2.0.6", 2561 | "levn": "~0.3.0", 2562 | "prelude-ls": "~1.1.2", 2563 | "type-check": "~0.3.2", 2564 | "word-wrap": "~1.2.3" 2565 | }, 2566 | "engines": { 2567 | "node": ">= 0.8.0" 2568 | } 2569 | }, 2570 | "node_modules/os-tmpdir": { 2571 | "version": "1.0.2", 2572 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2573 | "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", 2574 | "dev": true, 2575 | "engines": { 2576 | "node": ">=0.10.0" 2577 | } 2578 | }, 2579 | "node_modules/p-limit": { 2580 | "version": "1.3.0", 2581 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2582 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2583 | "dev": true, 2584 | "dependencies": { 2585 | "p-try": "^1.0.0" 2586 | }, 2587 | "engines": { 2588 | "node": ">=4" 2589 | } 2590 | }, 2591 | "node_modules/p-locate": { 2592 | "version": "2.0.0", 2593 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2594 | "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", 2595 | "dev": true, 2596 | "dependencies": { 2597 | "p-limit": "^1.1.0" 2598 | }, 2599 | "engines": { 2600 | "node": ">=4" 2601 | } 2602 | }, 2603 | "node_modules/p-try": { 2604 | "version": "1.0.0", 2605 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2606 | "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", 2607 | "dev": true, 2608 | "engines": { 2609 | "node": ">=4" 2610 | } 2611 | }, 2612 | "node_modules/parse-json": { 2613 | "version": "4.0.0", 2614 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 2615 | "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", 2616 | "dev": true, 2617 | "dependencies": { 2618 | "error-ex": "^1.3.1", 2619 | "json-parse-better-errors": "^1.0.1" 2620 | }, 2621 | "engines": { 2622 | "node": ">=4" 2623 | } 2624 | }, 2625 | "node_modules/path-exists": { 2626 | "version": "3.0.0", 2627 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2628 | "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", 2629 | "dev": true, 2630 | "engines": { 2631 | "node": ">=4" 2632 | } 2633 | }, 2634 | "node_modules/path-is-absolute": { 2635 | "version": "1.0.1", 2636 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2637 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2638 | "dev": true, 2639 | "engines": { 2640 | "node": ">=0.10.0" 2641 | } 2642 | }, 2643 | "node_modules/path-is-inside": { 2644 | "version": "1.0.2", 2645 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 2646 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", 2647 | "dev": true 2648 | }, 2649 | "node_modules/path-parse": { 2650 | "version": "1.0.7", 2651 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2652 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2653 | "dev": true 2654 | }, 2655 | "node_modules/path-type": { 2656 | "version": "3.0.0", 2657 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 2658 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 2659 | "dev": true, 2660 | "dependencies": { 2661 | "pify": "^3.0.0" 2662 | }, 2663 | "engines": { 2664 | "node": ">=4" 2665 | } 2666 | }, 2667 | "node_modules/picomatch": { 2668 | "version": "2.3.1", 2669 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2670 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2671 | "dev": true, 2672 | "engines": { 2673 | "node": ">=8.6" 2674 | }, 2675 | "funding": { 2676 | "url": "https://github.com/sponsors/jonschlinkert" 2677 | } 2678 | }, 2679 | "node_modules/pify": { 2680 | "version": "3.0.0", 2681 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2682 | "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", 2683 | "dev": true, 2684 | "engines": { 2685 | "node": ">=4" 2686 | } 2687 | }, 2688 | "node_modules/pkg-conf": { 2689 | "version": "2.1.0", 2690 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", 2691 | "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", 2692 | "dev": true, 2693 | "dependencies": { 2694 | "find-up": "^2.0.0", 2695 | "load-json-file": "^4.0.0" 2696 | }, 2697 | "engines": { 2698 | "node": ">=4" 2699 | } 2700 | }, 2701 | "node_modules/pkg-config": { 2702 | "version": "1.1.1", 2703 | "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", 2704 | "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==", 2705 | "dev": true, 2706 | "dependencies": { 2707 | "debug-log": "^1.0.0", 2708 | "find-root": "^1.0.0", 2709 | "xtend": "^4.0.1" 2710 | }, 2711 | "engines": { 2712 | "node": ">=0.10" 2713 | } 2714 | }, 2715 | "node_modules/pluralize": { 2716 | "version": "7.0.0", 2717 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", 2718 | "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", 2719 | "dev": true, 2720 | "engines": { 2721 | "node": ">=4" 2722 | } 2723 | }, 2724 | "node_modules/portfinder": { 2725 | "version": "1.0.32", 2726 | "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", 2727 | "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", 2728 | "dev": true, 2729 | "dependencies": { 2730 | "async": "^2.6.4", 2731 | "debug": "^3.2.7", 2732 | "mkdirp": "^0.5.6" 2733 | }, 2734 | "engines": { 2735 | "node": ">= 0.12.0" 2736 | } 2737 | }, 2738 | "node_modules/portfinder/node_modules/mkdirp": { 2739 | "version": "0.5.6", 2740 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 2741 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 2742 | "dev": true, 2743 | "dependencies": { 2744 | "minimist": "^1.2.6" 2745 | }, 2746 | "bin": { 2747 | "mkdirp": "bin/cmd.js" 2748 | } 2749 | }, 2750 | "node_modules/prelude-ls": { 2751 | "version": "1.1.2", 2752 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2753 | "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", 2754 | "dev": true, 2755 | "engines": { 2756 | "node": ">= 0.8.0" 2757 | } 2758 | }, 2759 | "node_modules/process-nextick-args": { 2760 | "version": "2.0.1", 2761 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2762 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 2763 | "dev": true 2764 | }, 2765 | "node_modules/progress": { 2766 | "version": "2.0.3", 2767 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2768 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2769 | "dev": true, 2770 | "engines": { 2771 | "node": ">=0.4.0" 2772 | } 2773 | }, 2774 | "node_modules/prop-types": { 2775 | "version": "15.8.1", 2776 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 2777 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 2778 | "dev": true, 2779 | "dependencies": { 2780 | "loose-envify": "^1.4.0", 2781 | "object-assign": "^4.1.1", 2782 | "react-is": "^16.13.1" 2783 | } 2784 | }, 2785 | "node_modules/pseudomap": { 2786 | "version": "1.0.2", 2787 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2788 | "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", 2789 | "dev": true 2790 | }, 2791 | "node_modules/qs": { 2792 | "version": "6.11.1", 2793 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", 2794 | "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", 2795 | "dev": true, 2796 | "dependencies": { 2797 | "side-channel": "^1.0.4" 2798 | }, 2799 | "engines": { 2800 | "node": ">=0.6" 2801 | }, 2802 | "funding": { 2803 | "url": "https://github.com/sponsors/ljharb" 2804 | } 2805 | }, 2806 | "node_modules/queue-microtask": { 2807 | "version": "1.2.3", 2808 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2809 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2810 | "dev": true, 2811 | "funding": [ 2812 | { 2813 | "type": "github", 2814 | "url": "https://github.com/sponsors/feross" 2815 | }, 2816 | { 2817 | "type": "patreon", 2818 | "url": "https://www.patreon.com/feross" 2819 | }, 2820 | { 2821 | "type": "consulting", 2822 | "url": "https://feross.org/support" 2823 | } 2824 | ] 2825 | }, 2826 | "node_modules/rc": { 2827 | "version": "1.2.8", 2828 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2829 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2830 | "dev": true, 2831 | "dependencies": { 2832 | "deep-extend": "^0.6.0", 2833 | "ini": "~1.3.0", 2834 | "minimist": "^1.2.0", 2835 | "strip-json-comments": "~2.0.1" 2836 | }, 2837 | "bin": { 2838 | "rc": "cli.js" 2839 | } 2840 | }, 2841 | "node_modules/rc/node_modules/deep-extend": { 2842 | "version": "0.6.0", 2843 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 2844 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 2845 | "dev": true, 2846 | "engines": { 2847 | "node": ">=4.0.0" 2848 | } 2849 | }, 2850 | "node_modules/rc/node_modules/strip-json-comments": { 2851 | "version": "2.0.1", 2852 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2853 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 2854 | "dev": true, 2855 | "engines": { 2856 | "node": ">=0.10.0" 2857 | } 2858 | }, 2859 | "node_modules/react-is": { 2860 | "version": "16.13.1", 2861 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2862 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", 2863 | "dev": true 2864 | }, 2865 | "node_modules/read-pkg": { 2866 | "version": "3.0.0", 2867 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 2868 | "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", 2869 | "dev": true, 2870 | "dependencies": { 2871 | "load-json-file": "^4.0.0", 2872 | "normalize-package-data": "^2.3.2", 2873 | "path-type": "^3.0.0" 2874 | }, 2875 | "engines": { 2876 | "node": ">=4" 2877 | } 2878 | }, 2879 | "node_modules/read-pkg-up": { 2880 | "version": "2.0.0", 2881 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 2882 | "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", 2883 | "dev": true, 2884 | "dependencies": { 2885 | "find-up": "^2.0.0", 2886 | "read-pkg": "^2.0.0" 2887 | }, 2888 | "engines": { 2889 | "node": ">=4" 2890 | } 2891 | }, 2892 | "node_modules/read-pkg-up/node_modules/load-json-file": { 2893 | "version": "2.0.0", 2894 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 2895 | "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", 2896 | "dev": true, 2897 | "dependencies": { 2898 | "graceful-fs": "^4.1.2", 2899 | "parse-json": "^2.2.0", 2900 | "pify": "^2.0.0", 2901 | "strip-bom": "^3.0.0" 2902 | }, 2903 | "engines": { 2904 | "node": ">=4" 2905 | } 2906 | }, 2907 | "node_modules/read-pkg-up/node_modules/parse-json": { 2908 | "version": "2.2.0", 2909 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 2910 | "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", 2911 | "dev": true, 2912 | "dependencies": { 2913 | "error-ex": "^1.2.0" 2914 | }, 2915 | "engines": { 2916 | "node": ">=0.10.0" 2917 | } 2918 | }, 2919 | "node_modules/read-pkg-up/node_modules/path-type": { 2920 | "version": "2.0.0", 2921 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 2922 | "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", 2923 | "dev": true, 2924 | "dependencies": { 2925 | "pify": "^2.0.0" 2926 | }, 2927 | "engines": { 2928 | "node": ">=4" 2929 | } 2930 | }, 2931 | "node_modules/read-pkg-up/node_modules/pify": { 2932 | "version": "2.3.0", 2933 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2934 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 2935 | "dev": true, 2936 | "engines": { 2937 | "node": ">=0.10.0" 2938 | } 2939 | }, 2940 | "node_modules/read-pkg-up/node_modules/read-pkg": { 2941 | "version": "2.0.0", 2942 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 2943 | "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", 2944 | "dev": true, 2945 | "dependencies": { 2946 | "load-json-file": "^2.0.0", 2947 | "normalize-package-data": "^2.3.2", 2948 | "path-type": "^2.0.0" 2949 | }, 2950 | "engines": { 2951 | "node": ">=4" 2952 | } 2953 | }, 2954 | "node_modules/readable-stream": { 2955 | "version": "2.3.8", 2956 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 2957 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 2958 | "dev": true, 2959 | "dependencies": { 2960 | "core-util-is": "~1.0.0", 2961 | "inherits": "~2.0.3", 2962 | "isarray": "~1.0.0", 2963 | "process-nextick-args": "~2.0.0", 2964 | "safe-buffer": "~5.1.1", 2965 | "string_decoder": "~1.1.1", 2966 | "util-deprecate": "~1.0.1" 2967 | } 2968 | }, 2969 | "node_modules/regexp.prototype.flags": { 2970 | "version": "1.5.0", 2971 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", 2972 | "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", 2973 | "dev": true, 2974 | "dependencies": { 2975 | "call-bind": "^1.0.2", 2976 | "define-properties": "^1.2.0", 2977 | "functions-have-names": "^1.2.3" 2978 | }, 2979 | "engines": { 2980 | "node": ">= 0.4" 2981 | }, 2982 | "funding": { 2983 | "url": "https://github.com/sponsors/ljharb" 2984 | } 2985 | }, 2986 | "node_modules/require-uncached": { 2987 | "version": "1.0.3", 2988 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 2989 | "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", 2990 | "dev": true, 2991 | "dependencies": { 2992 | "caller-path": "^0.1.0", 2993 | "resolve-from": "^1.0.0" 2994 | }, 2995 | "engines": { 2996 | "node": ">=0.10.0" 2997 | } 2998 | }, 2999 | "node_modules/requires-port": { 3000 | "version": "1.0.0", 3001 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 3002 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", 3003 | "dev": true 3004 | }, 3005 | "node_modules/requizzle": { 3006 | "version": "0.2.4", 3007 | "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", 3008 | "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", 3009 | "dev": true, 3010 | "dependencies": { 3011 | "lodash": "^4.17.21" 3012 | } 3013 | }, 3014 | "node_modules/resolve": { 3015 | "version": "1.22.2", 3016 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", 3017 | "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", 3018 | "dev": true, 3019 | "dependencies": { 3020 | "is-core-module": "^2.11.0", 3021 | "path-parse": "^1.0.7", 3022 | "supports-preserve-symlinks-flag": "^1.0.0" 3023 | }, 3024 | "bin": { 3025 | "resolve": "bin/resolve" 3026 | }, 3027 | "funding": { 3028 | "url": "https://github.com/sponsors/ljharb" 3029 | } 3030 | }, 3031 | "node_modules/resolve-from": { 3032 | "version": "1.0.1", 3033 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 3034 | "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", 3035 | "dev": true, 3036 | "engines": { 3037 | "node": ">=0.10.0" 3038 | } 3039 | }, 3040 | "node_modules/restore-cursor": { 3041 | "version": "2.0.0", 3042 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 3043 | "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", 3044 | "dev": true, 3045 | "dependencies": { 3046 | "onetime": "^2.0.0", 3047 | "signal-exit": "^3.0.2" 3048 | }, 3049 | "engines": { 3050 | "node": ">=4" 3051 | } 3052 | }, 3053 | "node_modules/rimraf": { 3054 | "version": "2.6.3", 3055 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 3056 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 3057 | "dev": true, 3058 | "dependencies": { 3059 | "glob": "^7.1.3" 3060 | }, 3061 | "bin": { 3062 | "rimraf": "bin.js" 3063 | } 3064 | }, 3065 | "node_modules/rollup": { 3066 | "version": "1.32.1", 3067 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", 3068 | "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", 3069 | "dev": true, 3070 | "dependencies": { 3071 | "@types/estree": "*", 3072 | "@types/node": "*", 3073 | "acorn": "^7.1.0" 3074 | }, 3075 | "bin": { 3076 | "rollup": "dist/bin/rollup" 3077 | } 3078 | }, 3079 | "node_modules/run-async": { 3080 | "version": "2.4.1", 3081 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 3082 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 3083 | "dev": true, 3084 | "engines": { 3085 | "node": ">=0.12.0" 3086 | } 3087 | }, 3088 | "node_modules/run-parallel": { 3089 | "version": "1.2.0", 3090 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3091 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3092 | "dev": true, 3093 | "funding": [ 3094 | { 3095 | "type": "github", 3096 | "url": "https://github.com/sponsors/feross" 3097 | }, 3098 | { 3099 | "type": "patreon", 3100 | "url": "https://www.patreon.com/feross" 3101 | }, 3102 | { 3103 | "type": "consulting", 3104 | "url": "https://feross.org/support" 3105 | } 3106 | ], 3107 | "dependencies": { 3108 | "queue-microtask": "^1.2.2" 3109 | } 3110 | }, 3111 | "node_modules/rx": { 3112 | "version": "2.3.24", 3113 | "resolved": "https://registry.npmjs.org/rx/-/rx-2.3.24.tgz", 3114 | "integrity": "sha512-Ue4ZB7Dzbn2I9sIj8ws536nOP2S53uypyCkCz9q0vlYD5Kn6/pu4dE+wt2ZfFzd9m73hiYKnnCb1OyKqc+MRkg==", 3115 | "dev": true 3116 | }, 3117 | "node_modules/rx-lite": { 3118 | "version": "4.0.8", 3119 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", 3120 | "integrity": "sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA==", 3121 | "dev": true 3122 | }, 3123 | "node_modules/rx-lite-aggregates": { 3124 | "version": "4.0.8", 3125 | "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", 3126 | "integrity": "sha512-3xPNZGW93oCjiO7PtKxRK6iOVYBWBvtf9QHDfU23Oc+dLIQmAV//UnyXV/yihv81VS/UqoQPk4NegS8EFi55Hg==", 3127 | "dev": true, 3128 | "dependencies": { 3129 | "rx-lite": "*" 3130 | } 3131 | }, 3132 | "node_modules/safe-buffer": { 3133 | "version": "5.1.2", 3134 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3135 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3136 | "dev": true 3137 | }, 3138 | "node_modules/safe-regex-test": { 3139 | "version": "1.0.0", 3140 | "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", 3141 | "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", 3142 | "dev": true, 3143 | "dependencies": { 3144 | "call-bind": "^1.0.2", 3145 | "get-intrinsic": "^1.1.3", 3146 | "is-regex": "^1.1.4" 3147 | }, 3148 | "funding": { 3149 | "url": "https://github.com/sponsors/ljharb" 3150 | } 3151 | }, 3152 | "node_modules/safer-buffer": { 3153 | "version": "2.1.2", 3154 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3155 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3156 | "dev": true 3157 | }, 3158 | "node_modules/secure-compare": { 3159 | "version": "3.0.1", 3160 | "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", 3161 | "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", 3162 | "dev": true 3163 | }, 3164 | "node_modules/semver": { 3165 | "version": "5.7.1", 3166 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 3167 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 3168 | "dev": true, 3169 | "bin": { 3170 | "semver": "bin/semver" 3171 | } 3172 | }, 3173 | "node_modules/shebang-command": { 3174 | "version": "1.2.0", 3175 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3176 | "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", 3177 | "dev": true, 3178 | "dependencies": { 3179 | "shebang-regex": "^1.0.0" 3180 | }, 3181 | "engines": { 3182 | "node": ">=0.10.0" 3183 | } 3184 | }, 3185 | "node_modules/shebang-regex": { 3186 | "version": "1.0.0", 3187 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3188 | "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", 3189 | "dev": true, 3190 | "engines": { 3191 | "node": ">=0.10.0" 3192 | } 3193 | }, 3194 | "node_modules/side-channel": { 3195 | "version": "1.0.4", 3196 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 3197 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 3198 | "dev": true, 3199 | "dependencies": { 3200 | "call-bind": "^1.0.0", 3201 | "get-intrinsic": "^1.0.2", 3202 | "object-inspect": "^1.9.0" 3203 | }, 3204 | "funding": { 3205 | "url": "https://github.com/sponsors/ljharb" 3206 | } 3207 | }, 3208 | "node_modules/signal-exit": { 3209 | "version": "3.0.7", 3210 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3211 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3212 | "dev": true 3213 | }, 3214 | "node_modules/slice-ansi": { 3215 | "version": "1.0.0", 3216 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", 3217 | "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", 3218 | "dev": true, 3219 | "dependencies": { 3220 | "is-fullwidth-code-point": "^2.0.0" 3221 | }, 3222 | "engines": { 3223 | "node": ">=4" 3224 | } 3225 | }, 3226 | "node_modules/sourcemap-codec": { 3227 | "version": "1.4.8", 3228 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 3229 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 3230 | "deprecated": "Please use @jridgewell/sourcemap-codec instead", 3231 | "dev": true 3232 | }, 3233 | "node_modules/spawn-command": { 3234 | "version": "0.0.2-1", 3235 | "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", 3236 | "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", 3237 | "dev": true 3238 | }, 3239 | "node_modules/spdx-correct": { 3240 | "version": "3.2.0", 3241 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", 3242 | "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", 3243 | "dev": true, 3244 | "dependencies": { 3245 | "spdx-expression-parse": "^3.0.0", 3246 | "spdx-license-ids": "^3.0.0" 3247 | } 3248 | }, 3249 | "node_modules/spdx-exceptions": { 3250 | "version": "2.3.0", 3251 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 3252 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 3253 | "dev": true 3254 | }, 3255 | "node_modules/spdx-expression-parse": { 3256 | "version": "3.0.1", 3257 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 3258 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 3259 | "dev": true, 3260 | "dependencies": { 3261 | "spdx-exceptions": "^2.1.0", 3262 | "spdx-license-ids": "^3.0.0" 3263 | } 3264 | }, 3265 | "node_modules/spdx-license-ids": { 3266 | "version": "3.0.13", 3267 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", 3268 | "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", 3269 | "dev": true 3270 | }, 3271 | "node_modules/sprintf-js": { 3272 | "version": "1.0.3", 3273 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3274 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 3275 | "dev": true 3276 | }, 3277 | "node_modules/standard": { 3278 | "version": "11.0.1", 3279 | "resolved": "https://registry.npmjs.org/standard/-/standard-11.0.1.tgz", 3280 | "integrity": "sha512-nu0jAcHiSc8H+gJCXeiziMVZNDYi8MuqrYJKxTgjP4xKXZMKm311boqQIzDrYI/ktosltxt2CbDjYQs9ANC8IA==", 3281 | "dev": true, 3282 | "dependencies": { 3283 | "eslint": "~4.18.0", 3284 | "eslint-config-standard": "11.0.0", 3285 | "eslint-config-standard-jsx": "5.0.0", 3286 | "eslint-plugin-import": "~2.9.0", 3287 | "eslint-plugin-node": "~6.0.0", 3288 | "eslint-plugin-promise": "~3.7.0", 3289 | "eslint-plugin-react": "~7.7.0", 3290 | "eslint-plugin-standard": "~3.0.1", 3291 | "standard-engine": "~8.0.0" 3292 | }, 3293 | "bin": { 3294 | "standard": "bin/cmd.js" 3295 | }, 3296 | "engines": { 3297 | "node": ">=4" 3298 | } 3299 | }, 3300 | "node_modules/standard-engine": { 3301 | "version": "8.0.1", 3302 | "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-8.0.1.tgz", 3303 | "integrity": "sha512-LA531C3+nljom/XRvdW/hGPXwmilRkaRkENhO3FAGF1Vtq/WtCXzgmnc5S6vUHHsgv534MRy02C1ikMwZXC+tw==", 3304 | "dev": true, 3305 | "dependencies": { 3306 | "deglob": "^2.1.0", 3307 | "get-stdin": "^6.0.0", 3308 | "minimist": "^1.1.0", 3309 | "pkg-conf": "^2.0.0" 3310 | } 3311 | }, 3312 | "node_modules/standard-engine/node_modules/get-stdin": { 3313 | "version": "6.0.0", 3314 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", 3315 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", 3316 | "dev": true, 3317 | "engines": { 3318 | "node": ">=4" 3319 | } 3320 | }, 3321 | "node_modules/string_decoder": { 3322 | "version": "1.1.1", 3323 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3324 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3325 | "dev": true, 3326 | "dependencies": { 3327 | "safe-buffer": "~5.1.0" 3328 | } 3329 | }, 3330 | "node_modules/string-width": { 3331 | "version": "2.1.1", 3332 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3333 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3334 | "dev": true, 3335 | "dependencies": { 3336 | "is-fullwidth-code-point": "^2.0.0", 3337 | "strip-ansi": "^4.0.0" 3338 | }, 3339 | "engines": { 3340 | "node": ">=4" 3341 | } 3342 | }, 3343 | "node_modules/string.prototype.trim": { 3344 | "version": "1.2.7", 3345 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", 3346 | "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", 3347 | "dev": true, 3348 | "dependencies": { 3349 | "call-bind": "^1.0.2", 3350 | "define-properties": "^1.1.4", 3351 | "es-abstract": "^1.20.4" 3352 | }, 3353 | "engines": { 3354 | "node": ">= 0.4" 3355 | }, 3356 | "funding": { 3357 | "url": "https://github.com/sponsors/ljharb" 3358 | } 3359 | }, 3360 | "node_modules/string.prototype.trimend": { 3361 | "version": "1.0.6", 3362 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", 3363 | "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", 3364 | "dev": true, 3365 | "dependencies": { 3366 | "call-bind": "^1.0.2", 3367 | "define-properties": "^1.1.4", 3368 | "es-abstract": "^1.20.4" 3369 | }, 3370 | "funding": { 3371 | "url": "https://github.com/sponsors/ljharb" 3372 | } 3373 | }, 3374 | "node_modules/string.prototype.trimstart": { 3375 | "version": "1.0.6", 3376 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", 3377 | "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", 3378 | "dev": true, 3379 | "dependencies": { 3380 | "call-bind": "^1.0.2", 3381 | "define-properties": "^1.1.4", 3382 | "es-abstract": "^1.20.4" 3383 | }, 3384 | "funding": { 3385 | "url": "https://github.com/sponsors/ljharb" 3386 | } 3387 | }, 3388 | "node_modules/strip-ansi": { 3389 | "version": "4.0.0", 3390 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3391 | "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", 3392 | "dev": true, 3393 | "dependencies": { 3394 | "ansi-regex": "^3.0.0" 3395 | }, 3396 | "engines": { 3397 | "node": ">=4" 3398 | } 3399 | }, 3400 | "node_modules/strip-bom": { 3401 | "version": "3.0.0", 3402 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 3403 | "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", 3404 | "dev": true, 3405 | "engines": { 3406 | "node": ">=4" 3407 | } 3408 | }, 3409 | "node_modules/strip-json-comments": { 3410 | "version": "3.1.1", 3411 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3412 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3413 | "dev": true, 3414 | "engines": { 3415 | "node": ">=8" 3416 | }, 3417 | "funding": { 3418 | "url": "https://github.com/sponsors/sindresorhus" 3419 | } 3420 | }, 3421 | "node_modules/supports-color": { 3422 | "version": "3.2.3", 3423 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", 3424 | "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", 3425 | "dev": true, 3426 | "dependencies": { 3427 | "has-flag": "^1.0.0" 3428 | }, 3429 | "engines": { 3430 | "node": ">=0.8.0" 3431 | } 3432 | }, 3433 | "node_modules/supports-preserve-symlinks-flag": { 3434 | "version": "1.0.0", 3435 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 3436 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 3437 | "dev": true, 3438 | "engines": { 3439 | "node": ">= 0.4" 3440 | }, 3441 | "funding": { 3442 | "url": "https://github.com/sponsors/ljharb" 3443 | } 3444 | }, 3445 | "node_modules/table": { 3446 | "version": "4.0.2", 3447 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", 3448 | "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", 3449 | "dev": true, 3450 | "dependencies": { 3451 | "ajv": "^5.2.3", 3452 | "ajv-keywords": "^2.1.0", 3453 | "chalk": "^2.1.0", 3454 | "lodash": "^4.17.4", 3455 | "slice-ansi": "1.0.0", 3456 | "string-width": "^2.1.1" 3457 | } 3458 | }, 3459 | "node_modules/taffydb": { 3460 | "version": "2.6.2", 3461 | "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", 3462 | "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==", 3463 | "dev": true 3464 | }, 3465 | "node_modules/text-table": { 3466 | "version": "0.2.0", 3467 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3468 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 3469 | "dev": true 3470 | }, 3471 | "node_modules/through": { 3472 | "version": "2.3.8", 3473 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3474 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 3475 | "dev": true 3476 | }, 3477 | "node_modules/tmp": { 3478 | "version": "0.0.33", 3479 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 3480 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 3481 | "dev": true, 3482 | "dependencies": { 3483 | "os-tmpdir": "~1.0.2" 3484 | }, 3485 | "engines": { 3486 | "node": ">=0.6.0" 3487 | } 3488 | }, 3489 | "node_modules/tree-kill": { 3490 | "version": "1.2.2", 3491 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 3492 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", 3493 | "dev": true, 3494 | "bin": { 3495 | "tree-kill": "cli.js" 3496 | } 3497 | }, 3498 | "node_modules/type-check": { 3499 | "version": "0.3.2", 3500 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 3501 | "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", 3502 | "dev": true, 3503 | "dependencies": { 3504 | "prelude-ls": "~1.1.2" 3505 | }, 3506 | "engines": { 3507 | "node": ">= 0.8.0" 3508 | } 3509 | }, 3510 | "node_modules/typed-array-length": { 3511 | "version": "1.0.4", 3512 | "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", 3513 | "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", 3514 | "dev": true, 3515 | "dependencies": { 3516 | "call-bind": "^1.0.2", 3517 | "for-each": "^0.3.3", 3518 | "is-typed-array": "^1.1.9" 3519 | }, 3520 | "funding": { 3521 | "url": "https://github.com/sponsors/ljharb" 3522 | } 3523 | }, 3524 | "node_modules/typedarray": { 3525 | "version": "0.0.6", 3526 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 3527 | "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", 3528 | "dev": true 3529 | }, 3530 | "node_modules/typescript": { 3531 | "version": "5.0.4", 3532 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", 3533 | "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", 3534 | "dev": true, 3535 | "bin": { 3536 | "tsc": "bin/tsc", 3537 | "tsserver": "bin/tsserver" 3538 | }, 3539 | "engines": { 3540 | "node": ">=12.20" 3541 | } 3542 | }, 3543 | "node_modules/uc.micro": { 3544 | "version": "1.0.6", 3545 | "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", 3546 | "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", 3547 | "dev": true 3548 | }, 3549 | "node_modules/unbox-primitive": { 3550 | "version": "1.0.2", 3551 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", 3552 | "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", 3553 | "dev": true, 3554 | "dependencies": { 3555 | "call-bind": "^1.0.2", 3556 | "has-bigints": "^1.0.2", 3557 | "has-symbols": "^1.0.3", 3558 | "which-boxed-primitive": "^1.0.2" 3559 | }, 3560 | "funding": { 3561 | "url": "https://github.com/sponsors/ljharb" 3562 | } 3563 | }, 3564 | "node_modules/underscore": { 3565 | "version": "1.13.6", 3566 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", 3567 | "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", 3568 | "dev": true 3569 | }, 3570 | "node_modules/union": { 3571 | "version": "0.5.0", 3572 | "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", 3573 | "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", 3574 | "dev": true, 3575 | "dependencies": { 3576 | "qs": "^6.4.0" 3577 | }, 3578 | "engines": { 3579 | "node": ">= 0.8.0" 3580 | } 3581 | }, 3582 | "node_modules/uniq": { 3583 | "version": "1.0.1", 3584 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", 3585 | "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", 3586 | "dev": true 3587 | }, 3588 | "node_modules/url-join": { 3589 | "version": "2.0.5", 3590 | "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", 3591 | "integrity": "sha512-c2H1fIgpUdwFRIru9HFno5DT73Ok8hg5oOb5AT3ayIgvCRfxgs2jyt5Slw8kEB7j3QUr6yJmMPDT/odjk7jXow==", 3592 | "dev": true 3593 | }, 3594 | "node_modules/util-deprecate": { 3595 | "version": "1.0.2", 3596 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3597 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 3598 | "dev": true 3599 | }, 3600 | "node_modules/validate-npm-package-license": { 3601 | "version": "3.0.4", 3602 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 3603 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 3604 | "dev": true, 3605 | "dependencies": { 3606 | "spdx-correct": "^3.0.0", 3607 | "spdx-expression-parse": "^3.0.0" 3608 | } 3609 | }, 3610 | "node_modules/which": { 3611 | "version": "1.3.1", 3612 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 3613 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 3614 | "dev": true, 3615 | "dependencies": { 3616 | "isexe": "^2.0.0" 3617 | }, 3618 | "bin": { 3619 | "which": "bin/which" 3620 | } 3621 | }, 3622 | "node_modules/which-boxed-primitive": { 3623 | "version": "1.0.2", 3624 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 3625 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 3626 | "dev": true, 3627 | "dependencies": { 3628 | "is-bigint": "^1.0.1", 3629 | "is-boolean-object": "^1.1.0", 3630 | "is-number-object": "^1.0.4", 3631 | "is-string": "^1.0.5", 3632 | "is-symbol": "^1.0.3" 3633 | }, 3634 | "funding": { 3635 | "url": "https://github.com/sponsors/ljharb" 3636 | } 3637 | }, 3638 | "node_modules/which-typed-array": { 3639 | "version": "1.1.9", 3640 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", 3641 | "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", 3642 | "dev": true, 3643 | "dependencies": { 3644 | "available-typed-arrays": "^1.0.5", 3645 | "call-bind": "^1.0.2", 3646 | "for-each": "^0.3.3", 3647 | "gopd": "^1.0.1", 3648 | "has-tostringtag": "^1.0.0", 3649 | "is-typed-array": "^1.1.10" 3650 | }, 3651 | "engines": { 3652 | "node": ">= 0.4" 3653 | }, 3654 | "funding": { 3655 | "url": "https://github.com/sponsors/ljharb" 3656 | } 3657 | }, 3658 | "node_modules/word-wrap": { 3659 | "version": "1.2.3", 3660 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 3661 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 3662 | "dev": true, 3663 | "engines": { 3664 | "node": ">=0.10.0" 3665 | } 3666 | }, 3667 | "node_modules/wrappy": { 3668 | "version": "1.0.2", 3669 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3670 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 3671 | "dev": true 3672 | }, 3673 | "node_modules/write": { 3674 | "version": "0.2.1", 3675 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 3676 | "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", 3677 | "dev": true, 3678 | "dependencies": { 3679 | "mkdirp": "^0.5.1" 3680 | }, 3681 | "engines": { 3682 | "node": ">=0.10.0" 3683 | } 3684 | }, 3685 | "node_modules/write/node_modules/mkdirp": { 3686 | "version": "0.5.6", 3687 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 3688 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 3689 | "dev": true, 3690 | "dependencies": { 3691 | "minimist": "^1.2.6" 3692 | }, 3693 | "bin": { 3694 | "mkdirp": "bin/cmd.js" 3695 | } 3696 | }, 3697 | "node_modules/xmlcreate": { 3698 | "version": "2.0.4", 3699 | "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", 3700 | "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", 3701 | "dev": true 3702 | }, 3703 | "node_modules/xtend": { 3704 | "version": "4.0.2", 3705 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 3706 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 3707 | "dev": true, 3708 | "engines": { 3709 | "node": ">=0.4" 3710 | } 3711 | }, 3712 | "node_modules/y-protocols": { 3713 | "version": "1.0.5", 3714 | "resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.5.tgz", 3715 | "integrity": "sha512-Wil92b7cGk712lRHDqS4T90IczF6RkcvCwAD0A2OPg+adKmOe+nOiT/N2hvpQIWS3zfjmtL4CPaH5sIW1Hkm/A==", 3716 | "dev": true, 3717 | "dependencies": { 3718 | "lib0": "^0.2.42" 3719 | }, 3720 | "funding": { 3721 | "type": "GitHub Sponsors ❤", 3722 | "url": "https://github.com/sponsors/dmonad" 3723 | } 3724 | }, 3725 | "node_modules/yallist": { 3726 | "version": "2.1.2", 3727 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 3728 | "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", 3729 | "dev": true 3730 | }, 3731 | "node_modules/yjs": { 3732 | "version": "13.6.1", 3733 | "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.1.tgz", 3734 | "integrity": "sha512-IyyHL+/v9N2S4YLSjGHMa0vMAfFxq8RDG5Nvb77raTTHJPweU3L/fRlqw6ElZvZUuHWnax3ufHR0Tx0ntfG63Q==", 3735 | "dev": true, 3736 | "dependencies": { 3737 | "lib0": "^0.2.74" 3738 | }, 3739 | "engines": { 3740 | "node": ">=16.0.0", 3741 | "npm": ">=8.0.0" 3742 | }, 3743 | "funding": { 3744 | "type": "GitHub Sponsors ❤", 3745 | "url": "https://github.com/sponsors/dmonad" 3746 | } 3747 | } 3748 | } 3749 | } 3750 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "y-indexeddb", 3 | "version": "9.0.12", 4 | "description": "IndexedDB database adapter for Yjs", 5 | "type": "module", 6 | "main": "./dist/y-indexeddb.cjs", 7 | "module": "./src/y-indexeddb.js", 8 | "types": "./dist/src/y-indexeddb.d.ts", 9 | "sideEffects": false, 10 | "funding": { 11 | "type": "GitHub Sponsors ❤", 12 | "url": "https://github.com/sponsors/dmonad" 13 | }, 14 | "scripts": { 15 | "clean": "rm -rf dist", 16 | "test": "npm run lint", 17 | "dist": "rollup -c", 18 | "lint": "markdownlint README.md && standard && tsc", 19 | "preversion": "npm run clean && npm run lint && npm run dist", 20 | "debug": "concurrently 'rollup -wc' 'http-server -o .'" 21 | }, 22 | "files": [ 23 | "dist/*", 24 | "src/*" 25 | ], 26 | "exports": { 27 | ".": { 28 | "types": "./dist/src/y-indexeddb.d.ts", 29 | "module": "./src/y-indexeddb.js", 30 | "import": "./src/y-indexeddb.js", 31 | "require": "./dist/y-indexeddb.cjs", 32 | "default": "./src/y-indexeddb.js" 33 | }, 34 | "./package.json": "./package.json" 35 | }, 36 | "standard": { 37 | "ignore": [ 38 | "/dist", 39 | "/node_modules", 40 | "/docs" 41 | ] 42 | }, 43 | "repository": { 44 | "type": "git", 45 | "url": "git+https://github.com/yjs/y-indexeddb.git" 46 | }, 47 | "keywords": [ 48 | "Yjs", 49 | "CRDT", 50 | "offline", 51 | "shared editing", 52 | "collaboration", 53 | "concurrency" 54 | ], 55 | "author": "Kevin Jahns ", 56 | "license": "MIT", 57 | "bugs": { 58 | "url": "https://github.com/yjs/y-indexeddb/issues" 59 | }, 60 | "homepage": "https://yjs.dev", 61 | "dependencies": { 62 | "lib0": "^0.2.74" 63 | }, 64 | "devDependencies": { 65 | "@rollup/plugin-commonjs": "^11.1.0", 66 | "@rollup/plugin-node-resolve": "^7.1.3", 67 | "concurrently": "^3.6.1", 68 | "http-server": "^0.12.3", 69 | "jsdoc": "^3.6.6", 70 | "markdownlint-cli": "^0.19.0", 71 | "rollup": "^1.32.1", 72 | "standard": "^11.0.1", 73 | "typescript": "^5.0.4", 74 | "y-protocols": "^1.0.1", 75 | "yjs": "^13.4.7" 76 | }, 77 | "peerDependencies": { 78 | "yjs": "^13.0.0" 79 | }, 80 | "engines": { 81 | "npm": ">=8.0.0", 82 | "node": ">=16.0.0" 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import resolve from '@rollup/plugin-node-resolve' 2 | import commonjs from '@rollup/plugin-commonjs' 3 | 4 | export default [{ 5 | input: './tests/index.js', 6 | output: { 7 | file: './dist/test.js', 8 | format: 'iife', 9 | sourcemap: true 10 | }, 11 | plugins: [ 12 | resolve({ mainFields: ['module', 'browser', 'main'] }), 13 | commonjs() 14 | ] 15 | }, { 16 | input: './src/y-indexeddb.js', 17 | output: { 18 | name: 'Y', 19 | file: 'dist/y-indexeddb.cjs', 20 | format: 'cjs', 21 | sourcemap: true 22 | }, 23 | external: id => /^(lib0|yjs)\//.test(id) 24 | }] 25 | -------------------------------------------------------------------------------- /src/y-indexeddb.js: -------------------------------------------------------------------------------- 1 | import * as Y from 'yjs' 2 | import * as idb from 'lib0/indexeddb' 3 | import * as promise from 'lib0/promise' 4 | import { Observable } from 'lib0/observable' 5 | 6 | const customStoreName = 'custom' 7 | const updatesStoreName = 'updates' 8 | 9 | export const PREFERRED_TRIM_SIZE = 500 10 | 11 | /** 12 | * @param {IndexeddbPersistence} idbPersistence 13 | * @param {function(IDBObjectStore):void} [beforeApplyUpdatesCallback] 14 | * @param {function(IDBObjectStore):void} [afterApplyUpdatesCallback] 15 | */ 16 | export const fetchUpdates = (idbPersistence, beforeApplyUpdatesCallback = () => {}, afterApplyUpdatesCallback = () => {}) => { 17 | const [updatesStore] = idb.transact(/** @type {IDBDatabase} */ (idbPersistence.db), [updatesStoreName]) // , 'readonly') 18 | return idb.getAll(updatesStore, idb.createIDBKeyRangeLowerBound(idbPersistence._dbref, false)).then(updates => { 19 | if (!idbPersistence._destroyed) { 20 | beforeApplyUpdatesCallback(updatesStore) 21 | Y.transact(idbPersistence.doc, () => { 22 | updates.forEach(val => Y.applyUpdate(idbPersistence.doc, val)) 23 | }, idbPersistence, false) 24 | afterApplyUpdatesCallback(updatesStore) 25 | } 26 | }) 27 | .then(() => idb.getLastKey(updatesStore).then(lastKey => { idbPersistence._dbref = lastKey + 1 })) 28 | .then(() => idb.count(updatesStore).then(cnt => { idbPersistence._dbsize = cnt })) 29 | .then(() => updatesStore) 30 | } 31 | 32 | /** 33 | * @param {IndexeddbPersistence} idbPersistence 34 | * @param {boolean} forceStore 35 | */ 36 | export const storeState = (idbPersistence, forceStore = true) => 37 | fetchUpdates(idbPersistence) 38 | .then(updatesStore => { 39 | if (forceStore || idbPersistence._dbsize >= PREFERRED_TRIM_SIZE) { 40 | idb.addAutoKey(updatesStore, Y.encodeStateAsUpdate(idbPersistence.doc)) 41 | .then(() => idb.del(updatesStore, idb.createIDBKeyRangeUpperBound(idbPersistence._dbref, true))) 42 | .then(() => idb.count(updatesStore).then(cnt => { idbPersistence._dbsize = cnt })) 43 | } 44 | }) 45 | 46 | /** 47 | * @param {string} name 48 | */ 49 | export const clearDocument = name => idb.deleteDB(name) 50 | 51 | /** 52 | * @extends Observable 53 | */ 54 | export class IndexeddbPersistence extends Observable { 55 | /** 56 | * @param {string} name 57 | * @param {Y.Doc} doc 58 | */ 59 | constructor (name, doc) { 60 | super() 61 | this.doc = doc 62 | this.name = name 63 | this._dbref = 0 64 | this._dbsize = 0 65 | this._destroyed = false 66 | /** 67 | * @type {IDBDatabase|null} 68 | */ 69 | this.db = null 70 | this.synced = false 71 | this._db = idb.openDB(name, db => 72 | idb.createStores(db, [ 73 | ['updates', { autoIncrement: true }], 74 | ['custom'] 75 | ]) 76 | ) 77 | /** 78 | * @type {Promise} 79 | */ 80 | this.whenSynced = promise.create(resolve => this.on('synced', () => resolve(this))) 81 | 82 | this._db.then(db => { 83 | this.db = db 84 | /** 85 | * @param {IDBObjectStore} updatesStore 86 | */ 87 | const beforeApplyUpdatesCallback = (updatesStore) => idb.addAutoKey(updatesStore, Y.encodeStateAsUpdate(doc)) 88 | const afterApplyUpdatesCallback = () => { 89 | if (this._destroyed) return this 90 | this.synced = true 91 | this.emit('synced', [this]) 92 | } 93 | fetchUpdates(this, beforeApplyUpdatesCallback, afterApplyUpdatesCallback) 94 | }) 95 | /** 96 | * Timeout in ms until data is merged and persisted in idb. 97 | */ 98 | this._storeTimeout = 1000 99 | /** 100 | * @type {any} 101 | */ 102 | this._storeTimeoutId = null 103 | /** 104 | * @param {Uint8Array} update 105 | * @param {any} origin 106 | */ 107 | this._storeUpdate = (update, origin) => { 108 | if (this.db && origin !== this) { 109 | const [updatesStore] = idb.transact(/** @type {IDBDatabase} */ (this.db), [updatesStoreName]) 110 | idb.addAutoKey(updatesStore, update) 111 | if (++this._dbsize >= PREFERRED_TRIM_SIZE) { 112 | // debounce store call 113 | if (this._storeTimeoutId !== null) { 114 | clearTimeout(this._storeTimeoutId) 115 | } 116 | this._storeTimeoutId = setTimeout(() => { 117 | storeState(this, false) 118 | this._storeTimeoutId = null 119 | }, this._storeTimeout) 120 | } 121 | } 122 | } 123 | doc.on('update', this._storeUpdate) 124 | this.destroy = this.destroy.bind(this) 125 | doc.on('destroy', this.destroy) 126 | } 127 | 128 | destroy () { 129 | if (this._storeTimeoutId) { 130 | clearTimeout(this._storeTimeoutId) 131 | } 132 | this.doc.off('update', this._storeUpdate) 133 | this.doc.off('destroy', this.destroy) 134 | this._destroyed = true 135 | return this._db.then(db => { 136 | db.close() 137 | }) 138 | } 139 | 140 | /** 141 | * Destroys this instance and removes all data from indexeddb. 142 | * 143 | * @return {Promise} 144 | */ 145 | clearData () { 146 | return this.destroy().then(() => { 147 | idb.deleteDB(this.name) 148 | }) 149 | } 150 | 151 | /** 152 | * @param {String | number | ArrayBuffer | Date} key 153 | * @return {Promise} 154 | */ 155 | get (key) { 156 | return this._db.then(db => { 157 | const [custom] = idb.transact(db, [customStoreName], 'readonly') 158 | return idb.get(custom, key) 159 | }) 160 | } 161 | 162 | /** 163 | * @param {String | number | ArrayBuffer | Date} key 164 | * @param {String | number | ArrayBuffer | Date} value 165 | * @return {Promise} 166 | */ 167 | set (key, value) { 168 | return this._db.then(db => { 169 | const [custom] = idb.transact(db, [customStoreName]) 170 | return idb.put(custom, value, key) 171 | }) 172 | } 173 | 174 | /** 175 | * @param {String | number | ArrayBuffer | Date} key 176 | * @return {Promise} 177 | */ 178 | del (key) { 179 | return this._db.then(db => { 180 | const [custom] = idb.transact(db, [customStoreName]) 181 | return idb.del(custom, key) 182 | }) 183 | } 184 | } 185 | -------------------------------------------------------------------------------- /tests/index.js: -------------------------------------------------------------------------------- 1 | 2 | import * as indexeddb from './y-indexeddb.tests.js' 3 | 4 | import { runTests } from 'lib0/testing.js' 5 | import { isBrowser, isNode } from 'lib0/environment.js' 6 | import * as log from 'lib0/logging.js' 7 | 8 | if (isBrowser) { 9 | log.createVConsole(document.body) 10 | } 11 | runTests({ 12 | indexeddb 13 | }).then(success => { 14 | /* istanbul ignore next */ 15 | if (isNode) { 16 | process.exit(success ? 0 : 1) 17 | } 18 | }) 19 | -------------------------------------------------------------------------------- /tests/y-indexeddb.tests.js: -------------------------------------------------------------------------------- 1 | 2 | import * as Y from 'yjs' 3 | import { IndexeddbPersistence, clearDocument, PREFERRED_TRIM_SIZE, fetchUpdates } from '../src/y-indexeddb.js' 4 | import * as t from 'lib0/testing.js' 5 | import * as promise from 'lib0/promise.js' 6 | 7 | /** 8 | * @param {t.TestCase} tc 9 | */ 10 | export const testPerf = async tc => { 11 | await t.measureTimeAsync('time to create a y-indexeddb instance', async () => { 12 | const ydoc = new Y.Doc() 13 | const provider = new IndexeddbPersistence(tc.testName, ydoc) 14 | await provider.whenSynced 15 | provider.destroy() 16 | }) 17 | } 18 | 19 | /** 20 | * @param {t.TestCase} tc 21 | */ 22 | export const testIdbUpdateAndMerge = async tc => { 23 | await clearDocument(tc.testName) 24 | const doc1 = new Y.Doc() 25 | const arr1 = doc1.getArray('t') 26 | const doc2 = new Y.Doc() 27 | const arr2 = doc2.getArray('t') 28 | arr1.insert(0, [0]) 29 | const persistence1 = new IndexeddbPersistence(tc.testName, doc1) 30 | persistence1._storeTimeout = 0 31 | await persistence1.whenSynced 32 | arr1.insert(0, [1]) 33 | const persistence2 = new IndexeddbPersistence(tc.testName, doc2) 34 | persistence2._storeTimeout = 0 35 | let calledObserver = false 36 | // @ts-ignore 37 | arr2.observe((event, tr) => { 38 | t.assert(!tr.local) 39 | t.assert(tr.origin === persistence2) 40 | calledObserver = true 41 | }) 42 | await persistence2.whenSynced 43 | t.assert(calledObserver) 44 | t.assert(arr2.length === 2) 45 | for (let i = 2; i < PREFERRED_TRIM_SIZE + 1; i++) { 46 | arr1.insert(i, [i]) 47 | } 48 | await promise.wait(100) 49 | await fetchUpdates(persistence2) 50 | t.assert(arr2.length === PREFERRED_TRIM_SIZE + 1) 51 | t.assert(persistence1._dbsize === 1) // wait for dbsize === 0. db should be concatenated 52 | } 53 | 54 | /** 55 | * @param {t.TestCase} tc 56 | */ 57 | export const testIdbConcurrentMerge = async tc => { 58 | await clearDocument(tc.testName) 59 | const doc1 = new Y.Doc() 60 | const arr1 = doc1.getArray('t') 61 | const doc2 = new Y.Doc() 62 | const arr2 = doc2.getArray('t') 63 | arr1.insert(0, [0]) 64 | const persistence1 = new IndexeddbPersistence(tc.testName, doc1) 65 | persistence1._storeTimeout = 0 66 | await persistence1.whenSynced 67 | arr1.insert(0, [1]) 68 | const persistence2 = new IndexeddbPersistence(tc.testName, doc2) 69 | persistence2._storeTimeout = 0 70 | await persistence2.whenSynced 71 | t.assert(arr2.length === 2) 72 | arr1.insert(0, ['left']) 73 | for (let i = 0; i < PREFERRED_TRIM_SIZE + 1; i++) { 74 | arr1.insert(i, [i]) 75 | } 76 | arr2.insert(0, ['right']) 77 | for (let i = 0; i < PREFERRED_TRIM_SIZE + 1; i++) { 78 | arr2.insert(i, [i]) 79 | } 80 | await promise.wait(100) 81 | await fetchUpdates(persistence1) 82 | await fetchUpdates(persistence2) 83 | t.assert(persistence1._dbsize < 10) 84 | t.assert(persistence2._dbsize < 10) 85 | t.compareArrays(arr1.toArray(), arr2.toArray()) 86 | } 87 | 88 | /** 89 | * @param {t.TestCase} tc 90 | */ 91 | export const testMetaStorage = async tc => { 92 | await clearDocument(tc.testName) 93 | const ydoc = new Y.Doc() 94 | const persistence = new IndexeddbPersistence(tc.testName, ydoc) 95 | persistence.set('a', 4) 96 | persistence.set(4, 'meta!') 97 | // @ts-ignore 98 | persistence.set('obj', { a: 4 }) 99 | const resA = await persistence.get('a') 100 | t.assert(resA === 4) 101 | const resB = await persistence.get(4) 102 | t.assert(resB === 'meta!') 103 | const resC = await persistence.get('obj') 104 | t.compareObjects(resC, { a: 4 }) 105 | } 106 | 107 | /** 108 | * @param {t.TestCase} tc 109 | */ 110 | export const testEarlyDestroy = async tc => { 111 | let hasbeenSyced = false 112 | const ydoc = new Y.Doc() 113 | const indexDBProvider = new IndexeddbPersistence(tc.testName, ydoc) 114 | indexDBProvider.on('synced', () => { 115 | hasbeenSyced = true 116 | }) 117 | indexDBProvider.destroy() 118 | await new Promise((resolve) => setTimeout(resolve, 500)) 119 | t.assert(!hasbeenSyced) 120 | } 121 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2018", 4 | "lib": ["es2018", "dom"], 5 | "allowJs": true, 6 | "checkJs": true, 7 | "declaration": true, 8 | "declarationMap": true, 9 | "emitDeclarationOnly": true, 10 | "strict": true, 11 | "noImplicitAny": true, 12 | "moduleResolution": "node", 13 | "outDir": "./dist" 14 | }, 15 | "include": ["./src/**/*", "./tests/**/*"], 16 | "exclude": ["../lib0/**/*", "node_modules/**/*", "dist", "dist/**/*.js"] 17 | } 18 | --------------------------------------------------------------------------------